rsync 是 linux 系统下的数据镜像备份工具使用快速增量备份工具 Remote Sync 可以远程同步, 支持本地复制, 或者与其他 SSHrsync 主机同步
rsync 格式
- rsync [OPTION] SRC DEST
- rsync [OPTION] SRC [user@]host:DEST
- rsync [OPTION] [user@]host:SRC DEST
1 rsync 常用选项
-a 包含 - rtplgoD
-r 同步目录时要加上, 类似 cp 时的 - r 选项
-v 同步时显示一些信息, 让我们知道同步的过程
-l 保留软连接
-L 加上该选项后, 同步软链接时会把源文件给同步
-p 保持文件的权限属性
-o 保持文件的属主
-g 保持文件的属组
-D 保持设备文件信息
-t 保持文件的时间属性
--delete 删除 DEST 中 SRC 没有的文件
--exclude 过滤指定文件, 如 --exclude logs 会把文件名包含 logs 的文件或者目录过滤掉, 不同步
-P 显示同步过程, 比如速率, 比 - v 更加详细
-u 加上该选项后, 如果 DEST 中的文件比 SRC 新, 则不同步
-z 传输时压缩
我们发现 a 选项包含很多其他选项, 因此我们常用的选项组合为 av
2 ssh 远程同步
本地同步
rsync -av /etc/passwd /tmp/1.txt
通过 ssh 远程同步
- rsync -av test1/ 192.168.133.132:/tmp/test2/
- rsync -av 192.168.133.132:/tmp/test2/ test1/
rsync -av -e "ssh -p 22" test1/ 192.168.133.132:/tmp/test2$/ 有时需要指定端口
3 client-server 方式同步
要编辑配置文件 / etc/rsyncd.conf
启动服务 rsync --daemon
格式:
rsync -av test1/ 192.168.133.130::module/dir/
ps aux |grep rsync 或者 netstat -lnp |grep rsync 查看服务是否启动
下面是一个配置文件的样例:
- port=873
- log file=/var/log/rsync.log
- pid file=/var/run/rsyncd.pid
- address=192.168.133.130
- [test]
- path=/root/rsync
- use chroot=true
- max connections=4
- read only=no
- list=true
- uid=root
- gid=root
- auth users=test
- secrets file=/etc/rsyncd.passwd
- hosts allow=192.168.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24
配置文件详解:
port 指定在哪个端口启动, 默认是 873
log file : 指定日志文件
pid file 指定 pid 文件, 这个文件的作用涉及服务的启动停止等进程管理操作
adress: 指定启动 rsyncd 服务的 IP 假如你的机器有多个 IP, 就可以指定由其中一个启动 rsyncd 服务, 如果不指定该参数, 默认是在全部 IP 上启动
[] 指定模块名称
path: 指定数据存放路径
use chroot: true|false: 表示在传输文件前首先 chroot 到 path 参数所指定的目录下这样做的原因是实现额外的安全防护, 但缺点是需要以 root 权限, 并且不能备份指向外部的符号连接所指向的目录文件默认情况下 chroot 值为 true, 如果你的数据当中有软连接文件, 建议设置成 false
max connections: 指定最大的连接数, 默认是 0, 即没有限制
read only ture|false: 如果为 true, 则不能上传到该模块指定的路径下
list: 表示当用户查询该服务器上的可用模块时, 该模块是否被列出, 设定为 true 则列出, false 则隐藏
uid/gid: 指定传输文件时以哪个用户 / 组的身份传输
auth users: 指定传输时要使用的用户名
secrets file: 指定密码文件, 该参数连同上面的参数如果不指定, 则不使用密码验证注意该密码文件的权限一定要是 600 格式: 用户名: 密码
hosts allow: 表示被允许连接该模块的主机, 可以是 IP 或者网段, 如果是多个, 中间用空格隔开
设置密码:
编辑刚才配置文件当中指定的密码文件
echo "test:lv123" > /etc/rsyncd.passwd
注意该密码文件名称是关键字, 不能随便该
该文件权限要改为 600
若想在命令行中带上密码, 可以设定一个密码文件
rsync -avL test@192.168.133.130::test/test1$tmp/test8/ --password-file=/etc/pass
其中 / etc/pass 内容就是一个密码, 权限也要改为 600
我们也可以不指定认证账户, 默认以 root 用户同步
我们把 auth user 这行注释掉
sed -i s/auth users/#auth users$etc/rsyncd.conf
4 最后总结
总结下 rsync 几个重要参数
rsync 通常使用的参数为 -av
-L 可以同步软链接的源文件
-P 更加详细的显示同步过程
--delete 删除目标文件中源文件没有的文件, 意思是删除备份冗余
--exclude 过滤掉指定文件, 不同步
-u 参考文件时间属性, 避免旧文件覆盖新文件
来源: http://www.bubuko.com/infodetail-2541003.html