25、rsync学习笔记

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 [email protected]::rsync

rsync [email protected]::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 [email protected]::mydata


-r: pull操作


而且客户端本地应该提供密码文件,密码只需要包含指定的用户的密码即中,不需要用户名; 


猜你喜欢

转载自blog.51cto.com/kaiyuandiantang/2307358
今日推荐