http://oplinux.com/app/rsync/rsync-all-mode.html
一、概念和基本命令
官网:http://rsync.samba.org/
Rsync,由开发samba的公司开发,在生产环境中主要是用来同步文件(异地备份文件),常常用来同步频繁修改的网页。
用于rsync同步的远程主机,最常见的包括两种服务实现方式:
其一,基于远程shell 的程序,如OpenSSH;特点是灵活,只要有权限可以将文件同步到系统任何位置,加密方式传输;
其二,rsync 程序自身的“daemon”服务器模式。需要共享一个专用的目录,传输不加密;
rsync的常用的命令选项及其含义:
-a 使用归档(archive)模式,保留文件原有的权限、属性、属主等信息,等同于使用“-rlptgoD”等多个选项的组合
-l 符号(软)连接文件仍然复制为符号连接
-H 保留硬连接文件
-r 递归模式,包含目录及子目录中所有文件
-v 显示同步过程的详细(verbose)信息
-z 在传输文件时进行压缩(compress)
-o 保留文件的属主标记(仅超级用户使用)
-g 保留文件的属组标记(仅超级用户使用)
-t 保留文件的时间标记
-p 保留文件的权限标记
-D 保留设备文件及其他特殊文件
–delete 删除目标文件夹有而源文件夹中没有的文件
–checksum 根据校验和来决定是否跳过文件(而不是根据文件大小、修改时间)
a.当连接openssh-server服务时,使用一个冒号“:”分隔。目录名对应远程主机中的绝对路径,以远程主机的系统用户进行验证。
例如:
# rsync -avz [email protected]:/var/www/html/ /tmp/ –将远程主机的文件同步到当前主机的/tmp目录,sshuser为远程主机的系统帐号
b.当连接 rsync –daemon 服务时,使用两个冒号“:”分隔(或者使用斜杠“/”分隔,同时在主机地址前加“rsync://”前缀)。目录名对应远程主机发布的备份模块名(共享 名),以远程主机指定的rsyncd_users.db 文件中的用户进行验证(允许匿名)。
例如:
# rsync -avz [email protected]::webroot /tmp/
# rsync -avz rsync://[email protected]/webroot /tmp/
rsync只同步更新过的文件,所以很快。
二、rsync服务配置
环境如下:
rsync_client<——–>rsyncd
192.168.0.15 192.168.0.20
rsync服务器启动模式有两种模式:
独立模式;daemon
依赖模式(使用xinetd)。
1、软件安装
yum -y install rsync –安装软件包,Redhat系统默认已经安装
2、创建配置文件/etc/rsyncd.conf
# mkdir /webroot –创建一个共享目录,在配置文件指定
# chown nobody.nobody /webroot/ –修改共享目录的权限,跟配置文件中定义的uid和gid相对应
# vim /etc/rsyncd.conf –修改配置文件
uid=nobody –指定访问共享目录的用户
gid=nobody –指定访问共享目录的组
use chroot=yes –指定用户只能在共享目录活动,安全重要
address=192.168.1.10 –指定监听地址(本机)
port 873 –指定程序端口
log file=/var/log/rsyncd.log –指定日志存放位置
pid file=/var/run/rsyncd.pid
hosts allow=192.168.1.0/24 –定义访问控制列表
[webroot] –共享名
path=/webroot –共享目录
comment= web root share with rsyncd –描述
read only=yes –是否以只读方式共享(将不能进行修改)
dont compress=*.gz *.bz2 *.tgz *.rar *.zip –当rsync中使用z开关时,以这些后缀结尾的文件不再进行压缩
auth users=user01 user02 –访问共享目录需要进行验证,跟系统用户没有关系
secrets file=/etc/rsyncd_user.db 用户名和密码的映射文件,其文件权限要other不能读,即权限最后设置为600,不然会验证出错
#man 5 rsyncd.conf –查看配置文件帮助手册
还可以指定max connections,最大连接数
3、创建用户和密码映射文件
# vim /etc/rsyncd_user.db –与主文件中设置的secrets file文件名对应
user01:123 –用户名:密码
user02:456
一定要记得更改密码文件的权限,不然将不成功:
# chmod 600 /etc/rsyncd_user.db –设置此文件的权限为600
4、启动rsync
第一种方法(依赖方式):对于访问量不是很大的建议使用依赖方式
# chkconfig rsync on –先将rsync启动
# service xinetd restart –然后重启它的依赖服务xinetd
第二种方法(独立方式):如访问量很大,为了提高性能,可以使用独立方式
# rsync –daemon –以独立模式启动服务
# vim /etc/rc.local –设置为开机启动,因系统开机会自动最加载rc.local文件
/usr/bin/rsync –daemon
5、客户端同步文件
第一种方法:
# rsync -avz –delete [email protected]::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
–delete 当目录有,源没有时,在目标删除源没有的内容,即可以保持两边的文件同步
第二种方法:
# rsync -avz –delete rsync://[email protected]/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 –密码
# chmod 600 /root/passwd.txt –必须设置600的权限才能使用
# rsync -avz –delete –password-file=/root/passwd.txt rsync://[email protected]/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
–password-file 指定用户名对应的密码文件,此文件最好是放在root目录中,并设置为隐藏文件。
*制作crontab任务计划:
# crontab -e
*/5 * * * * /usr/bin/rsync -avz –delete –password-file=/root/passwd.db rsync://[email protected]/webroot/a /var/tmp &> /dev/null
–每五分钟执行一次同步