rsync作用:
1、同步文件(只同步有差异的文件列表)
2、异地备份
3、触发型的更新:sersync + rsync
用于 rsync 在远程多台主机间作文件同步
server1<---------->server2
从server1同步一个文件列表(10个文件)至server2
rsync同步文件的原理:
1、在server1上扫描10个文件,并且得到一个md5/sha1检验值列表
2、在远程机器server2上,也扫描对应列表,到这步我们就有了两个列表(检验)
3、作为同步的客户去对比这两个列表,如果有差异的文件是需要同步,如果无差异表示源目录的文件是一致,所以不需要同步
最常见的包括两种服务实现方式:
server1(rsync+ssh)<-----ssh----->server2(sshd)
server1(rsync)<------------rsync—>server2(rsyncd)
1、基于远程shell 的程序,如OpenSSH,加密通道(慢),这是我们用得最多的文件同步方式,因为方便且安全
2、rsync 程序自身的“daemon”服务器模式,明文通道(快)。
rsync是一个客户端/服务器同体一个软件:
rsync --help --客户端模式
rsync --daemon --help --服务器模式
以下列出rsync作为客户端时几个较常用的命令选项及其含义:
-a 使用归档(archive)模式,保留文件原有的权限、属性、属主等信息,等同于使用“-rlptgoD”等多个选项的组合
-l 符号(软)连接文件仍然复制为符号连接
-H 保留硬连接文件
-r 递归模式,包含目录及子目录中所有文件
-v 显示同步过程的详细(verbose)信息
-z 在传输文件时进行压缩(gzip compress)
-o 保留文件的属主标记(仅超级用户使用)
-g 保留文件的属组标记(仅超级用户使用)
-t 保留文件的时间标记
-p 保留文件的权限标记
-D 保留设备文件及其他特殊文件
-R 保留原来绝对路径
–delete
1)–delete在rsync daemon是一定能够成功的,而SSH通道不一定成功
2)作用:删除发送端没有的而接收端有的,保证接收端跟发送端文件是一致的
–checksum 根据校验和来决定是否跳过文件(而不是根据文件大小、修改时间)
实例配置:
rsync_client(192.168.0.15)<–> rsyncd(192.168.0.20)
rsync服务器(daemon)配置:
有两种模式,独立模式/依赖模式
1.安装
rsync默认已经安装
2.配置(/etc/rsyncd.conf)
mkdir /webroot
chown nobody.nobody /webroot/
vim /etc/rsyncd.conf
uid=nobody
gid=nobody
use chroot=yes
address=192.168.0.20
port 873
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
hosts allow=192.168.0.0/24
[webroot]
path=/webroot
comment= web root share with rsync
read only=yes
dont compress=*.gz *.bz2 *.tgz *.rar *.zip --不需要压缩的文件列表
auth users=user01 user02
secrets file=/etc/rsyncd_user.db
vim /etc/rsyncd_user.db
user01:123
user02:456
chmod 600 /etc/rsyncd_user.db
3.启动rsync(任选其中一种):
第一种办法(依赖方式):
systemctl enable rsync
systemctl start rsync
第二种方法(独立方式):
rsync --daemon
vim /etc/rc.local
/usr/bin/rsync --daemon
4.客户端同步文件:
第一种方法:
rsync -avz --delete user01@192.168.0.20::webroot /var/tmp
Password:
receiving file list ... done
./
a.txt
b.txt
test.tar.bz2
sent 178 bytes received 543 bytes 288.40 bytes/sec
total size is 227 speedup is 0.31
==========
第二种方法:
命令的格式跟第一种方法不同
rsync -avz --delete rsync://user01@192.168.0.20/webroot /var/tmp
Password:
receiving file list ... done
./
a.txt
b.txt
test.tar.bz2
sent 178 bytes received 543 bytes 206.00 bytes/sec
total size is 227 speedup is 0.31
不需要输入密码的同步方式(适合于脚本方式调用):
vim /root/passwd.txt
123
–必须设置600的权限才能使用
chmod 600 /root/passwd.txt
rsync -avz --delete --password-file=/root/passwd.txt rsync://user01@192.168.0.20/webroot /var/tmp
receiving file list ... done
./
a.txt
b.txt
test.tar.bz2
sent 178 bytes received 543 bytes 1442.00 bytes/sec
total size is 227 speedup is 0.31
制作crontab任务计划:
crontab -e
*/5 * * * * /usr/bin/rsync -avz --delete --password-file=/root/passwd.db rsync://user01@192.168.0.20/webroot/a /var/tmp &> /dev/null