Jade Dungeon

rsync

rsync配置

密码文件,权限必须是600:/etc/rsyncd.secrets

user01:123456 

欢迎信息文本:/etc/motd

Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-34-generic x86_64)
 * Documentation:  https://help.ubuntu.com/ 

/etc/rsyncd.conf。主要配置文件:

motd file=/etc/motd
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
port=873
 
[jade-archived]
comment = jade's archived file
path = /media/file_data/archived
secrets file = /etc/rsyncd.secrets
auth users = user01
gid = user01
uid = user01
use chroot = yes
read only = yes
list = yes 

启动服务器

sudo rsync --daemon --config=/etc/rsyncd.conf 

客户端同步:

rsync -vzrtopg --delete --progress user01@127.0.0.1::jade-archived /mnt/backup 

比较重要的几个 rsync 选项:

  • --archive 我们要备份,所以请保留所有信息
  • --one-file-system 只备份这个文件系统的内容,不要跑到 /sys 啊 /proc 啊 /dev 啊 /tmp 这类目录里去了。这也省得自己手动排除
  • --numeric-ids 文件的所有者信息使用数字而不要解析成用户名/组名。避免在跨系统使用时出差错
  • --exclude-from=root.exclude 从root.exclude文件中读取额外的排除列表
  • --acls --xattrs 保留文件 ACL 和扩展属性

我发现的/里需要排除的目录如下:

/var/cache/*/*
/var/tmp/
/var/abs/local/
/var/lib/mongodb/journal/

其中第一项写成那样是因为,我要保留 /var/cache 下的一级目录。

常见问题

执行rsync同步命令时,报错如下:

rsync error:error starting client-server protocol(code 5) at 
main.c(1503)[sender=3.0.6]

执行的rsync命令rsync_forum.sh为:

day=date -d today +%Y%m%d_%H
/usr/bin/rsync -avP –port=3189 -C –exclude=.svn/ –exclude=xdebug_log/ –exclude=logs/ /www/web/forum/ 192.168.1.111::forum >> /opt/rsynclog/$day.log 2>&1

即,将当前服务器的/www/web/forum/文件同步到远程服务器192.168.1.111上的 forum模块。

因此,报错是因为rsync在执行同步时,未找到192.168.1.111配置的forum模块, 该模块是在配置文件rsyncd.conf中配置的。

找到配置文件(我服务器是/etc/rsyncd.conf),添加forum模块配置:

[forum]
path = /www/web/forum
comment = web
ignore errors
read only = no
list = no
transfer logging = no

然后,重新启动rsync

命令行指定目标

http://www.ruanyifeng.com/blog/2020/08/rsync.html