2013-01-12 55 views
0

我試圖設置mysql數據庫備份與cron爲了備份mysql數據庫到我的本地NAS存儲。我想將命令存儲在服務器上的.sh文件中,然後使用cron執行它。ssh mysqldump到遠程nas存儲與cron在.sh文件中存儲命令

到現在爲止我已經成功地得到命令將數據庫從遠程服務器,這是保存到我的NAS(QNAP):

mysqldump 
--add-drop-table 
--comments [database_name] 
-u [database_username] 
-p[database_password] | 
gzip -c | 
ssh [nas_user]@[nas_ip_address] 
    "cat > /share/mysqlBackup/backup-`date +%Y-%m-%d_%H-%M-%S`.sql.gz" 

以上工作正常,但問題我有分別是:

  1. 我不知道如何在遠程服務器上創建sh文件和

  2. 把 命令此命令要求的密碼每次你 執行它 - 有沒有辦法把它放在.sh文件中,這樣我可以 在後臺執行而不提示它/或在命令中定義 密碼?

如何解決上述問題的例子將非常受歡迎。

我相信期望()對話框可以使用,但再次 - 我不熟悉它,它的文檔有點讓我困惑。

回答

2

我猜密碼是要求ssh連接,所以你可以讓你的SSH連接無密碼。

在這裏的答案密碼的ssh連接解釋: https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password

完成此步驟以後在遠程服務器休息做的是非常簡單的,你寫你在sh文件上面給出的命令。並將其添加到cron以定期進行備份。

+0

感謝deniz,但是我在創建這些rsa鍵時遇到了困難 - 當我鍵入ssh-keygen時,我得到'沒有這樣的文件或目錄'。任何想法? –

+0

你能寫出整個錯誤行嗎 – denizeren

+0

好的 - 我擺脫了錯誤。我已經設法生成密鑰並將它們複製到NAS並且它都可以工作,但是現在它要求密碼 - 因爲我已經設置了密鑰 - 否則它不會真的那麼安全。所以使用'無密碼'選項,我發現並不理想。任何想法如何使用expect()對話框來做到這一點? –

相關問題