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下用户权限指派,其他用户无法访问网页文件。同时将执行相关的权限取消,否则上传到服务器文件都加上了执行权限。
参考资料