Rsync是Linux下非常不错的文件同步备份工具,安全性高、备份迅速、支持增量备,功能强大且高效。
服务端配置
Rsync服务的配置文件/etc/rsyncd.conf
,示例配置(带用户名密码配置):
pid file = /var/log/rsyncd.pid
lock file = /var/log/rsyncd.lock
log file = /var/log/rsyncd.log
port = 873
#address = 10.0.xx.xx
uid = root
gid = root
use chroot = no
read only = no
# test是模块名,多个模块只需要参考test依次添加即可
[test]
path= /root/data/
# 认证的用户名,这里用的rsync,在下面的密码文件中有定义
auth users = rsync
# 密码文件(下面定义)
secrets file = /etc/rsyncd.secrets
hosts allow= *
密码文件(/etc/rsyncd.secrets
)格式:
rsync:rsync_pass
以上用户名密码之间使用冒号分隔。
注意:密码文件必须要设置权限为600,使用chmod 600 /etc/rsyncd.secrets
设置即可,不然同步时会提示:
@ERROR: auth failed on module XXX
以上配置OK后,使用rsync --daemon
启动服务即可,如果配置需要调整,直接修改对应的配置文件即可,修改完立马生效,无需重启rsync服务。
客户端配置
上述服务端配置中test模块设置了使用用户名密码的方式访问,因此在客户端使用rsync同步时需要添加用户名密码相关的参数。
一个同步示例:
# /etc/rsync.pas文件需要手动创建哦
rsync -avz --password-file=/etc/rsync.pas rsync@10.1.xx.xxx::test/ /home/test/
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
-v,详细显示同步信息
-z,传输过程中加密
--password-file表示保存密码的文件,rsync同步时从此文件中获取密码信息,此文件同样需要设置访问权限为600。
注意:--password-file文件中的内容只保存密码即可,不需要保存用户名,否则会出现认证失败的错误,示例:
rsync_pass
远程目录的表示方式为:用户@Rsync服务器的IP::模块名/路径
最后一个参数是同步到的本地路径。
其他的参数,直接执行rsync就可以看到说明,这里不再一一说明。
其他
如果只要查看rsync服务器上的文件,可以使用以下命令(前提是所查看的模块在服务端配置了允许参看才可以):
rsync --list-only --password-file=/etc/rsync.pas rsync@10.1.xx.xxx::test/
如果需要定时同步日志,只需要把上述同步的命令,添加到shell脚本中,通过配置crontab
定期执行脚本就可以了。
对于大量文件的实时备份,可以考虑Rsync+inotify的机制,这里就不做介绍了,可以移步到这里。
Windows下的Rsync
Windows下需要安装cwRsync(客户端,请自行下载,服务端是cwRsyncServer),cwRsync其实是采用cygwin移植的Linux下的rsync命令,因此在同步某个盘符的时候需要注意路径的写法,下面是一个示例:
如果需要处理C:WORK*下的文件,那么需要写成/cygdrive/c/work/*
rsync -r /cygdrive/c/work/ remotehost:/home/user/work/
注意
安装完Rsync后,将安装目录下的bin目录添加到PATH环境变量中,就可以使用rsync命令了。安装Rsync是不需要单独安装cygwin的,当然,如果打算通过脚本来同步,安装一下cygwin还是有必要的,毕竟linux下的shell脚本比windows下的批处理要强大的多。