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 = jacklau
gid = jacklau
use chroot = no
read only = no

test是模块名,多个模块只需要参考test依次添加即可

[test]
path= /jacklau/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下的批处理要强大的多。

标签: CentOS,Rsync

添加新评论