rsync:remote sync
优点:通过对比源目的文件,实现增量备份,传输速度快。可通过crontab实现自动化备份。
缺点:由于需要对比源目的文件,所以比较耗时。但是由于crontab本身最小时间间隔的限制,数据同步不及时。
解决方案:rysnc+inotify
rsync命令的工作模式:
第一种:shell模式,也称作本地模式
第二种:远程shell模式,此时可以利用ssh协议承载其数据传输过程
第三种:列表模式,其工作方式与ls相似,仅列出源的内容;-nv
第四种:服务器模式,此时,rsync可以工作为守护进程,能够接收客服端的数据传输请求;在使用时,可以在客户端使用rsync命令把文件发送给守护进程,也可以向服务器请求获取文件。
rsync用法
本地模式
rsync [OPTION...] SRC... [DEST]
远程shell模式(账号为远程服务器的账号)
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
服务器模式(账号为为rsync设置的账号)
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync有许多选项:
-n:在不确定命令是否能按意愿执行时,务必要事先测试;-n可以完成此功能;
-v: --verbose详细输出模式
-q: --quiet静默模式
-c: --checksum开启校验功能,强制对文件传输进行校验
-a: --archives归档,保留文件的原有属性(相当于-rptlgoD的集合)
-r: --recursive递归复制
-p: --perms 保留文件的权限
-t: --times 保留文件的时间戳
-l: --links 保留文件的符号链接
-g: --group 保留文件的属组
-o: --owner 保留文件的属主
-D: --devices 保留设备文件
-e ssh表示使用ssh协议作承载
-z对文件压缩后传输
--progress显示进度条
--stats显示如何执行压缩和传输
注意:rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录的内容,而不复制目录本身;没有斜线,则会复制目录本身;目标参数末尾的斜线没有作用;因此下面的命令
# rsync -r /mydata/data /backups/ : 会把目录data直接同步至/backups目录中
# rsync -r /mydata/data/ /backups/: 会把目录data/中的内容的同步至/backups目录中
配置rsync以服务器模式运行:
1、安装配置rsync
yum -y install xinetd rsync
vim /etc/rsyncd.conf
# Global Settings
#指定运行rsync的用户和用户组
uid = nobody
gid = nobody
#是否可以离开工作目录,最大的连接数,工作在严格模式
use chroot = no
max connections = 10
strict modes = yes
#指定rsync的pid、log存放路径
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
# Directory to be synced
[rsync]
#指定rsync的目录,出现IO问题是继续继续
path = /data/rsync
ignore errors = yes
#两者都NO表示可以上传和下载,read only为no,write only为yes只能上传,不能下载。
read only = no
write only = no
#控制访问
hosts allow = 192.168.0.0/16
hosts deny = *
#说明:
#1、二者都不出现时,默认为允许访问;
#2、只出现hosts allow: 定义白名单;但没有被匹配到的主机由默认规则处理,即为允许;
#3、只出现hosts deny: 定义黑名单;出现在名单中的都被拒绝;
#4、二者同时出现:先检查hosts allow,如果匹配就allow,否则,检查hosts deny,如果匹配则拒绝;如二者均无匹配,则由默认规则处理,即为允许;
#是否可以查看内容
list = false
#指定已那个用户的身份去获取文件,一般只有对定义的目录据用读写权限即可
uid = root
gid = root
#指定可以访问的用户及其密码文件存放目录
auth users = username
secrets file = /etc/rsyncd.passwd
2、配置密码文件/etc/rsyncd.passwd,启动服务(监听于873/tcp)
vim /etc/rsyncd.passwd
username:password
chmod 600 /etc/rsyncd.passwd
chkconfig rsync on
service xinetd start
2、在客户端做测试
rsync /etc/sysconfig/network-scripts/ifcfg-eth0 username@192.168.130.61::rsync
rsync username@192.168.130.61::rsync/* ./
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
如果需要做周期性操作,则需要将命令写入cronttab中;
rsync --password-file=/etc/rsyncd.passwd install.log.syslog myuser@172.16.100.7::mydata
-r: pull操作
而且客户端本地应该提供密码文件,密码只需要包含指定的用户的密码即中,不需要用户名;
转载于:https://blog.51cto.com/kaiyuandiantang/2307358