美文网首页
Rsync的远程同步

Rsync的远程同步

作者: 龜山島 | 来源:发表于2017-11-24 10:45 被阅读0次

    Rsync的一些优点和功能

    它有效地将文件复制到远程系统或从远程系统同步。
    支持复制链接,设备,所有者,组和权限。
    这是比快SCP( 安全复制 ),因为rsync使用远程更新协议,允许转让只是两套文件之间的差异。 第一次,它从源到目标复制文件或目录的整个内容,但从下一次,它只将已更改的块和字节复制到目标。
    rsync的消耗更少的带宽 ,因为它使用压缩和解压缩方法在发送和接收数据两端。

    rsync的常见选项

    -v:详细
    -r:将数据递归,但不保存时间戳和权限,同时传输数据
    -a:归档模式下,归档模式允许递归地拷贝文件,同时也保留了符号链接,文件权限,用户组所有权和时间戳
    -z:压缩文件中的数据
    -h:在人类可读的格式人类可读,输出数字 
    -e:使用SSH加密协议传输,SSH非标准端口[如1234]示例:-e 'ssh -p 1234'。
    -P:(大写的P)显示传输速度与进度,--progress。
    

    Linux机器上安装rsync

    # apt-get install rsync   ##适用于debian,ubuntu系统
    # yum install -y rsync    ##适用于centos系统
    # pacman -Sy rsync      ##适用于archlinux系统
    
    本地计算机上复制/同步文件

    同步本地计算机上的单个文件从一个位置到另一个位置。
    backup.tar.gz复制或同步到/tmp/backups/文件夹。

    # rsync -zvh backup.tar.gz /tmp/backups/
    created directory /tmp/backups
    backup.tar.gz
    sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
    total size is 16.18M  speedup is 1.10
    

    同步过程中,如果目标不存在,rsync将自动为目标创建一个目录。

    本地计算机上复制/同步目录

    将同一目录中的所有文件传输或同步到同一计算机中的不同目录。
    在这里,在这个例子中/root/rpmpkgs包含一些rpm软件包的文件和你想要的目录里面被复制/tmp/backups/文件夹。

    # rsync -avzh /root/rpmpkgs /tmp/backups/
    sending incremental file list
    rpmpkgs/
    rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
    rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
    rpmpkgs/nagios-3.5.0.tar.gz
    rpmpkgs/nagios-plugins-1.4.16.tar.gz
    sent 4.99M bytes  received 92 bytes  3.33M bytes/sec
    total size is 4.99M  speedup is 1.00
    
    将目录从本地服务器复制到远程服务器

    将本地计算机的目录同步到远程机服务器,例如:将本地计算机rpmpkgs文件夹里面的文件发送到远程服务器,您可以使用以下命令。

    $ rsync -avz rpmpkgs/ root@192.168.0.101:/home/
    root@192.168.0.101's password:
    sending incremental file list
    ./
    httpd-2.2.3-82.el5.centos.i386.rpm
    mod_ssl-2.2.3-82.el5.centos.i386.rpm
    nagios-3.5.0.tar.gz
    nagios-plugins-1.4.16.tar.gz
    sent 4993369 bytes  received 91 bytes  399476.80 bytes/sec
    total size is 4991313  speedup is 1.00
    
    将远程目录同步到本地目录。

    远程服务器目录/home/tarunika/rpmpkgs复制到本地计算机的/tmp/myrpms目录。

    # rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpms
    root@192.168.0.100's password:
    receiving incremental file list
    created directory /tmp/myrpms
    rpmpkgs/
    rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
    rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
    rpmpkgs/nagios-3.5.0.tar.gz
    rpmpkgs/nagios-plugins-1.4.16.tar.gz
    sent 91 bytes  received 4.99M bytes  322.16K bytes/sec
    total size is 4.99M  speedup is 1.00
    

    Rsync通过SSH加密传输

    通过SSH将文件从远程服务器复制到本地服务器

    Rsync使用SSH协议,需要加上-e参数 。

    # rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/
    root@192.168.0.100's password:
    receiving incremental file list
    install.log
    sent 30 bytes  received 8.12K bytes  1.48K bytes/sec
    total size is 30.74K  speedup is 3.77
    
    使用SSH将文件从本地服务器复制到远程服务器
    # rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/
    root@192.168.0.100's password:
    sending incremental file list
    backup.tar
    sent 14.71M bytes  received 31 bytes  1.28M bytes/sec
    total size is 16.18M  speedup is 1.10
    

    Rsync与非标准SSH端口

    从远程服务器同步到本地,非SSH标准端口示例,<port-number>为你的端口号。

    # rsync -arvzP -e 'ssh -p <port-number>' user@remote-server:/path/to/remote/folder /path/to/local/folder
    

    使用--include和--exclude选项

    这两个选项可以让我们包括通过与这些选项可以帮助我们来指定要在同步纳入和排除文件和文件夹,你不想被转移这些文件或目录指定参数排除文件。
    在这个例子中,rsync命令将包括那些只有那些带“R”开始的文件和目录,并排除所有其它文件和目录。

    # rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpm
    root@192.168.0.101's password:
    receiving incremental file list
    created directory /root/rpm
    ./
    Requirename
    Requireversion
    sent 67 bytes  received 167289 bytes  7438.04 bytes/sec
    total size is 434176  speedup is 2.59
    

    使用--delete选项

    如果文件或目录在源处不存在,但在目标位置已存在,那么在同步时可能需要删除目标处的现有文件/目录。
    我们可以用'--delete'选项删除不存在源目录中的文件。
    源和目标已同步。
    现在,在创建新的目标文件test.txt。

    # touch test.txt
    # rsync -avz --delete root@192.168.0.100:/var/lib/rpm/ .
    Password:
    receiving file list ... done
    deleting test.txt
    ./
    sent 26 bytes  received 390 bytes  48.94 bytes/sec
    total size is 45305958  speedup is 108908.55
    

    目标有叫test.txt的 ,当用'--delete'选项的源同步新的文件,它去掉了文件test.txt。

    设置要传输的文件的最大大小

    指定要传输的最大文件大小或同步,可以用“-MAX大小 ”选项做到这一点。
    在这个例子中,最大文件的大小是200K,因此该命令将只传送那些等于或大于200k的较小的文件。

    # rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.100:/root/tmprpm
    root@192.168.0.100's password:
    sending incremental file list
    created directory /root/tmprpm
    ./
    Conflictname
    Group
    Installtid
    Name
    Provideversion
    Pubkeys
    Requireversion
    Sha1header
    Sigmd5
    Triggername
    __db.001
    sent 189.79K bytes  received 224 bytes  13.10K bytes/sec
    total size is 38.08M  speedup is 200.43
    
    成功传输后自动删除源文件

    现在,假设您有一个主Web服务器和数据备份服务器,您创建了每日备份并与备份服务器同步,现在您不想在Web服务器中保留备份的本地副本。
    所以,你会等待传输完成,然后手动删除这些本地备份文件?
    当然不。
    这种自动删除可以用'--remove-source “选项来完成。

    # rsync --remove-source-files -zvh backup.tar /tmp/backups/
    backup.tar
    sent 14.71M bytes  received 31 bytes  4.20M bytes/sec
    total size is 16.18M  speedup is 1.10
    # ls backup.tar
    ls: backup.tar: No such file or directory
    
    使用rsync进行演习

    如果你是一个新手,并使用rsync,不知道你的命令去做什么。
    Rsync可能真的搞砸了你的目标文件夹中的东西,然后做一个撤消可以是一个乏味的工作。
    此选项将不会做任何改变,只做命令的预演和显示命令的输出,如果输出显示完全相同你想做的事,那么你可以从你的命令删除“--dry-run ”选项,在终端上运行。

    # rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/
    backup.tar
    sent 35 bytes  received 15 bytes  100.00 bytes/sec
    total size is 16.18M  speedup is 323584.00 (DRY RUN)
    
    设置带宽限制和传输文件

    您可以同时从一台机器与'-bwlimit'选项的帮助下将数据传输到另一台机器上设置的带宽限制。

    此选项可以帮助我们限制I / O带宽。

    # rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.100:/root/tmprpm/
    root@192.168.0.100's password:
    sending incremental file list
    sent 324 bytes  received 12 bytes  61.09 bytes/sec
    total size is 38.08M  speedup is 113347.05
    

    此外,默认情况rsync的同步不仅改变块和字节,如果你想明确地要同步整个文件,然后使用-W选项。

    # rsync -zvhW backup.tar /tmp/backups/backup.tar
    backup.tar
    sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
    total size is 16.18M  speedup is 1.10
    

    Rsync更多信息,可以在终端中使用man rsync查看。

    相关文章

      网友评论

          本文标题:Rsync的远程同步

          本文链接:https://www.haomeiwen.com/subject/hbdxbxtx.html