Debian
腳本中的 RSync 錯誤
在我的工作中,我們有一個中央備份伺服器,執行 Debian Wheezy,以及每個站點的現場伺服器,也執行 Debian Wheezy。
幾週前,中央辦公室技術人員通過電子郵件告訴我,前一天晚上備份沒有正確完成。從那以後,我們一直在進行故障排除,但似乎仍然無法解決問題。唯一吐槽的是
cron
一封電子郵件中的以下內容:rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [generator=3.0.9] rsync error: received SIGUSR1 (code 19) at main.c(1316) [receiver=3.0.9]
Google搜尋該片語幾乎一無所獲。我從 2002 年發現了一篇關於移除
-v
開關的文章,但腳本中沒有使用它。每晚執行的腳本如下:#!/bin/sh set -e x="delete --exclude-from=r_filter --delete-excluded" rsync -aq --$x site1.company.com:/etc /BACKUPS/site1 rsync -aq --$x site1.company.com:/home /BACKUPS/site1
它設置為在周一至週五凌晨 3:00 從中央備份伺服器執行。如果他們在白天嘗試手動執行它,它執行良好(因為大多數文件之前都已備份?)。它正在使用
-a
開關,所以我認為它可以存檔打開的文件?這就是我能想到的。解決這個問題的下一步是什麼?
如果您在某個時間在 crontab 中執行作業時發生了某些事情,而如果您在一分鐘內執行該作業的地方進行了測試,那麼它不會發生,有兩種可能的可能性:
- crontab 上有另一個程序會以某種方式乾擾您的程序。
- 那個時候有一個人為的過程,比如保洁人員拔掉電腦插頭給吸塵器插上電源。
您的 rsync 程序在晚上的某個時間接收信號。我要尋找的第一件事是 crontab 中的另一個程序發送它不應該發送的信號。
(如果某些東西從命令行執行良好但從 cron 執行時失敗,那是完全不同的魚壺。)