rsync 是一个常用的 Linux 应用程序,用于文件同步。它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。
# 安装 apt install rsync # 参数 -a (常用),使用-r则不同步元数据(创建日期等) rsync -a 源目录1 源目录2 目的目录 # 目的路径如不存在会自动创建 # 源路径尾带上/表示只同步目录下的内容(目的目录/内容) # 不带则同步整个文件夹(目的目录/源目录/内容) # 参数 -n 或 --dry-run 模拟执行 rsync -anv 源目录 目的目录 # 参数 --delete 镜像同步 rsync -av --delete 源目录 目的目录 # 参数 --exclude 排除文件 rsync -av --exclude '*.txt' 源目录 目的目录 # 多个排除 排除列表 --exclude-from='exclude-file.txt' rsync -av --exclude={'file1.txt','dir1/*'} 源目录 目的目录 # 指定文件同步, 指定同步txt,排除其它 rsync -av --include="*.txt" --exclude='*' 源目录 目的目录 # 远程同步 SSH协议 上传 rsync -av 源目录/ [email protected]_host:目的目录 # 远程同步 SSH协议 下载 rsync -av [email protected]_host:源目录/ 目的目录 # 指定ssh端口 rsync -av -e 'ssh -p 1024' 源目录/ [email protected]_host:目的目录 # 远程同步 rsync协议(使用双冒号分隔::) rsync -av 源目录/ 10.1.1.1::module/目的目录 # 查看分配的module列表 rsync rsync://10.1.1.1 # rsync://协议指定地址 rsync -av 源目录/ rsync://10.1.1.1/module/目的目录
其它参数
-a
、--archive
参数表示存档模式,保存所有的元数据,比如修改时间(modification time)、权限、所有者等,并且软链接也会同步过去。--append
参数指定文件接着上次中断的地方,继续传输。--append-verify
参数跟--append
参数类似,但会对传输完成后的文件进行一次校验。如果校验失败,将重新发送整个文件。-b
、--backup
参数指定在删除或更新目标目录已经存在的文件时,将该文件更名后进行备份,默认行为是删除。更名规则是添加由--suffix
参数指定的文件后缀名,默认是~
。--backup-dir
参数指定文件备份时存放的目录,比如--backup-dir=/path/to/backups
。--bwlimit
参数指定带宽限制,默认单位是 KB/s,比如--bwlimit=100
。-c
、--checksum
参数改变rsync
的校验方式。默认情况下,rsync 只检查文件的大小和最后修改日期是否发生变化,如果发生变化,就重新传输;使用这个参数以后,则通过判断文件内容的校验和,决定是否重新传输。--delete
参数删除只存在于目标目录、不存在于源目标的文件,即保证目标目录是源目标的镜像。-e
参数指定使用 SSH 协议传输数据。--exclude
参数指定排除不进行同步的文件,比如--exclude="*.iso"
。--exclude-from
参数指定一个本地文件,里面是需要排除的文件模式,每个模式一行。--existing
、--ignore-non-existing
参数表示不同步目标目录中不存在的文件和目录。-h
参数表示以人类可读的格式输出。-h
、--help
参数返回帮助信息。-i
参数表示输出源目录与目标目录之间文件差异的详细情况。--ignore-existing
参数表示只要该文件在目标目录中已经存在,就跳过去,不再同步这些文件。--include
参数指定同步时要包括的文件,一般与--exclude
结合使用。--link-dest
参数指定增量备份的基准目录。-m
参数指定不同步空目录。--max-size
参数设置传输的最大文件的大小限制,比如不超过200KB(--max-size='200k'
)。--min-size
参数设置传输的最小文件的大小限制,比如不小于10KB(--min-size=10k
)。-n
参数或--dry-run
参数模拟将要执行的操作,而并不真的执行。配合-v
参数使用,可以看到哪些内容会被同步过去。-P
参数是--progress
和--partial
这两个参数的结合。--partial
参数允许恢复中断的传输。不使用该参数时,rsync
会删除传输到一半被打断的文件;使用该参数后,传输到一半的文件也会同步到目标目录,下次同步时再恢复中断的传输。一般需要与--append
或--append-verify
配合使用。--partial-dir
参数指定将传输到一半的文件保存到一个临时目录,比如--partial-dir=.rsync-partial
。一般需要与--append
或--append-verify
配合使用。--progress
参数表示显示进展。-r
参数表示递归,即包含子目录。--remove-source-files
参数表示传输成功后,删除发送方的文件。--size-only
参数表示只同步大小有变化的文件,不考虑文件修改时间的差异。--suffix
参数指定文件名备份时,对文件名添加的后缀,默认是~
。-u
、--update
参数表示同步时跳过目标目录中修改时间更新的文件,即不同步这些有更新的时间戳的文件。-v
参数表示输出细节。-vv
表示输出更详细的信息,-vvv
表示输出最详细的信息。--version
参数返回 rsync 的版本。-z
参数指定同步时压缩数据。
来源参考
https://www.ruanyifeng.com/blog/2020/08/rsync.html