Crontab + Rsync - 沒有任何反應:(
您好,我的 crontab 中有趣的行如下所示:(通過執行 crontab -e 編輯並保存它)
23 * * * * rsync -av --delete root@example.de:/var/www/ /home/niklas >> /home/niklas/scripts/logfile
但是..這條線什麼都不做(在第 24 分鐘沒有使用頻寬,日誌文件中沒有輸出)有人可以告訴我出了什麼問題嗎?
順便說一句:伺服器的身份驗證通過無密碼的 pgp 密鑰進行。這就是為什麼使用者需要成為“niklas”的原因
編輯:
跑了
type rsync
它返回/usr/bin/rsync
但已經在路徑上:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
編輯2:
創建 /usr/bin/backup 包含:
rsync -av --delete root@example.com:/var/www/ /home/niklas/server4you_www >> /home/niklas/scripts/logfile
chmod +x’ed 並將 chrontab 中的條目更改為
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 16 * * * * /usr/bin/backup
仍然……它不工作,雖然 /var/log/syslog sais:
Aug 1 15:16:01 niklas-desktop CRON[9421]: (niklas) CMD (/usr/bin/backup)
請幫忙
編輯3:
改變
rsync -av --delete root@example.com:/var/www/ /home/niklas/server4you_www >> /home/niklas/scripts/logfile
到
/usr/bin/rsync -av --delete root@example.com:/var/www/ /home/niklas/server4you_www >> /home/niklas/scripts/logfile
正如預期的那樣,不會改變(不令人滿意的)結果。但是 `putting echo ‘xyz’ > log 將 xyz 寫入日誌文件
所以…正如您可能猜到的…我的問題仍未解決。
將 a 添加
|| echo "rsync died with error code $?"
到返回的備份腳本中:rsync died with error code 5
正如http://wpkg.org/Rsync_exit_codes所暗示的那樣,這意味著“啟動客戶端-伺服器協議時出錯”,所以我猜 ssh 有一些可疑之處。我再次使用帶密碼的 pgp 密鑰,但預設情況下,該密碼在啟動時由密鑰環解鎖,因此我無需輸入密碼即可 ssh root@example.com。是否可以向 rsync 發送 ssh 密鑰的密碼?
將 rsync 的完整路徑甚至放到您的*/usr/bin/backup*中,這樣該文件中的行就會開始
/usr/bin/rsync <your other options>
並嘗試放一條線
logger -t my_backup Hello from /usr/bin/backup
到您的 /usr/bin/backup 腳本並查看是否有任何內容記錄到 /var/log/messages (或其他日誌文件,具體取決於您的系統日誌設置)。或者,您可以將記錄器替換為
echo "Hello from /usr/bin/backup" >/tmp/backuptest
哦,有時 SELinux 可能會導致您遇到的問題。它在使用中嗎?
希望這可以幫助。
編輯:使您的 /usr/bin/backup rsync 行像
/usr/bin/rsync <your options> || echo "rsync died with error code $?" >> your_log
也許我們會明白為什麼 rsync 如此沮喪。
另一個編輯:好的,rsync 錯誤程式碼 5。這意味著
rsync error: error starting client-server protocol
大多數情況下,由於密碼錯誤,即使消息看起來更神秘。
如果您以 niklas 的身份手動執行 rsync 腳本,那是可行的,對嗎?
編輯 3:發現您提到的鑰匙圈。我認為 cron 在您登錄期間不使用與使用者 niklas 相同的密鑰環。這就是為什麼嘗試從 cron 執行登錄時登錄為 p00f 的原因。您可以為此使用無密碼的 RSA 密鑰並僅限制它執行 rsync 嗎?
編輯 4:使用RSYNC_PASSWORD環境變數。這可以通過將其放在備份腳本的頂部來完成:
export RSYNC_PASSWORD="myprecioussssssss"
或者,如果您想將密碼儲存在文本文件中,請創建一個文件並為rsync提供*–password-file選項。*
如果這不起作用,您可以向 rsync提供*-e ‘ssh -o IdentityFile=/path/to/your_file選項。*