在 cron 中執行時的 Rsync 不起作用。Mac Os x Server 和 Linux Centos 之間的 Rsync
在終端中手動執行時,我在 Mac OS X Server 和 Linux Centos 之間進行了有效的 rsync 設置。
我輸入 rsync 命令,它要求輸入密碼,我輸入它然後關閉它,執行並完成。
現在我知道那是可行的,我著手通過 cron 完全自動化它。
首先,我通過在 Mac 伺服器上執行以下命令來創建 SSH 授權密鑰:
ssh-keygen -t dsa -b 1024 -f /Users/admin/Documents/Backup/rsync-key
輸入密碼,然後確認。然後我將 rsync-key.pub 文件複製到 linux 伺服器並放入 rsync 使用者 .ssh 文件夾並重命名為 authorized_keys:
/home/philosophy/.ssh/authorized_keys
然後我確保 authorized_keys 文件是文件夾 chmod 700 中的 chmod 600。
然後我為 cron 設置了一個 shell 腳本來執行:
#!/bin/bash RSYNC=/usr/bin/rsync SSH=/usr/bin/ssh KEY=/Users/admin/Documents/Backup/rsync-key RUSER=philosophy RHOST=example.com RPATH=data/ LPATH="/Volumes/G Technology G Speed eS/Backup" $RSYNC -avz --delete --progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH
然後賦予 shell 文件執行權限,然後使用 crontab -e 將以下內容添加到 crontab 中:
29 12 * * * /Users/admin/Documents/Backup/backup.sh
在上面的命令應該執行之後,我檢查了我的 crontab 日誌文件,我在日誌中得到了這個,沒有別的:
Feb 21 12:29:00 fileserver /usr/sbin/cron[80598]: (admin) CMD (/Users/admin/Documents/Backup/backup.sh)
所以我認為一切都按預期執行。但是當我檢查遠端伺服器時,沒有文件被複製。
如果我像往常一樣在終端中執行 backup.sh 文件,它仍然會提示輸入密碼,但這次是通過 Mac 鑰匙鏈系統而不是在控制台視窗中輸入。使用 Mac 鑰匙鏈,我可以將其設置為保存密碼,這樣它就不會再次要求它,但我確定當使用 cron 執行時,這個密碼不會被拾取。
這是我假設 cron 中的 rsync 失敗的地方,因為它需要密碼才能連接,但我認為製作 SSH 密鑰的整個想法是防止使用密碼。我在這裡錯過了一步或做錯了什麼嗎?
謝謝
斯科特
您可以創建沒有密碼的密鑰,當它要求它時,只需按 Enter,您將獲得一個未設置密碼的密鑰。僅將此密鑰用於受信任的內部連接。
然後將此密鑰與 cron 一起使用應該可以工作。