Linux

在 cron 中執行時的 Rsync 不起作用。Mac Os x Server 和 Linux Centos 之間的 Rsync

  • February 21, 2011

在終端中手動執行時,我在 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 一起使用應該可以工作。

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