我的 rsnapshot 凍結沒有錯誤
我嘗試製作備份系統。我嘗試使用 rsnapshot。
描述:
帶有 rsnapshot 的客戶端將數據放入 sshfs-mounted 文件夾(sftp 備份伺服器)。我製作了 ssh-key,安裝了它,一切都很好。
在 rsnapshot conf 中,我啟用了 link_dest=1,因為預設值 0 使 rsnapshot 對 ssh 掛載文件夾上的硬連結哭泣。
錯誤描述:
我使用 cron 進行了 rsnapshot 自動啟動。幾天后,我檢查了我的文件夾,發現它們很小。(所有數據為 4gb,但文件夾約為 300mb、400mb)。
我檢查了複製到 ssh 文件夾。
cp data ssh_folder.
一切正常,速度也不慢:大約 30 分鐘,我在 ssh 文件夾上看到了我的 4gb。好的。我手動啟動 rsnapshot,文件很詳細。
rsnapshot -V hourly
唯一的錯誤是 chown 錯誤(使用 ssh 並不那麼容易) 日誌文件中也沒有任何內容。它只是凍結在某個文件上。
這是第一個奇怪的想法。第二個是:我嘗試進行增量備份,以盡量減少同步到 ssh 的時間。但是當我檢查我的新每小時目錄時,我只看到我的部分數據,而不是新數據或指向 old_data 的連結。只是新文件夾中的相同文件。
非常感謝任何建議。
UPD:沒有大文件。這是一個網路伺服器
UPD:使用 strace
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout) select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
UPD:我認為我找到了解決方案。我的備份文件夾在我的主文件夾中,我嘗試備份。在我排除它之後,一切似乎都很好,但沒有。0(超時)來得晚得多。來自其他(接收方)的 strace:
--- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} --- --- stopped by SIGSTOP --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} --- --- stopped by SIGSTOP --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} --- --- stopped by SIGSTOP --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} --- --- stopped by SIGSTOP --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} --- --- stopped by SIGSTOP --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} --- select(5, [3], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler)
我認為我找到了解決方案。有 2 個錯誤。
首先 - 我的備份文件夾在同步文件夾中。(我在 /home/backup 中安裝了備份伺服器,但同步了整個 /home)。
所以 rsync 總是給 timeout (0) 試圖做這個奇怪的遞歸任務。
第二個問題是連接。經過一段時間的同步後,伺服器和客戶端之間開始出現一些不同步(我認為是提供商限制,不是連接問題,因為它已正確安裝)。這也導致超時(0)。
如果只有我有第二個錯誤 - 這根本不是問題,因為幾個 rsync 啟動並且文件夾將在伺服器上。但是因為我有第一個錯誤,rsync 無法繼續同步並一次又一次地啟動。
不要使用 sshfs,因為它的穩定性並不總是一流的,而且它的行為
rsync
可能不是最佳的。相反,配置
rsnapshot
為直接使用 rsync-over-ssh。rsnapshot
手冊頁中的一個範例:備份root@foo.com:/etc/foo.com/
查看
rsync
手冊頁以獲取更多資訊。