周五: 8.6 :测试以下命令:
1. 在本地两个目录间进行数据同步
以下命令用于在两个目录间完成文件拷贝:
$ rsync -zvr /nand/app/test/ /nand/app/share/
结论:可行,ls -l 对比,二者文件信息和属性一致
2. 本地与远程主机间完成数据同步:15.1-->10.12======15.1主机推送同步/获取同步
我们可以用rsync将本地的文件,同步到远程机器:
$ rsync -avz /nand/app/ root@169.254.10.12:nand // $ rsync -avz root@169.254.10.12:nand /nand/app/
//(Password:此处输入你的密码) #或者指定验证密码文件--password-file=/etc/rsync.password,可免除手动输入密码步骤
结论:可行,但过程出了个小问题,客户端报错:auth failed on module nand,在10.12的主机上将/etc/rsync.secrets权限设置为600就可以了
3. 使用ssh通道进行数据同步(属于加密传输)
在与远端进行数据同步时,我们一般采用ssh通道,使用 -e ssh 选项可以完成该功能:
$ rsync -avz -e ssh /nand/app/test/ root@169.254.10.12:nand
结论:不可行,报错:未安装ssh。
4. 不覆盖目的地对文件已作的修改
经常出现这样的场景,我们对源文件和目的地文件均作了修改,同时想将源文件作的修改同步到目的地,但又保留对目的地文件的更改,此时可以使用 -u 选项:
$ rsync -avzu /nand/app/ root@169.254.10.12:nand
$ rsync -avzu root@169.254.10.12:nand /nand/app/test/
测试结果:15.1主机推送同步的状态下:文件的增,删,改,测试在不带参数-u和带参数-u的情况下结果是一样的:多出来的文件保留,缺少的文件同步,修改的文件替换
15.1主机获取同步的状态下:文件的增,删,改,测试在不带参数-u和带参数-u的情况下结果是一样的:多出来的文件保留,缺少的文件同步,修改的文件替换
结论:默认带参数-u,保险起见带上-u参数--------效果:多出来的文件保留,缺少的文件同步,修改的文件替换
5. 删除不存在于源目录的目的地文件
对于不存在于源目录,但存在于目的地的文件,有时我们想在做文件同步时删除它们,–delete 选项可以满足要求:
$ rsync -avz --delete /nand/app/test/ root@169.254.10.12:nand
$ rsync -avz --delete root@169.254.10.12:nand /nand/app/test/
测试结果:15.1主机推送同步的状态下:15.1主机/nand/app/test/ 下有1.c,2.c,3.c文件,10.12主机/nand/app/test/ 下有4.b,5.b----》
处理:推送同步后10.12主机/nand/app/test/ 下只有1.c,2.c,3.c文件,4.b,5.b文件已被删除,属于不保留模式同步,也叫完全同步
15.1主机获取同步的状态下:15.1主机/nand/app/test/ 下有1.c,2.c,3.c文件,10.12主机/nand/app/test/ 下有4.b,5.b----》
处理:获取同步后15.1主机/nand/app/test/ 下只有4.b,5.b文件,1.c,2.c,3.c文件已被删除,也属于不保留模式同步,也叫完全同步
结论:–-delete 选项属于不保留模式同步或完全同步,即源路径文件和目标路径文件完全一致同步
6. 在同步时不在目的地创建新文件
有时我们只想对目的地已经有的文件进行同步,而不理会源目录新增的文件,此时可以使用 –existing 选项:
$ rsync -avz --existing /nand/app/test/ root@169.254.10.12:nand
$ rsync -avz --existing root@169.254.10.12:nand /nand/app/test/
测试结果:15.1主机推送同步的状态下:15.1主机/nand/app/test/ 下有1.c 2.c 3.c文件,10.12主机/nand/app/test/ 下有1.c 4.b 5.b文件----》
处理一:推送同步后,10.12主机/nand/app/test/ 下的1.c文件与15.1主机/nand/app/test/的1.c文件信息一致而4.b,5.b文件保留无变化;
处理二:修改(增删改)15.1主机的1.c文件再次推送同步,依旧与15.1主机的1.c文件信息一致,而10.12主机下的4.b,5.b文件和15.1主机下的2.c 3.c保留无变化,属于对应目录同名文件同步保留模式同步
15.1主机获取同步的状态下:15.1主机/nand/app/test/ 下有1.c 2.c 3.c文件,10.12主机/nand/app/test/ 下有1.c 4.b 5.b文件----》
处理一:获取同步后,15.1主机/nand/app/test/ 下的1.c文件与10.12主机/nand/app/test/ 下的1.c文件信息一致而2.c 3.c文件保留无变化;
处理二:修改(增删改)10.12主机的1.c文件再次推送同步,依旧与10.12主机1.c文件信息一致,而15.1主机下的2.c 3.c文件和10.12主机下的4.b 5.b文件保留无变化,属于对应目录同名文件同步保留模式同步
结论:--existing 选项属于对应目录同名文件同步保留模式同步,在此选项下只会同步双方共同存在的对应目录的同名文件,而不会干涉彼此各自拥有的对应目录不同名文件
7. 显示执行进度
使用 -–progress 选项可以显示同步的进度,包括文件传输完成进度、传输速率信息:
$ rsync -avz --progress /nand/app/test/ root@169.254.10.12:nand
$ rsync -avz --progress root@169.254.10.12:nand /nand/app/test/
显示结果:
sending incremental file list
aa/
aa/ccc
0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/9) sent 234 bytes received 54 bytes 576.00 bytes/sec
total size is 169 speedup is 0.59
结论:如果文件过大,可以使用 --progress 选项查看同步进度
8. 查看 source 和 destination 间的区别
A.单独使用-i选项,以类似 ls -l 命令的形式将该模块的对应的目录下所有的文件和目录列出来
rsync -i root@169.254.10.12::nand --password-file=/etc/rsync.password
显示结果:
drwxr-xr-x 2,048 1970/01/04 00:04:03 .
-rw-r--r-- 34 1970/01/01 06:07:10 1.c
-rw-r--r-- 0 1970/01/04 00:03:25 4.b
-rw-r--r-- 0 1970/01/04 00:03:30 5.b
drwxrwxrwx 2,048 2019/12/10 13:04:37 .config
drwxr-xr-x 2,048 1970/01/01 06:43:54 aa
B.同步命令配合-i 选项可以显示源目录与目的地间的差异
$rsync -zavi root@169.254.10.12:nand /nand/app/test/
显示结果:
receiving incremental file list
>f+++++++++ 4.b
>f+++++++++ 5.b sent 68 bytes received 273 bytes 682.00 bytes/sec
total size is 180 speedup is 0.53
对于同步的每个文件,均对应有一条输出,有11个标志位指示源文件与目的地文件的区别,在以上例子中,各标志位意义如下:
> 指示传输到本地
f 指示所传为文件
s 指示文件大小不一致
t 指示时间戳不一致
o 指示属主不一致
结论:1.可以使用 -i 选项查看某个目标主机的某个可视模块的目录下的文件和目录列表
2.配合同步命令可以在同步完成后查看哪些文件同步了,可以清楚地对比源目录和目标目录同步后的文件区别和变动
9. 按指定模式进行同步
使用 -–include 和 -–exclude 选项,可以帮助我们完成只同步特定文件的目的:
$ rsync -avz --include 'a*' --exclude '*' root@169.254.10.12:nand /nand/app/test/
结果:只同步以‘a’开头的文件以及 'a' 开头的目录----也仅同步'a'开头的目录下'a'开头目录和文件(递归)
结论:使用 –include 和 –exclude 选项可以只同步特定文件,用法灵活,暂时只测试了这样的例子
10. 限制传输文件的大小
使用 –-max-size 选项,我们可以限制传输文件的最大大小:
$ rsync -avz --max-size='100K' root@169.254.10.12:nand /nand/app/test/
结论:在某些情况下,我们可以跳过某些大文件进行同步,以节省时间
11. 全拷贝
默认情况下 rsync 采用增量拷贝,这样能节省带宽,在所同步文件不大的情况下,我们可以通过 -W 选项实现全拷贝:
$ rsync -avzW /var/opt/lx/ /root/temp
测试结果:无论本地还是远程,无论是获取还是推送同步,无论带不带-W参数,都是首次全拷贝同步,后面都是增量拷贝同步
结论:不知道是什么原因,我的测试中-W参数不起作用,后面再尝试一下其他情况下使用-W参数能不能起作用