Ssh

Crontab + Rsync - 沒有任何反應:(

  • November 1, 2014

您好,我的 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選項。*

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