Backuppc

BackupPC - 為什麼它使用 rsync –sender –server …?

  • November 24, 2021

我正在 CentOS 5.5 伺服器上試驗 BackupPC。我幾乎用預設值設置了所有東西。

我嘗試為主機的 /www 目錄設置基本備份。備份失敗並出現以下錯誤:

full backup started for directory /www
Running: /usr/bin/ssh -q -x -l root target /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/
Xfer PIDs are now 30395
Read EOF: Connection reset by peer
Tried again: got 0 bytes
Done: 0 files, 0 bytes
Got fatal error during xfer (Unable to read 4 bytes)
Backup aborted (Unable to read 4 bytes)
Not saving this as a partial backup since it has fewer files than the prior one (got 0 and 0 files versus 0)

首先,是的,我設置了 ssh 密鑰,允許我在不需要密碼的情況下通過 ssh 連接到目標伺服器。

在排查過程中,我直接在命令行嘗試了上面的ssh命令,就掛了。查看 SSH 調試消息的結尾,我得到:

debug1: Sending subsystem: /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/
Request for subsystem '/usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . /www/' failed on channel 0

接下來我開始查看 rsync 標誌。我不認識--server--sender。查看 rsync 手冊頁,果然,我沒有看到任何關於--server--sender其中的任何內容。裡面的那些是為了什麼?

查看 BackupPC 配置我有這個:

RsyncClientPath = /usr/bin/rsync
RsyncClientCmd = $sshPath -q -x -l root $host $rsyncPath $argList+

對於論點,我列出了以下內容:

--numeric-ids
--perms
--owner
--group
-D
--links
--hard-links
--times
--block-size=2048
--recursive

注意沒有--server,--sender--ignore-times。為什麼要添加這些東西?這是問題的一部分嗎?

這些--server --sender是在管道上執行 rsync 時使用的選項。rsync 伺服器設置在遠端端,因此它可以執行所有校驗和和增量編碼魔術,以便您僅通過線路傳輸更改的位。這可能沒有記錄在手冊頁中,因為它們是自動添加的,通常不需要知道或關心它們。

來自man rsync(1)

選項 –server 和 –sender 由 rsync 在內部使用,並且在正常情況下不應由使用者鍵入。在某些情況下可能需要了解這些選項,例如在設置只能執行 rsync 命令的登錄時。例如,rsync 發行版的支持目錄有一個名為 rrsync(用於受限 rsync)的範例腳本,可用於受限 ssh 登錄。

引用自:https://serverfault.com/questions/248358