Rsync同步文件
Rsync是一个快速的文件复制工具。其增量传输算法通过仅发送文件之间的差异部分以减少发送的数据量,加快复制速度。可以本地复制,可以通过远程Shell或远程Rsync守护进程进行复制。支持复制软硬链接、设备等特殊类型文件。
常用参数
- -a 归档模式,复制原文件的所有者、组、权限等属性
- -v 显示详细信息
- -P 显示实时复制过程
- -z 在传输过程中压缩文件数据
- -e 指定要使用的远程Shell
- -r 包含所有子目录
- -t 保留修改时间
- -u 跳过目标较新的文件
- -q 静默模式,不显示过程信息
- --delete 从目标目录中删除源目录不存的文件
- --exclude=PATTERN 排除匹配的文件
使用
本地复制文件
rsync -av test.txt /tmp/
通过ssh推送文件
rsync -avz -e 'ssh -p 22' test.txt [email protected]:/tmp/
通过ssh拉取文件
rsync -avz -e 'ssh -p 22' [email protected]:/tmp/test.txt /tmp/
通过远程Rsync守护进程拉取文件
rsync -avz [email protected]::rsyncmodule/test.txt /tmp/
通过Rsync部署代码
rsync -rtu --delete --progress --exclude ".svn" ./code /data/webroot/code
Daemon模式
配置服务端
Rsync的配置文件为/etc/rsyncd.conf,不存在则手动创建。
uid = nobody # Rsync守护进程的运行用户
gid = nobody
use chroot = no
max connections = 9
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
list = false
read only = true
# IP访问限制可以在云平台的安全组里设置
# hosts deny = 0.0.0.0/32
# hosts allow = 8.8.8.8
auth users = rsyncuser # rsync用户,非系统用户,在下边的"secrets file"中设置
secrets file = /etc/rsyncd.secrets
transfer logging = true
log file = /data/logs/rsync/rsyncd.log
[rsyncmodule]
path = /root/src
comment = Source Path
设置rsync用户和密码
echo "rsyncuser:password001" >> /etc/rsync.secrets
chmod 600 /etc/rsync.secrets
开启rsync服务
systemctl start rsyncd
systemctl enable rsyncd
客户端创建密码文件
echo "password001" >> /etc/rsync.secrets.rsyncuser
chmod 600 /etc/rsync.secrets.rsyncuser
客户端发起同步文件
rsync -av [email protected]::rsyncmodule/test.txt /tmp/ --password-file=/etc/rsync.pass.rsyncuser