美文网首页
4-10 Linux 中的文件同步传输 --- rsync

4-10 Linux 中的文件同步传输 --- rsync

作者: 捌千里路雲和月 | 来源:发表于2021-07-22 19:47 被阅读0次

    rsync 命令用于文件同步传输,它可以实现本地计算机与远程计算机之间,或者两个本地目录之间同步传输文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代 cp 命令。当复制大文件的时候,cp 命令不会显示进度和速度不太方便,可以用 rsync 命令来替代。rsync 的最大特点就是它可以增量备份,也就是默认只传输有变动的文件。

    一、rsync 安装(Red Hat系):yum -y install rsync。

    
    [root@localhost ~]# yum -y install rsync  ##安装rsync
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package rsync.x86_64 0:3.0.9-18.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =======================================================================================================
     Package             Arch                 Version                       Repository                Size
    =======================================================================================================
    Installing:
     rsync               x86_64               3.0.9-18.el7                  base-local               360 k
    
    Transaction Summary
    =======================================================================================================
    Install  1 Package
    
    Total download size: 360 k
    Installed size: 732 k
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    Warning: RPMDB altered outside of yum.
      Installing : rsync-3.0.9-18.el7.x86_64                                                           1/1 
      Verifying  : rsync-3.0.9-18.el7.x86_64                                                           1/1 
    
    Installed:
      rsync.x86_64 0:3.0.9-18.el7                                                                          
    
    Complete!
    [root@localhost ~]# 
    
    

    二、传输大文件的时候,cp命令不会显示进度和速度不太方便,可以用rsync命令来替代。

    • 测试 cp 和 rsync 传输文件的对比。
    • 挂载 CentOS7 ISO 到 /mnt/cdrom/
    To escape to local shell, press 'Ctrl+Alt+]'.
    
    Last login: Wed Jul 21 21:46:08 2021 from 192.168.0.7
    [root@localhost ~]# 
    [root@localhost ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        900M     0  900M   0% /dev
    tmpfs           910M     0  910M   0% /dev/shm
    tmpfs           910M  9.5M  901M   2% /run
    tmpfs           910M     0  910M   0% /sys/fs/cgroup
    /dev/sda3        37G  1.9G   36G   6% /
    /dev/sda1      1014M  170M  845M  17% /boot
    /dev/sr0        4.3G  4.3G     0 100% /media/local
    tmpfs           182M     0  182M   0% /run/user/0
    [root@localhost ~]# 
    ## 挂载 /dev/sr0 的 CentOS7 ISO 到 /mnt/cdrom/
    [root@localhost ~]# mount /dev/sr0 /mnt/cdrom/    
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@localhost ~]# 
    [root@localhost ~]# 
    
    
    • cp 把 /mnt/cdrom/ 下的CentOS7 ISO所有文件复制到 /opt/cdrom/ 时,文件较大光标会停止等待,直到复制完成才恢复用户的标志位。
    • rsync -av --progress /mnt/cdrom/* /opt/cdrom/, 把 /mnt/cdrom/ 下的所有文件同步传输到 /opt/cdrom/ 时,可以看到正在传输什么文件、文件大小、传输速度等参数。
      -a 参数:归档模式,表示递归传输并保持文件属性。(相似于cp -p 选项 文件属性一同复制。)
      -v参数:显示输出细节。-v显示简要信息,-vvvvv显示最详细的信息。
      --progress:显示进度信息。
    • 传输完成还有数据资料,发送了多少字节,接收多少字节,每秒传输多少字节,总大小和加速度。
    • 如果不加 -a 参数,rsync只会传输文件不会传输目录。
    ## rsync 不加 -a 参数,把 /mnt/cdrom/* 目录下的所有文件同步传输到 /opt/cdrom/
    [root@localhost cdrom]# rsync -v --progress /mnt/cdrom/* /opt/cdrom/
    ## 跳过所有目录
    skipping directory EFI
    skipping directory images
    skipping directory isolinux
    skipping directory LiveOS
    skipping directory Packages
    skipping directory repodata
    CentOS_BuildTag
              14 100%    0.00kB/s    0:00:00 (xfer#1, to-check=5/6)
    EULA
             227 100%  110.84kB/s    0:00:00 (xfer#2, to-check=4/6)
    GPL
           18009 100%    3.43MB/s    0:00:00 (xfer#3, to-check=3/6)
    RPM-GPG-KEY-CentOS-7
            1690 100%  330.08kB/s    0:00:00 (xfer#4, to-check=2/6)
    RPM-GPG-KEY-CentOS-Testing-7
            1690 100%  330.08kB/s    0:00:00 (xfer#5, to-check=1/6)
    TRANS.TBL
            2883 100%  563.09kB/s    0:00:00 (xfer#6, to-check=0/6)
    
    sent 24894 bytes  received 126 bytes  50040.00 bytes/sec
    total size is 24513  speedup is 0.98
    [root@localhost cdrom]#
    
    ## 目标目录对比源目录,缺少了所有的目录。
    [root@localhost cdrom]# ll    ##目标目录
    total 40
    -rw-r--r--. 1 root root    14 Jul  1 11:09 CentOS_BuildTag
    -rw-r--r--. 1 root root   227 Jul  1 11:09 EULA
    -rw-r--r--. 1 root root 18009 Jul  1 11:09 GPL
    -rw-r--r--. 1 root root  1690 Jul  1 11:09 RPM-GPG-KEY-CentOS-7
    -rw-r--r--. 1 root root  1690 Jul  1 11:09 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root  2883 Jul  1 11:09 TRANS.TBL
    [root@localhost cdrom]# ll /mnt/cdrom/    ##源目录
    total 664
    -rw-rw-r--. 3 root root     14 Sep  5  2017 CentOS_BuildTag
    drwxr-xr-x. 3 root root   2048 Sep  5  2017 EFI      ##目标目录缺少的文件夹
    -rw-rw-r--. 3 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 3 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 3 root root   2048 Sep  5  2017 images       ##目标目录缺少的目录
    drwxr-xr-x. 2 root root   2048 Sep  5  2017 isolinux       ##目标目录缺少的目录
    drwxr-xr-x. 2 root root   2048 Sep  5  2017 LiveOS         ##目标目录缺少的目录
    drwxrwxr-x. 2 root root 641024 Sep  5  2017 Packages       ##目标目录缺少的目录
    drwxr-xr-x. 2 root root   4096 Sep  5  2017 repodata       ##目标目录缺少的目录
    -rw-rw-r--. 3 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 3 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    [root@localhost cdrom]# 
    
    

    • 覆盖已存在的文件,cp 和 rsync 对比。
    [root@localhost ~]# ll /mnt/cdrom/    ##查看/mnt/cdrom/目录下的源文件信息。
    total 664
    -rw-rw-r--. 3 root root     14 Sep  5  2017 CentOS_BuildTag
    drwxr-xr-x. 3 root root   2048 Sep  5  2017 EFI
    -rw-rw-r--. 3 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 3 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 3 root root   2048 Sep  5  2017 images
    drwxr-xr-x. 2 root root   2048 Sep  5  2017 isolinux
    drwxr-xr-x. 2 root root   2048 Sep  5  2017 LiveOS
    drwxrwxr-x. 2 root root 641024 Sep  5  2017 Packages
    drwxr-xr-x. 2 root root   4096 Sep  5  2017 repodata
    -rw-rw-r--. 3 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 3 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    [root@localhost ~]# 
    
    ## 查看/opt/cdrom/ 目标目录下的文件信息。
    ## 可以看出/mnt/cdrom/ 和  /opt/cdrom/ 的文件信息都是一致的。
    
    [root@localhost ~]# ll /opt/cdrom/     
    total 312
    -rw-rw-r--. 1 root root     14 Sep  5  2017 CentOS_BuildTag
    drwxr-xr-x. 3 root root     35 Sep  5  2017 EFI
    -rw-rw-r--. 1 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 1 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 3 root root     57 Sep  5  2017 images
    drwxr-xr-x. 2 root root    198 Sep  5  2017 isolinux
    drwxr-xr-x. 2 root root     43 Sep  5  2017 LiveOS
    drwxrwxr-x. 2 root root 221184 Sep  5  2017 Packages
    drwxr-xr-x. 2 root root   4096 Sep  5  2017 repodata
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    [root@localhost ~]# 
    
    ## 通过 cp 把/mnt/cdrom/下的所有文件再覆盖一次到/opt/cdrom/
    ## -r 参数:递归处理,将指定目录下的文件与子目录一并处理。
    ## -f 参数:强行复制文件或目录,不论目标文件或目录是否已存在。
    
    [root@localhost ~]# cp -rf /mnt/cdrom/* /opt/cdrom/
    cp: overwrite ‘/opt/cdrom/CentOS_BuildTag’? y          
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/BOOTIA32.EFI’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/BOOTX64.EFI’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/fonts/TRANS.TBL’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/fonts/unicode.pf2’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/grub.cfg’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/grubia32.efi’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/grubx64.efi’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/mmia32.efi’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/mmx64.efi’? y
    cp: overwrite ‘/opt/cdrom/EFI/BOOT/TRANS.TBL’? y
    cp: overwrite ‘/opt/cdrom/EFI/TRANS.TBL’?            
    
    ## 发现加上 -f 参数要求强行复制文件或目录,覆盖过程中仍会咨询 y/n 是否进行覆盖。
    ## 这是因为 alias 设置了 cp 命令别名是 cp -i 。当执行 cp 的时候,其实执行 cp -i。
    
    [root@localhost ~]# alias    ##查看 alias 设置
    alias cp='cp -i'    ## -i 参数是覆盖已有文件之前先询问用户。
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    [root@localhost ~]# 
    
    ## 解决方法有两种:1、修改 alias。(需重新登录)2、屏蔽当前命令使用别名。
    ## 1、修改 alias。~家目录下 ls -a。
    ## - a:显示所有文件,包括隐藏文件 (文件前以 “.” 开头的文件就是隐藏文件)。
    [root@localhost ~]# ls -a
    .   .bash_history  .bash_profile  .cshrc    .pki      .tcshrc  .viminfo
    ..  .bash_logout   .bashrc        .lesshst  rpmbuild  test
    [root@localhost ~]# 
    [root@localhost ~]# vim .bashrc    ## vi 或 vim 编辑  .bashrc 文件。
    
    # .bashrc
    
    # User specific aliases and functions
    
    alias rm='rm -i'
    #alias cp='cp -i'    ## 按 i 进入编辑模式,在alias cp=’cp -i’前加上”#”注释掉这行
    alias mv='mv -i'
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi
    ~                                                                                                      
    ~                                                                                                      
    ~                                                                                                      
    :wq    ## 按 Esc键退出编辑模式,输入:wq! 保存退出。然后重新登陆就可以了。
    
    ## --------------------------------- 分割线 ---------------------------------  
    
    ## 重新登陆后:cat.bashrc 查看 .bashrc 文件
    [root@localhost ~]# cat .bashrc 
    # .bashrc
    
    # User specific aliases and functions
    
    alias rm='rm -i'
    # alias cp='cp -i'    ## alias cp='cp -i'已被#号注释。
    alias mv='mv -i'
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
        . /etc/bashrc
    fi
    
    ## df -h查看设备信息。重启登录后需要重新挂载一下挂载 /dev/sr0 到 /mnt/cdrom/ 
    [root@localhost ~]# df -h   
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        900M     0  900M   0% /dev
    tmpfs           910M     0  910M   0% /dev/shm
    tmpfs           910M  9.5M  901M   2% /run
    tmpfs           910M     0  910M   0% /sys/fs/cgroup
    /dev/sda3        37G  6.0G   31G  17% /
    /dev/sr0        4.3G  4.3G     0 100% /media/local
    /dev/sda1      1014M  170M  845M  17% /boot
    tmpfs           182M     0  182M   0% /run/user/0
    [root@localhost ~]# mount /dev/sr0 /mnt/cdrom/    ## 挂载/dev/sr0 到 /mnt/cdrom/ 
    mount: /dev/sr0 is write-protected, mounting read-only
    
    ## 再次执行 cp 复制 /mnt/cdrom/* 目录下的所有文件到 /opt/cdrom/目录下
    [root@localhost ~]# cp -rp /mnt/cdrom/* /opt/cdrom/   
    
            ## 此处开始执行 cp 复制过程。(bashrc 文件注释了cp='cp -i',
            ## 覆盖已有文件已不会再进行 y/n 的询问。待复制完成恢复 [root@localhost ~]# ) 
    
    ## --------------------------------- 分割线 ---------------------------------  
    ## 2、屏蔽当前命令使用别名。在 cp 命令前加上 \ 斜杠屏蔽别名。
    ## 首先把注释了的 cp='cp -i',恢复原样。
    [root@localhost ~]# vim .bashrc     ## vi 或 vim 编辑  .bashrc 文件。
    
    # .bashrc
    
    # User specific aliases and functions
    
    alias rm='rm -i'
    alias cp='cp -i'      ## 按 i 进入编辑模式,删除”#”号,恢复 alias cp='cp -i'
    alias mv='mv -i'
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi
    ~                                                                                                                                                                                                     
    ~                                                                                                      
    ~                                                                                                      
    :wq!       ## 按 Esc键退出编辑模式,输入:wq! 保存退出。然后重新登陆就可以了。
    
    ## 重新登陆后:cat.bashrc 文件
    [root@localhost ~]# cat .bashrc      ## 查看 .bashrc 文件
    # .bashrc
    
    # User specific aliases and functions
    
    alias rm='rm -i'
    alias cp='cp -i'      ## alias cp='cp -i' 已去除 #号,恢复原样
    alias mv='mv -i'
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
        . /etc/bashrc
    fi
    
    ## df -h查看设备信息。重启登录后需要重新挂载一下挂载 /dev/sr0 到 /mnt/cdrom/ 
    [root@localhost ~]# df -h   
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        900M     0  900M   0% /dev
    tmpfs           910M     0  910M   0% /dev/shm
    tmpfs           910M  9.5M  901M   2% /run
    tmpfs           910M     0  910M   0% /sys/fs/cgroup
    /dev/sda3        37G   11G   27G  28% /
    /dev/sda1      1014M  170M  845M  17% /boot
    /dev/sr0        4.3G  4.3G     0 100% /media/local
    tmpfs           182M     0  182M   0% /run/user/0
    [root@localhost ~]# 
    [root@localhost ~]# mount /dev/sr0 /mnt/cdrom/      ## 挂载/dev/sr0 到 /mnt/cdrom/ 
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@localhost ~]# 
    
    ## 再执行一次 /mnt/cdrom/* 目录下的所有文件到 /opt/cdrom/目录下
    ## 这次是在 cp命令前加 \斜杠屏蔽了别名。此时执行 cp -rp 已经可以进行覆盖复制,不会再询问 y/n。
    ## 待复制完成恢复 [root@localhost ~]# 
    [root@localhost cdrom]# \cp -rp /mnt/cdrom/* /opt/cdrom/
    
    ## --------------------------------- 分割线 ---------------------------------  
    ## 3、rsync 同步传输已存在的文件
    ## 对比源目录和目标目录的内容是一致的
    [root@localhost ~]# ll /mnt/cdrom/
    total 664
    -rw-rw-r--. 3 root root     14 Sep  5  2017 CentOS_BuildTag
    drwxr-xr-x. 3 root root   2048 Sep  5  2017 EFI
    -rw-rw-r--. 3 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 3 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 3 root root   2048 Sep  5  2017 images
    drwxr-xr-x. 2 root root   2048 Sep  5  2017 isolinux
    drwxr-xr-x. 2 root root   2048 Sep  5  2017 LiveOS
    drwxrwxr-x. 2 root root 641024 Sep  5  2017 Packages
    drwxr-xr-x. 2 root root   4096 Sep  5  2017 repodata
    -rw-rw-r--. 3 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 3 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    [root@localhost ~]# ll /opt/cdrom/
    total 316
    -rw-rw-r--. 1 root root     14 Sep  5  2017 CentOS_BuildTag
    drwxr-xr-x. 3 root root     35 Sep  5  2017 EFI
    -rw-rw-r--. 1 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 1 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 3 root root     57 Sep  5  2017 images
    drwxr-xr-x. 2 root root    198 Sep  5  2017 isolinux
    drwxr-xr-x. 2 root root     43 Sep  5  2017 LiveOS
    drwxrwxr-x. 2 root root 221184 Sep  5  2017 Packages
    drwxr-xr-x. 2 root root   4096 Sep  5  2017 repodata
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    
    ## rsync 同步传输文件时会快速检查源文件和目标文件的大小、修改时间是否一致。
    ## 如果不一致则需要传输,仅传输有变动的部分。
    ## 这也是 rsync 的最大特点,会检查发送方和接收方已有的文件。
    
    [root@localhost ~]# rsync -av --progress /mnt/cdrom/* /opt/cdrom/
    sending incremental file list      ## 发送增量文件列表没有文件
                                       ## 也就是目标目录和源目录的文件一致
                                       ## 所以不需要重新覆盖。
    
    sent 162803 bytes  received 21 bytes  108549.33 bytes/sec
    total size is 4515096419  speedup is 27729.92
    
    ## 进入目标目录删除几个文件,再 rsync 覆盖文件看看效果。
    [root@localhost ~]# 
    [root@localhost cdrom]# cd
    [root@localhost ~]# cd /opt/cdrom/      ## 进入目标目录
    [root@localhost cdrom]# ll
    total 312
    -rw-rw-r--. 1 root root     14 Sep  5  2017 CentOS_BuildTag
    drwxr-xr-x. 3 root root     35 Sep  5  2017 EFI
    -rw-rw-r--. 1 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 1 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 3 root root     57 Sep  5  2017 images
    drwxr-xr-x. 2 root root    198 Sep  5  2017 isolinux
    drwxr-xr-x. 2 root root     43 Sep  5  2017 LiveOS
    drwxrwxr-x. 2 root root 221184 Sep  5  2017 Packages
    drwxr-xr-x. 2 root root   4096 Sep  5  2017 repodata
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    [root@localhost cdrom]#
    
    ## 删除目标目录下的 EFI、images 和 repodata 目录
    [root@localhost cdrom]# rm -rf EFI/;rm -rf images/; rm -rf repodata/
    [root@localhost cdrom]# ll      ## 查看目录文件。 EFI、images 和 repodata 删除成功。
    total 308
    -rw-rw-r--. 1 root root     14 Sep  5  2017 CentOS_BuildTag
    -rw-rw-r--. 1 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 1 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 2 root root    198 Sep  5  2017 isolinux
    drwxr-xr-x. 2 root root     43 Sep  5  2017 LiveOS
    drwxrwxr-x. 2 root root 221184 Sep  5  2017 Packages
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    [root@localhost cdrom]# 
    
    ## rsync 重新在源目录同步所有文件到目标目录。
    [root@localhost cdrom]# rsync -av --progress /mnt/cdrom/* /opt/cdrom/
    sending incremental file list
    EFI/
    EFI/TRANS.TBL
             216 100%    0.00kB/s    0:00:00 (xfer#1, to-check=3909/3922)
    EFI/BOOT/
    EFI/BOOT/BOOTIA32.EFI
         1027395 100%   17.19MB/s    0:00:00 (xfer#2, to-check=3907/3922)
    EFI/BOOT/BOOTX64.EFI
         1296176 100%   15.45MB/s    0:00:00 (xfer#3, to-check=3906/3922)
    EFI/BOOT/TRANS.TBL
            1774 100%   19.69kB/s    0:00:00 (xfer#4, to-check=3905/3922)
    EFI/BOOT/grub.cfg
            1320 100%   14.48kB/s    0:00:00 (xfer#5, to-check=3904/3922)
    EFI/BOOT/grubia32.efi
          732544 100%    6.65MB/s    0:00:00 (xfer#6, to-check=3903/3922)
    EFI/BOOT/grubx64.efi
         1052032 100%    8.03MB/s    0:00:00 (xfer#7, to-check=3902/3922)
    EFI/BOOT/mmia32.efi
         1000448 100%    6.67MB/s    0:00:00 (xfer#8, to-check=3901/3922)
    EFI/BOOT/mmx64.efi
         1262816 100%    7.34MB/s    0:00:00 (xfer#9, to-check=3900/3922)
    EFI/BOOT/fonts/
    EFI/BOOT/fonts/TRANS.TBL
             223 100%    1.32kB/s    0:00:00 (xfer#10, to-check=3898/3922)
    EFI/BOOT/fonts/unicode.pf2
         2560080 100%   11.97MB/s    0:00:00 (xfer#11, to-check=3897/3922)
    images/
    images/TRANS.TBL
             442 100%    1.95kB/s    0:00:00 (xfer#12, to-check=26/3949)
    images/efiboot.img
         9203712 100%   24.11MB/s    0:00:00 (xfer#13, to-check=25/3949)
    images/pxeboot/
    images/pxeboot/TRANS.TBL
             441 100%    1.12kB/s    0:00:00 (xfer#14, to-check=23/3949)
    images/pxeboot/initrd.img
        48434768 100%   35.48MB/s    0:00:01 (xfer#15, to-check=22/3949)
    images/pxeboot/vmlinuz
         5877760 100%   15.53MB/s    0:00:00 (xfer#16, to-check=21/3949)
    repodata/
    repodata/115749f609bb070c1a0524edbe39312defa896eab1b8c8ff9844f078d1efdd95-primary.xml.gz
         1527836 100%    3.76MB/s    0:00:00 (xfer#17, to-check=9/3949)
    repodata/281832be789b989fe8c543f9de47992c0b1de080a4c7f7971a587cfa64d58f86-other.sqlite.bz2
         1307740 100%    3.03MB/s    0:00:00 (xfer#18, to-check=8/3949)
    repodata/283c19e8d3c6ff8541ddc19ea36d974e6afdc2770257a04622fc0aa5280b4322-filelists.xml.gz
         3116145 100%    6.55MB/s    0:00:00 (xfer#19, to-check=7/3949)
    repodata/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml
          751786 100%    1.53MB/s    0:00:00 (xfer#20, to-check=6/3949)
    repodata/6addbbcab39d561cf037917505807e1547d0d06937b539a01ae1d55a62d2a552-other.xml.gz
          962895 100%    1.89MB/s    0:00:00 (xfer#21, to-check=5/3949)
    repodata/9346184be1deb727caf4b1ecf4a7949155da5da74af9b92c172687b290a773df-c7-x86_64-comps.xml.gz
          159667 100%  318.21kB/s    0:00:00 (xfer#22, to-check=4/3949)
    repodata/TRANS.TBL
            2575 100%    5.01kB/s    0:00:00 (xfer#23, to-check=3/3949)
    repodata/ce678501a07f940dbe16d3e4fcb495050fd48ec429c5e8ea955e681594f90934-filelists.sqlite.bz2
         3198369 100%    5.53MB/s    0:00:00 (xfer#24, to-check=2/3949)
    repodata/f64ccdaf79da59bd21f7cf17f252ff62f2e56ea55bce5b4de16cf8ef1d13a7c8-primary.sqlite.bz2
         3206161 100%    5.10MB/s    0:00:00 (xfer#25, to-check=1/3949)
    repodata/repomd.xml
            3732 100%    6.06kB/s    0:00:00 (xfer#26, to-check=0/3949)
    
    sent 86863538 bytes  received 535 bytes  57909382.00 bytes/sec
    total size is 4515096419  speedup is 51.98
    [root@localhost cdrom]# 
    [root@localhost cdrom]# ll      ## 查看目标目录已有 EFI、images 和 repodata
    total 312
    -rw-rw-r--. 1 root root     14 Sep  5  2017 CentOS_BuildTag
    drwxr-xr-x. 3 root root     35 Sep  5  2017 EFI
    -rw-rw-r--. 1 root root    227 Aug 30  2017 EULA
    -rw-rw-r--. 1 root root  18009 Dec 10  2015 GPL
    drwxr-xr-x. 3 root root     57 Sep  5  2017 images
    drwxr-xr-x. 2 root root    198 Sep  5  2017 isolinux
    drwxr-xr-x. 2 root root     43 Sep  5  2017 LiveOS
    drwxrwxr-x. 2 root root 221184 Sep  5  2017 Packages
    drwxr-xr-x. 2 root root   4096 Sep  5  2017 repodata
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Sep  6  2017 TRANS.TBL
    [root@localhost cdrom]# 
    
    ## 通过 sending incremental file list 发送增量文件列表可以看出
    ## rsync 通过源目录和目标目录的文件对比需要传输的目录是 EFI、images 和 repodata,
    ## 所以重新传输了这三个文件,其他文件不用传输。 
    
    • 从上述测试不难看出 cp 对已有的文件会重新执行一次覆盖,rsync 的特点是检查源文件和目标文件的大小、修改时间是否一致。如果不一致则需要传输,仅传输有变动的部分。这也是 rsync 的最大特点,会检查发送方和接收方已有的文件。

    • 耗时。同样的环境下 4.3G 的 CentOS7 ISO 镜像文件传输时间 cp 和 rsync 3回合对比。感觉 rsync 会慢点。从 rsync 增量备份的特性来看,以后的备份会有明显优势。 (仅供参考)


    相关文章

      网友评论

          本文标题:4-10 Linux 中的文件同步传输 --- rsync

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