Shell-Script

需要密碼時在 cronjob 中使用 rsync

  • February 12, 2017

基本上我有一個 bash 腳本,它從我的伺服器獲取數據以執行備份。

現在我必須手動啟動該腳本,輸入密碼,然後等待它完成。

我想設置一個處理備份的 cronjob。

但我真的不知道如何處理 cronjob 中的密碼。

我也不能為此使用密鑰,因為我的提供者沒有提供配置它們所需的機制。

我對我的主文件夾具有 SSH 訪問權限,但在我的主文件夾中,除了目錄之外,我沒有寫訪問權限http(s)docs。所以我無法創建必要的~/.ssh/目錄及其內容以通過密鑰登錄。

這是我用來備份到另一台機器的命令:

rsync -av -e "ssh -i /root/ssh-rsync-valhalla-key" \
 --exclude lost+found \
 --delete-before \
 /mnt/backup/ \
 user@192.168.1.99:/cygdrive/r/\!Backups/Niflheim &

因此,您可以使用 將-i密鑰文件傳遞給 ssh。當然,在您的範例中,這意味著如果有人知道文件名,則密鑰文件本身將可以通過 HTTP 共享。

你能啟動一個守護程序並保持它執行嗎?如果是這樣,您可以rsync在守護程序模式下執行。

然後在客戶端上,您將連接一個rsync://url。對於授權,您可以將其限制為僅您的 IP,我認為沒有等效的 SSH 密鑰。

您需要一個 rsyncd.conf,它可以在任何地方,例如:

[backup]
   path = /path/you/want/to/sync
   read only = true
   hosts allow = 1.2.3.4

然後啟動守護程序..

rsync --daemon --config=rsyncd.conf

然後你可以嘗試從中同步:

rsync -av rsync://server.ip/backup /local/backup/dir

引用自:https://unix.stackexchange.com/questions/26865