rsnapshot - 添加每个备份点参数时出现故障?

rsnapshot - 添加每个备份点参数时出现故障?

我正在尝试从不同的服务器环境进行 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

相关内容