rsync是什么
- rsync 是一款高效远程数据同步工具。
- rsync 能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输量。(增量同步)
- rsync 中的一项同类软件不常见的重要特性是每个目标的镜像只需发送一次。
- rsync 可以拷贝/显示目录内容,以及拷贝文件,并可选压缩以及递归拷贝。
- rsync 命令中,一个冒号走 ssh 协议,两个冒号走 rsync 协议
rsync与scp区别
- 工作原理
scp是基于SSH协议进行安全文件传输的,它在传输文件时,会将文件从源复制到目标,不论文件大小和修改时间是否改变。而rsync是另一种高效的文件复制工具,它只传输文件的差异部分,而非全部,这使得rsync在复制大文件或更新变化文件时更为高效。 - 传输效率
使用rsync进行文件传输相较于scp有更高的传输效率,因为rsync在复制过程中只传输文件的差异部分,而不是整个文件。 - 安全性
scp基于SSH协议,因此提供了较高的安全性保障。而rsync本身并未提供安全保障,如果使用rsync在公共网络上进行文件传输,建议使用ssh进行加密。 - 符号链接支持
rsync支持符号链接,而scp不支持。 - 操作方式
scp主要是通过命令行进行操作,rsync则可以通过命令行或者配置脚本来操作。
rsync命令
本地复制:
rsync [OPTION] SRC DEST
通过 ssh 访问远程机器:
pull: rsync [OPTION] USER@HOST:SRC DEST
push: rsync [OPTION] SRC USER@HOST:DEST
通过 rsync 守护进程访问远程机器:
pull: rsync [OPTION] USER@HOST::SRC DEST
rsync [OPTION] rsync://USER@HOST:PORT/SRC DEST
push: rsync [OPTION] SRC USER@HOST::DEST
rsync [OPTION] SRC rsync://USER@HOST:PORT/DEST
可使用 --dry-run 预演,避免误操作
rsync命令中的选项参数:
a:归档模式,表示以递归的方式传输文件,并保持所有文件属性不变。
v:详细模式,输出详细信息。
p:保持文件权限。
h:以人类可读的方式显示文件大小。
r:表示递归模式。
l:表示保留软链结。
t:表示保持文件时间信息。
g:表示保持文件属组信息。
o:表示保持文件属主信息。
push推送
# ssh 方式推送单个文件到远程主机目录
rsync -v /tmp/1.txt zlh@dst_ip:/tmp/
# ssh 密码方式
sshpass -p {password} rsync /tmp/1.txt zlh@dst_ip:/tmp/
# 推送目录的所有文件到远程主机目录
rsync -av /tmp/ dst_ip:/tmp/
# 推送目录的所有文件到远程主机目录,并显示统计信息
rsync -avh --stats /tmp/ dst_ip:/tmp/
# 推送某个目录的所有文件到远程主机目录,并删除远程目录中多余的文件(及子目录)
rsync -av --delete /tmp/ dst_ip:/tmp/
# 递归删除 dst_ip::/tmp/test 目录下的所有文件,及 test 目录本身
rsync -av --delete --include=test/*** --exclude=* /tmp/empty/ dst_ip::/tmp/test
# 等价于
rsync -av --delete --include=test/ --include=test/** --exclude=* /tmp/empty/ dst_ip::/tmp/test
# 列出远程目录
rsync --list-only zlh@dst_ip:/directoryname/
# 删除单个文件
rsync -avpz --delete --include='1.txt' --exclude='*' ./ dst_ip::/tmp/test/ --dry-run
pull拉取
# rsync 协议
rsync -avPh --stats zlh@dst_ip::tmp/ /tmp
# ssh 协议
rsync -avPh --stats zlh@dst_ip:/tmp/ /tmp/