我有几个 VPS 搭载的是 Ubuntu 18.04 LTS。
其中一个 VPS 是备份主机,启动后rsnapshot
会备份自己的文件夹,并提取其他 VPS 上的远程文件夹。
这些是文件中的命令rsnapshot.conf:
#server1 (backup server)
backup /etc/ server1/
backup /home/ server1/
backup /opt/ server1/
backup /root/ server1/
backup /srv/ server1/
backup /usr/local/ server1/
backup /var/ server1/
exclude /var/cache/
exclude /var/lock/
exclude /var/log/
exclude /var/run/
exclude /var/spool/
exclude /var/tmp/
exclude logs/
#server2 (remote server)
backup server2:/etc/ server2/ +rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh
backup server2:/home/ server2/ +rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh
backup server2:/opt/ server2/ +rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh
backup server2:/srv/ server2/ +rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh
backup server2:/usr/local/ server2/ +rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh
backup server2:/var/ server2/ +rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh,--exclude=/var/cache/,--exclude=/var/lock/,--exclude=/var/log/,--exclude=/var/spool/,--exclude=/var/tmp/
使用rsnapshot configtest
,最后一行报告为配置错误。
我的目标是保存与主服务器相同的文件夹,并排除其中一些文件夹/var。
我已查阅了手册和在线的几个页面,但我不明白在单个备份行中排除多个文件夹的正确语法是什么。
先谢谢您的帮助。
=== 更新 ===
我已将最后一个命令更改为:
backup server1:/var/ server1/ +rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh,exclude_file=/etc/rsnapshot.exclude
文件rsnapshot.排除包含:
/var/cache/
/var/lock/
/var/log/
/var/run/
/var/spool/
/var/tmp/
logs/
现在命令执行没有错误,但对于 server1 它已经复制了整个/var目录,包括要排除的文件夹。相反,/var对于其他服务器。
答案1
您必须用空格而不是逗号分隔 rsync 的参数。例如,不要这样:
+rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh,exclude_file=/etc/rsnapshot.exclude
你应该使用:
+rsync_long_args=--rsync-path=/usr/local/bin/rsync_wrapper.sh exclude_file=/etc/rsnapshot.exclude
rsnapshot 会将参数逐字逐句地传递给 rsync。如果您使用逗号,它会认为所有内容 ( --rsync-path=/usr/local/bin/rsync_wrapper.sh,exclude_file=/etc/rsnapshot.exclude
) 都是单个的,因此无法正常工作。rsnapshot 的日志文件中应该有错误。
至少这是我的经验。我尝试添加一个选项,rsync_long_args
但发现 rsnapshot 忽略了我。当我将逗号改为空格时,它开始工作。请尝试一下,看看它是否也适用于您。
答案2
从第二个排除项开始包含双破折号,并用制表符分隔。如下所示:
backup server2:/var/ server2/ exclude=/var/cache/ --exclude=/var/lock/ --exclude=/var/log/ --exclude=/var/spool/ --exclude=/var/tmp/
请注意第一个排除项缺少“--”。我不知道为什么这样做有效,但确实有效。