我环顾四周,没有找到我的问题的确切答案,即如何指定仅从远程文件系统备份中排除的目录。
假设我有两台机器:一台台式机(服务器)和一台笔记本电脑。我在每个目录上的主目录都是/home/tom
.及其配置文件rsnapshot
位于桌面 ( ) 上。因此,命令是localhost
:backup
backup /home/tom/ localhost/
backup tom@laptop:/home/tom/ laptop/
一切都很好。但假设我已经使用了/home/tom/music
笔记本电脑。它是从桌面复制过来的东西,而且很大。但是当我/home/tom/music/
只从备份中排除tom@laptop
:
exclude tom@laptop:/home/tom/music/
但这并没有导致music/
我被排除在外,反而导致我的疱疹发作。
这样做:
exclude /home/tom/music/
当然会导致music/
被排除在备份之外localhost
,laptop
并导致我的 PID 突然爆发。
我现在的解决方案是简单地rsnapshot
为每个主机拥有单独的配置文件,并rsnapshot
为每个主机执行一次。但这应该是没有必要的。
那么如何仅从远程(笔记本电脑)备份中排除目录呢?
答案1
该行还有第四个字段backup
,可用于此类任务。所以你的线路应该如下所示。
backup tom@laptop:/home/tom/ laptop/ exclude=/home/tom/music
backup
您可以通过用逗号分隔选项来添加更多选项。如需进一步阅读,请参阅man
的页面rsnapshot
。
答案2
由于这是我的谷歌搜索的最高结果,我认为以下内容也可能对其他人有帮助:
托马斯的命令有效,但它会删除所有全局定义的排除/etc/rsnapshot.conf 中的指令
为了保持现存的排除你可以使用以下内容
backup tom@laptop:/home/tom/ laptop/ +rsync_long_args=--exclude=/home/tom/music
答案3
注意等号托马斯的例子。如果您错过了它,rsnapshot configtest
则会失败并显示错误,建议您使用选项卡!
您也不需要exclude=
像其他一些问答所建议的那样在前面加上加号 - 如果您这样做,rsnapshot configtest
则会因“串联或字符串中的未初始化值”而失败。
这是一个包含多个排除的示例:
[..]
exclude /foo1
exclude /foo2
[..]
backup /from /to exclude=/bar,exclude=/baz
另请注意,不包括以斜线开头的内容相对于备份根目录(即相对于 $snapshot_root/from)而不是相对于服务器根目录。这让很多海报都大吃一惊!