在 Rsnapshot 中,排除远程文件夹的配置错误

在 Rsnapshot 中,排除远程文件夹的配置错误

我有几个 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/

请注意第一个排除项缺少“--”。我不知道为什么这样做有效,但确实有效。

相关内容