Rsync(remote synchronize)是一个远程数据同步工具,可经过LAN/WAN快速同步多台主机间的文件,也能够使用 Rsync 同步本地硬盘中的不一样目录。rsync共有3种使用方法,在配置rsync也是有6个步骤的。下面咱们就从rsync的介绍,rsync的使用和rsync的配置带你走进rsync的世界linux
Rsync(remote synchronize)是一个远程数据同步工具,可经过LAN/WAN快速同步多台主机间的文件,也能够使用 Rsync 同步本地硬盘中的不一样目录。 在使用 rsync 进行远程同步时,能够使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户链接远程 rsync 服务器,用户验证由 rsync 服务器负责)。rsync 被称为是一个文件同步的快速方法,主要是由于其在同步文件时会检查文件之间是否有差别,它只同步存在差别或者不存在的文件,可是首次同步时速度依然很慢。shell
rsync有许多选项: -n: 在不肯定命令是否能按意愿执行时,务必要事先测试;-n能够完成此功能; -v: --verbose,详细输出模式 -q: --quiet,静默模式 -c: --checksum,开启校验功能,强制对文件传输进行校验 -r: --recursive,递归复制; -a: --archives,归档,保留文件的原有属性 -p: --perms 保留文件的权限 -t: --times 保留文件的时间戳 -l: --links 保留文件的符号连接 -g: --group 保留文件的属组 -o: --owner 保留文件的属主 -D: --devices 保留设备文件 -H, --hard-links 保留硬链结; -S, --sparse 对稀疏文件进行特殊处理以节省DST的 空间; -e ssh: 表示使用ssh协议做承载 -z: 对文件压缩后传输 --progress:显示进度条 --stats: 显示如何执行压缩和传输 --delete:删除那些DST中有而SRC没有的文件,即删除DST中多余的文件;
rsync能够在此处下载 http://rsync.samba.org/ ,CentOS系统上rsync默认是安装的。服务器
rsync有六种不一样的工做模式:并发
当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工做模式。ssh
[root@localhost ~]# rsync -avSH /home/feiyu/ /bak/
使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。tcp
[root@localhost ~]# rsync -av /home/feiyu/ 192.168.0.24:/home/feiyu/
使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。工具
[root@localhost ~]# rsync -av 192.168.0.24:/home/feiyu/ /home/feiyu/
注意:rsync命令使用中,若是源参数的末尾有斜线,就会复制指定目录的内容,而不复制目录自己;没有斜线,则会复制目录自己;目标参数末尾的斜线没有做用;所以下面的命令测试
[root@localhost ~]# rsync -r /mydata/data /backups/ : 会把目录data直接同步至/backups目录中 [root@localhost ~]# rsync -r /mydata/data/ /backups/: 会把目录data/中的内容的同步至/backups目录中
后面三种模式都是在rsync做为服务器时才能使用的,下面就开始配置rsync做为一个服务。ui
配置一个简单的rsync服务并不复杂,可是咱们安装好rsync后,并无发现配置文件,因此你须要手动创建一些配置文件。rsync能够经由xinetd启动daemon,或者做为一个独立进程启动daemon。若是把它做为一个独立进程来启动,只须要运行命令:rsync –daemon便可;可是咱们通常将其做为超级守护进程使用。下面是安装步骤:spa
[root@localhost ~]# yum -y install xinetd [root@localhost ~]# ls /etc/xinetd.d/ #rsync的xinetd配置文件已经存在 chargen-dgram daytime-dgram discard-dgram echo-dgram rsync time-dgram chargen-stream daytime-stream discard-stream echo-stream tcpmux-server time-stream
配置文件为/etc/rsyncd.conf,获取帮助的方式:man rsyncd.conf。配置文件须要定义一个全局配置和多个rsync共享配置。
[root@localhost ~]# cat /etc/rsyncd.conf # Global Settings # port = 873 端口号默认为873,能够不指定 uid = nobody //指定当模块传输文件的守护进程UID gid = nobody //指定当模块传输文件的守护进程GID use chroot = no //使用chroot到文件系统中的目录中 max connections = 5 //最大并发链接数 strict modes = yes #严格检查文件权限 pid file = /var/run/rsyncd.pid //指定PID文件 lock file = /usr/local/rsyncd/rsyncd.lock //指定支持max connection的锁文件,默认为/var/run/rsyncd.lock log file = /var/log/rsyncd.log //rsync 服务器的日志 # Directory to be synced [mydata] //自定义模块 path = /mydata/data //用来指定要备份的目录 ignore errors = yes //能够忽略一些IO错误 read only = no //设置no,客户端能够上传文件,yes是只读 write only = no //no为客户端能够下载,yes 不能下载 hosts allow = 192.168.0.0/16 //能够链接的IP hosts deny = * //禁止链接的IP list = false //客户请求时,使用模块列表 uid = root gid = root auth users = myuser //链接用户名,和linux系统用户名无关系 secrets file = /etc/rsyncd.passwd //验证密码文件
说明(deny | allow 规则):
一、两者都不出现时,默认为容许访问;
二、只出现hosts allow: 定义白名单;但没有被匹配到的主机由默认规则处理,即为容许;
三、只出现hosts deny: 定义黑名单;出如今名单中的都被拒绝;
四、两者同时出现:先检查hosts allow,若是匹配就allow,不然,检查hosts deny,若是匹配则拒绝;如两者均无匹配,则由默认规则处理,即为容许;
文件格式(明文): username : password
[root@localhost ~]# echo "myuser:mypass" > /etc/rsyncd.passwd [root@localhost ~]# chmod 600 /etc/rsyncd.passwd #权限必须为600
[root@localhost ~]# service xinetd start
a. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。
[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata /tmp/ #myuser为rsync服务器的一个用户
b. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。
[root@localhost ~]# rsync -av install.log.syslog myuser@192.168.0.23::mydata
c. 列远程机的文件列表。这相似于rsync传输,不过只要在命令中省略掉本地机信息便可。
[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata免费提供最新Linux技术教程书籍,为开源技术爱好者努力作得更多更好:http://www.linuxprobe.com/