搭建的服务:rsync
需求:
- 服务端的 /mnt/rsync 文件夹内容同步到客户端的 /mnt/rsync 文件夹内容, 时间为1小时同步一次。
- 服务端的 /data/rsync 文件夹内容同步到客户端的 /data/rsync 文件夹内容, 时间为实时同步。
架构图
搭建 rsync(在服务器 192.168.10.204操作)
yum 安装 rsync 版本:rsync-3.1.2-4
yum install -y rsync
1、配置 rsync 配置文件(解析只需要修改的部分,不修改不做解析)
uid = nobody
gid = nobody
use chroot = no //是否使用chroot
strict modes = false
read only = false //是否为只读
log file = /var/log/rsyncd.log //日志文件位置
pid file = /var/run/rsyncd.pid //存档进程ID的文件位置
port = 873 //监听端口
max connections = 4 //最大连接数
[mnt] //共享模块名称
path = /mnt/rsync //源目录的实际路径
auth users = rosen //授权账户
secrets file = /etc/rsyncd.scrt //存放账户信息的数据文件
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //同步时不再压缩的文件类型
[data]
path = /data/rsync
auth users = rosen
secrets file = /etc/rsyncd.scrt
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
2、建立账号文件,修改权限
# vim /etc/rsyncd.scrt
rosen:rosen123
# chmod 600 /etc/rsync.scrt
注:另一台服务器 192.168.10.246 安装启动就好,不用修改配置
添加账号文件/etc/rsyncd.scrt 直接写密码即可
# vim /etc/rsyncd.scrt
rosen123
3、两台 rsync 启动服务
# service rsyncd start
# netstat -ntlp (端口号 873)
在服务端建立文件夹和文件测试观察效果
# mkdir /mnt/rsync
# chmod 777 /mnt/rsync/
# touch {1..9}.txt /mnt/rsync
# mkdir /data/rsync
# chmod 777 /data/rsync/
# touch {1..9}.sql /data/rsync
4、连接同步(以下 4 和 5 的操作都在服务器 192.168.10.246 上实现)
# rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::mnt /mnt/rsync/
# rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::data /data/rsync/
5、加入到 crontab -e 中定时同步数据
# crontab -e
* 1/* * * * rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::mnt /mnt/rsync/ 每1小时同步一次
* * * * * rsync -az --delete --password-file=/etc/rsyncd.scrt [email protected]::data /data/rsync/ 每秒钟同步一次
用法如下:
下行:rsync […] user@host:远程目录 本地目录
上行:rsync […] 本地目录 user@host:远程目录
语法解释
-a 同步,归档模式,相当于-rpltgoD(-r递归,包括目录/子目录及所有文件。-l 保留符号链接文件。 -p 、-t 保留文件的权限、时间标记。 -o 、-g 保留文件的属主?属组标记。 -D 保留设备文件及其他特殊文件)
-v 可以看到操作细节
-n 测试同步操作,不做实际修改
-z 是压缩传输,-r 是recursive
-u 是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器的时钟的同步。
–progress是指显示出详细的进度情况
–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
–password-file=/etc/rsyncd.scrt 来指定密码文件,无需交互式地输入验证密码,注意的是这份密码文件权限属性要设得只有属主可读
rsync -a /boot /todir //同步整个文件夹
rsync -a /boot/ /todir/ //只同步目录下的数据
用法一:手动输入密码交互方式共享资源同步到本地
rsync -az <用户名>@ip::<共享目录>/ /opt
用法二:自动交互式
rsync -az --delete --password-file=/etc/rsyncd.scrt <用户>@IP::<远端目录> /<本地目录>