可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。
官方文档:http://www.samba.org/ftp/rsync/rsync.html
rsync特性:
支持拷贝特殊文件如连接文件,设备等;
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排出功能。
可以做到保持原文件或目录的权限/时间/软连接/属主/组等所有属性均不变
可以使用rcp/rsh/ssh等方法来配合传输文件(rsync本身部队数据加密)
可以通过socket(进程)传输文件和数据。
支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行传输备份及镜像。
rsync参数
-v详细模式输出,传输时的进度等信息
-z传输时进行压缩提高效率
-r对子目录以递归模式,既目录下的所有目录都同样传输
-t保持文件时间信息
-o保持文件属主信息
-p保持文件权限
-g保持文件属组信息
-P显示同步的过程及传输时的进度
-a递归模式,保持文件所有信息,等于–rtopgDI
-D保持设备文件信息
-I保留软链接
-e使用的信道协议,制定替换rsh的shell程序,例如:ssh–exclude=PATTERN指定排除不需要传输的文件模式
工作中常用的参数avz保持同步目录文件属性。
如果在shell脚本中,可以使用az参数,省略v
rsync的工作方式:
1、主机本地的数据传输(类似CP命令的功能)
拷贝文件
#rsync/test/test2
拷贝目录
#rsync–avz/tmp/home
2、借助rcp,ssh等通道来传输数据
通过远程shell(rcp/ssh等)传输可以分为两种情况,其语法为
本地拉取:rsync–avz–e‘ssh–p52113’oldboy@10.0.0.10:/home/etc/hosts
本地推送:rsync–avz/etc/hosts–e‘ssh–p52113’oldboy@10.0.0.10:/home
3、以守护进程的方式来传输数据(工作中常用)
服务端配置
[root@eric~]#vi/etc/rsyncd.conf//默认etc目录下没有这个文件,要手动创建
#rsync_config_______________start
#createdbyoldboy15:012007-6-5
#QQ31333741blog:http://oldboy.blog.51cto.com
##rsyncd.confstart##
uid=rsync#用哪个用户
gid=rsync#用哪个组
sechroot=no#不使用chroot
maxconnections=200#最大并发数
timeout=300#超时时间
pidfile=/var/run/rsyncd.pid#进程号文件
lockfile=/var/run/rsync.lock#锁文件,启动/停止服务会用到
logfile=/var/log/rsyncd.log#日志文件
[oldboy]#这里是认证的模块名,在client端需要指定
path=/oldboy/#备份服务器的备份路径
ignoreerrors#忽略错误
readonly=false#只读为假,可写可上传,否则只能下载,相反readonly=yes
list=false#列表文件为假,就是可以列文件,相反list=yes
hostsallow=10.0.0.0/24#允许谁来连,权限控制
hostsdeny=0.0.0.0/32#拒绝谁来连,4个0表示全都允许
authusers=rsync_backup#认证用户,虚拟用户
secretsfile=/etc/rsync.password#密码文件
#rsync_config_______________end
[root@eric~]#dos2unix/etc/rsyncd.conf//windows拿到linux的东西,尽量执行下,特别是脚步
[root@eric~]#useradd–s/sbin/nologoin–Mrsync//添加rsync用户
[root@eric~]#mkdir-p/oldboy//创建路径
[root@eric~]#chown-Rrsync.rsync/oldboy
[root@eric~]#ls-ld/oldboy/
drwxr-xr-x2rsyncrsync4096Sep2300:25/oldboy/
[root@eric~]#echo"rsync_backup:123456">/etc/rsync.password//配置密码文件
[root@eric~]#cat/etc/rsync.password
rsync_backup:123456
[root@eric~]#chmod600/etc/rsync.password//必须为600权限,为了安全
[root@eric~]#rsync--daemon//开启rsync服务
[root@eric~]#netstat-lntp|grep873//查看端口
[root@eric~]#ps–ef|greprsync|grep–vgrep//查看进程
[root@eric~]#echo“/usr/bin/rsync--damon”>>/etc/rc.local//开机自启动
客户端配置
[root@eric6.ssh]#cat/etc/rsync.password
123456
[root@eric6.ssh]#chmod600/etc/rsync.password
[root@eric6.ssh]#rsync-avz/testrsync_backup@10.0.0.250::oldboy--password-file=/etc/rsync.pasword
sendingincrementalfilelist
authorized_keys
sent582bytesreceived27bytes22.15bytes/sec
totalsizeis601speedupis0.99
这时候在服务端就能查看到推送过来的test目录