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