4-10 Linux 中的文件同步传输 --- rsync
2021-07-22 本文已影响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 增量备份的特性来看,以后的备份会有明显优势。 (仅供参考)