Remote Sync,远程同步
支持本地复制,或者与其他SSH,rsync主机同步
1.Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。
2.Rsync软件适用于unix/linux/windows等多种操作系统平台。
3.Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。
4.以其delta-transfer算法闻名。 rsync监听端口:873 rsync运行模式:C/S
全量备份
所有数据全部传送
把原来的文件和新的文件一起统一传送
全量复制,效率低
增量备份
在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输
增量复制,效率较高
参数 | 说明 |
---|---|
-a | 归档模式传输, 等于-tropgDl(打包) |
-v | 详细模式输出, 打印速率, 文件数量等 |
-z | 传输时进行压缩以提高效率 |
-r | 递归传输目录及子目录,即目录下得所有目录都同样传输。 |
-t | 保持文件时间信息 |
-o | 保持文件属主信息 |
-p | 保持文件权限 |
-g | 保持文件属组信息 |
-l | 保留软连接 |
-P | 显示同步的过程及传输时的进度等信息 |
-D | 保持设备文件信息 |
-L | 保留软连接指向的目标文件 |
-e | 使用的信道协议,指定替代 rsh 的 shell 程序 |
参数 | 说明 |
---|---|
–exclude=PATTERN | 指定排除不需要传输的文件模式 |
–exclude-from=file | 文件名所在的目录文件 |
–bwlimit=100 | 限速传输 |
–partial | 断点续传 |
–delete | 让目标目录和源目录数据保持一致 |
类似于cp命令,将aaa目录及里面的文件归档、压缩拷贝到/opt下面并显示详细信息
rsync -avz /aaa /opt
rsync -avz /aaa1 /opt
rsync -avz /aaa1/ /opt
1.对server1根目录下的aaa1目录及三个文件进行备份
将根目录下的aaa1目录及文件备份到server2根目录下的server1文件中(server2下面要提前创建目录)
rsync -avz /aaa1 [email protected]:/server1
2.在已经备份完的情况下,server1下的aaa1有添加了新的内容
rsync -avz /aaa1 [email protected]:/server1
3.总结:在备份文件时,备份后的目录没有源文件,那么会完全复制过去,在此基础上源文件做了改动(添加了新的文件),再次备份的时候,只需要备份添加的文件
删除源文件上不存在的文件,目标文件上进行删除,保证与源文件内容一致
举例
在/opt下面创建一个bbb目录,并在里面创建四个文件,与根目录下的bbb稍做区分
rsync -avP --delete /bbb/ /opt/bbb/
-P
:显示同步的过程及传输时的进度等信息
--delete
:让目标目录和源目录数据保持一致
vi /etc/rsyncd.conf
uid = nobody 运行用户
gid = nobody 运行组
use chroot = no 锁定宿主目录
max connections = 200 最大连接数
pid file = /var/run/rsyncd.pid 进程文件
log file = /var/log/rsyncd.log 日志文件
# exclude = lost+found/ 执行权限
# transfer logging = yes 传输日志
# timeout = 900 连接超时时间
# ignore nonreadable = yes 忽略不可读属性
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 压缩
hosts allow = 20.0.0.0/24 允许网段
address = 20.0.0.11 监听地址
port 873 监听端口
[wwwroot] 共享目录名称
path = /rsync 路径
comment = test 描述
read only = yes 只读
auth user = zhangsan 用户
secrets file = /etc/user.db 用户数据文件路径
vi /etc/user.db
赋只读权限
chmod 600 /etc/user.db
守护进程形式去启动服务
rsync --daemon
查看端口状态
netstat -anpt | grep 873
方法一 :在server2(20.0.0.12)上发起请求,备份到serve2的/rsync下面
rsync -avz [email protected]::wwwroot /rsync
方法二 :类似网页形式
rsync -avz rsync://[email protected]/wwwroot /rsync2
chmod 600 password
rsync -avz --password-file=/root/password rsync://[email protected]/wwwroot /rsync3
保证两个设备上的一个文件数据信息保持一致性
tar xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure && make && make install
chmod 600 /etc/test.pass
编辑脚本
vi inotify.sh
#!/bin/bash
INOTIFY="inotifywait -mrq -e modify,create,attrib,move,delete /test/inotify"
RSYNC_CMD="rsync -avz --delete --password-file=/etc/test.pass /test/inotify [email protected]::name"
$INOTIFY | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ];then
$RSYNC
fi
done
在server1(20.0.0.11)上
vi /etc/rsyncd.conf
[root@server2 ~]# vi /etc/sysctl.conf
[root@server2 ~]# sysctl -p 写入系统,启用
在末尾添加
fs.inotify.max_queued_events = 16384 监控事件的最大队列数
fs.inotify.max_user_instances = 1024 监控的最大实例数
fs.inotify.max_user_watches = 1048576 监控的每个实例的最大文件数