Skip to content

rsync

https://www.samba.org/ftp/rsync/rsync.html

remote synchronize 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。 也可以使用 rsync 同步本地硬盘中的不同目录。rsync 是用于替代 rcp 的一个工具,rsync 使用所谓的 rsync 算法进行数据同步,这种算法只传送两个文件的不同部分,而不是每次都整份 传送,因此速度相当快。

安装

yum install -y rsync

源服务器

配置

vi /ect/rsyncd.conf

nginx
uid = 0
gid = 0
[ftp]
    # 设置同步的目录
    path = /usr/local/nginx/html

启动

rsync --daemon

目标服务器

远程目录下的文件

rsync --list-only 192.168.44.101::ftp/

同步

rsync -avz 192.168.44.101::ftp/ /usr/local/nginx/html/

开启启动

在 /etc/rc.local 文件中添加

rsync --daemon

安全认证

源服务器

设置用户名和密码

echo "foo:bar" >> /etc/rsyncd.pwd
chmod 600 /etc/rsyncd.pwd

修改配置

vi /ect/rsyncd.conf
nginx
uid = 0
gid = 0
auth users = foo
secrets file = /etc/rsyncd.pwd
[ftp]
    # 设置同步的目录
    path = /usr/local/nginx/html

重启 rsync

ps -ef | grep rsync
kill 7260
rsync --daemon

目标服务器

远程目录下的文件

需要输入密码 bar

rsync --list-only foo@192.168.44.101::ftp/

同步

需要输入密码 bar

rsync -avz foo@192.168.44.101::ftp/ /usr/local/nginx/html/

免密码

echo "bar" >> /etc/rsyncd.pwd.client
chmod 600 /etc/rsyncd.pwd.client
rsync --list-only --password-file=/etc/rsyncd.pwd.client foo@192.168.44.101::ftp/
rsync -avz --password-file=/etc/rsyncd.pwd.client foo@192.168.44.101::ftp/ /usr/local/nginx/html/

选项

| 选项 | 含义
| -a | 包含-rtplgoD
| -r | 同步目录时要加上,类似cp时的-r选项
| -v | 同步时显示一些信息,让我们知道同步的过程
| -l | 保留软连接
| -L | 加上该选项后,同步软链接时会把源文件给同步
| -p | 保持文件的权限属性
| -o | 保持文件的属主
| -g | 保持文件的属组
| -D | 保持设备文件信息
| -t | 保持文件的时间属性
| –delete | 删除目标服务中比源服务器多出来的文件
| –exclude | 过滤指定文件,如–exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步 | -P | 显示同步过程,比如速率,比-v更加详细
| -u | 加上该选项后,如果DEST中的文件比SRC新,则不同步
| -z | 传输时压缩

实时推送

目标服务器

设置用户名和密码

echo "foo:bar" >> /etc/rsyncd.pwd
chmod 600 /etc/rsyncd.pwd

修改配置

vi /ect/rsyncd.conf
nginx
uid = 0
gid = 0
read only = no
auth users = foo
secrets file = /etc/rsyncd.pwd
[ftp]
    # 设置同步的目录
    path = /usr/local/nginx/html

重启 rsync

ps -ef | grep rsync
kill 7260
rsync --daemon

源服务器

echo "bar" >> /etc/rsyncd.pwd.client
chmod 600 /etc/rsyncd.pwd.client

推送

rsync -avz --password-file=/etc/rsyncd.pwd.client /usr/local/nginx/html/ foo@192.168.44.102::ftp/