Rsync

rsnapshot - 添加每個備份點參數的故障?

  • July 7, 2020

我正在嘗試從不同的伺服器環境進行 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,但我認為逗號是顯示停止符。我也嘗試用相同的結果替換整個參數字元串。我也嘗試過用反斜杠“轉義”逗號,無論是否帶有單引號和雙引號。

您不能在通過額外選項提供的參數中使用逗號:程式碼不允許。

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

引用自:https://unix.stackexchange.com/questions/597116