rsync 的配置与使用

我的 rsync 主要就是用来同步 Vimwiki 生成的 wiki。

安装与配置

默认端口 873,如果服务器在 NAT 后面,开启此端口

FreeBSD

cd /usr/ports/net/rsync && make install clean

/usr/local/etc/rsyncd.conf

/usr/local/etc/rsyncd.pas

Ubuntu

apt-get install rsync

/etc/rsyncd.conf

/etc/rsyncd.pas

配置文件

配置文件设置的系统差异仅是部分文件路径不同,以下为 Ubuntu 示例

#/etc/rsyncd.conf
uid = nobody
gid = nogroup
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[wiki]
comment=web server sync
path=/path/to/wiki/
auth users=username
secrets file=/etc/rsyncd.pas
read only= false
uid = username
gid = groupname

注:文件夹wiki应该将权限赋wiki权限下对应的uid名称,否则传输文件时将出现文件权限问题

新增密码文件rsyncd.pas,内容如下:

wiki_user:123456

然后更改密码文件权限为600,并设置服务自启动

# FreeBSD
chmod 600 /usr/local/etc/rsyncd.pas
echo 'rsyncd_enable="YES"' >> /etc/rc.conf	# 必须两个">",一个表示复写,两个才是追加
/usr/local/etc/rc.d/rsyncd start

# Ubuntu
chmod 600 /etc/rsyncd.pas
/etc/default/rsync 
RSYNC_ENABLE=false	# 将false 改为 true;若使用 xinetd,设置为 inetd
/etc/init.d/rsync start

在服务器上测试

比如将家目录下test文件夹下所有内容同步到服务器设定的wiki文件夹,客户端使用命令

rsync -zvrtpt --delete --password-file=/path/to/server.pas
 ~/path/to/sync/ wiki_user@host::wiki 

注意:此时客户端使用的server.pas文件与服务端的不一样,只需保存密码即可,不用前面的用户名

在 Windows 客户端使用 rsync

在以下链接下载 Free Edition 的 cwRsync

https://www.itefix.no/i2/cwrsync-get

在安装目录cwRsync下可以查看cwrsync这个批处理文件,里面有windows下客户端命令的参考

与unix命令的不同是,rsync命令无法识别windows带:(冒号)的路径名称,因此用cygpath工具替代以:

rsync -zvrtpt --delete --password-file="/cygdrive/d/path/to/rsyncd.pas"
 "/cygdrive/d/pass/to/sync/" wiki_user@host::wiki

此命令可以直接写入批处理如rsync.bat保存到cwRsync的bin目录下,并将其加入Windows的任务计划自动执行

注:为同步文件夹添加wiki读写用户的相关权限以及everyone用户的读取与列出文件夹目录权限,否则文件上传后将权限依据Windows下用户权限指派,其他用户无法访问网页文件。同时将执行相关的权限取消,否则上传到服务器文件都加上了执行权限。

参考资料

备份的使用