一、rsync是什么
Rsync是一款开源的、快速的、多功能的、可实现全量及增量
的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。
rsync的优点
1.它有效地将文件复制和同步到远程系统或从远程系统同步文件到本地。
2.支持复制链接、设备、所有者、组和权限。
3.它比scp (Secure Copy)更快,因为rsync使用远程更新协议,该协议只允许传输两组文件之间的差异。第一次,它将一个文件或目录的全部内容从源文件复制到目标文件,但从下一次开始,它只将更改的块和字节复制到目标文件。
4.Rsync在两端发送和接收数据时采用压缩和解压缩方式,因此占用的带宽较少。
-a ,--archive:归档模式表示以递归方式传输文件,并保持所有文件属性
-r,--recursive:对子目录以递归模式处理
-l,--links:保持符号链接文件
-H,--hard-links:保持硬链接文件
-p,--perms:保持文件权限
-t,--times:保持文件时间信息
-g,--group:保持文件属组信息
-o,--owner:保持文件属主信息
-D:保持设备文件和特殊文件
-z--compress:压缩传输当前目录的所有文件
-h:人类可读的格式输出
-e,--rsh=COMMAND:表示自定义的shell
-v:输出详细信息
--exclude=PATTERN:指定排除一个不需要传输的文件匹配模式
--exclude-from=FILE:从FILE中读取包含规则
--existing:仅仅更新那些已经存在于接收端的文件,而不备份那些新创建的文件
--ignore-existing:忽略那些已经存在于接收端的文件,仅备份那些新创建的文件
-b,--backup:当有变化时,对目标目录中的旧版文件进行备份
--backup-dir=DIR:与-b结合使用,将备份文件存到DIR目录中
--delete:删除那些接收端还有而发送端已经不存在的文件
-P:保留那些因故没有完全传输的文件,以便加快随后的再次传输,在传输时显示传输过程
-q:精简输出模式
-n,--dry-run:显示哪些文件将被传输
--list-only:仅仅列出文件,而不进行复制
--password-file=FILE 从 FILE 中读取口令,以避免在终端上输入口令
在指定复制源时,路径是否有最后的 “/” 有不同的含义,例如:
/home :表示将整个 /home 目录复制到目标目录
/home/ :表示将 /home 目录中的所有内容复制到目标目录
1、同步172.28.17.221的/home/.../audio/目录下的所有 到本机的/home/synctest/目录下,不真正同步,只显示需要同步的文件
[root@glusterfs03 synctest]# rsync -P -artzhe 'ssh -p 22' --delete root@172.28.17.221:/home/hl95/webapps/fs1/100000/audio/ /home/synctest/ --list-only
2、同步172.28.17.221的/home/.../audio/目录下的所有 到本机的/home/synctest/目录下
[root@glusterfs03 synctest]# rsync -P -artzhe 'ssh -p 22' --bwlimit=100K --delete root@172.28.17.221:/home/hl95/webapps/fs1/100000/audio/ /home/synctest/
3、同步172.28.17.221的/home/.../audio/目录下除了20220607目录以外的其他所有 到本机的/home/synctest/目录下
[root@glusterfs03 synctest]# rsync -P -artzhe 'ssh -p 22' --delete --exclude='20220607' --exclude='20220608' root@172.28.17.221:/home/hl95/webapps/fs1/100000/audio/ /home/synctest/
4、同步本机的/home/synctest/目录下的所有到172.28.17.221的/home/.../audio/目录下
[root@glusterfs03 synctest]# rsync -P -artzhe 'ssh -p 22' --bwlimit=100K --delete /home/synctest/ root@172.28.17.221:/home/hl95/webapps/fs1/100000/audio/
5、创建不需要同步的文件或者目录列表文本,指定排除文件
vim exclude.txt 20220608 202206071401451001123456789011234561779163625719623.mp3
执行:
[root@glusterfs03 synctest]# rsync -P -artzhe 'ssh -p 22' --delete --exclude-from=/home/exclude.txt root@172.28.17.221:/home/hl95/webapps/fs1/100000/audio/ /home/synctest/
6、--max-size:大于指定大小的50K的文件不传输(可以是M,G)
[root@glusterfs03 synctest]# rsync -P -artzhe 'ssh -p 22' --delete --max-size='50K' root@172.28.17.221:/home/hl95/webapps/fs1/100000/audio/ /home/synctest/
7、限制Rsync传输时的带宽--bwlimit=100K,显示带宽为100K
[root@glusterfs03 synctest]# rsync -P -artzhe 'ssh -p 22' --delete --bwlimit=100K root@172.28.17.221:/home/hl95/webapps/fs1/100000/audio/ /home/synctest/
另外,默认情况下rsync只同步更改的块和字节,如果你想完整同步整个文件或目录,那么你可以使用-W选项。