我正在尝试从不同的服务器环境进行 rsnapshot,这需要不同的 rsync 参数。我的问题的解决方法似乎是使用每个备份点参数。
来自手册(rsnapshot)
备份 /var/ localhost/ one_fs=1
这与其他示例相同,但请注意第四列。这是指定每个备份点选项以覆盖全局设置的方式。这个额外的参数可以采用多个选项,以逗号分隔。
当指定每个备份 rsync 排除时,它是最有用的:
备份 root@somehost:/ somehost +rsync_long_args=--exclude=/var/spool/??
注意+号。这告诉 rsnapshot 添加到传递给 rsync 的参数列表中,而不是替换列表。
这个问题是我要添加的参数中有一个逗号。再多的引号似乎也没有效果。
这是我要添加的内容
+rsync_long_args=--chmod D0770,F0660
这是输出(来自我的一项带有单引号的试验)
/usr/local/bin/rsnapshot configtest
----------------------------------------------------------------------------
ERROR: /usr/local/etc/rsnapshot.conf on line 202:
ERROR: backup backupadmin@prime::shared_folders/ prime/shared_folders \
+rsync_long_args='--chmod D0770,F0660' - Syntax error on \
line 202 in extra opts: +rsync_long_args='--chmod \
D0770,F0660'
ERROR: ---------------------------------------------------------------------
任何指导表示赞赏。
它实际上有点复杂,因为我需要更改short_args和long_args,但我认为逗号是最重要的。我也尝试替换整个参数字符串,结果相同。我还尝试过用反斜杠“转义”逗号,所有带或不带单引号和双引号。
答案1
您不能在通过额外选项提供的参数中使用逗号:代码不允许这样做。
代码rsnapshot
本身:
sub parse_backup_opts {
....
# split on commas first
@pairs = split(/,/, $opts_str);
....
}
在这种情况下,我的建议是rsnapshot.conf
每个源系统使用不同的文件。您可以提取公共部分,以便每个*.conf
文件由尽可能少的行组成:
include_conf /usr/local/rsnapshot/DEFAULT.inc
lockfile /var/run/rsnapshot-remoteserver.pid
rsync_short_args -avzSi
rsync_long_args --delete --delete-excluded --numeric-ids --fake-super ...
snapshot_root /backup/rsnapshot/remoteserver
one_fs 1
backup remoteuser@remoteserver:/ root/
backup remoteuser@remoteserver:/home/ home/
exclude_file /usr/local/rsnapshot/EXCLUDE-linux.inc
将通用配置放入DEFAULT.inc
,并将通用排除放入诸如EXCLUDE-linux.inc
.然后您可以使用带有标志的rsnapshot
配置文件-c
rsnapshot -c /usr/local/rsnapshot/remoteserver.conf hourly