這是我的自動備份資料庫 SHELL 指令碼, 它將在 VPS 伺服器上運行, 匯出資料庫後壓縮成包, 然後通過 scp 命令將壓縮包備份到另一台伺服器( x4100 ) 中.
代碼如下 |
複製代碼 |
#!/bin/bash D="/root/backup" T=`date +%Y%m%d` if [ ! -d "${D}/${T}" ]; then /bin/mkdir "${D}/${T}" fi /usr/local/mysql/bin/mysqldump --host=localhost --user=root --password=資料庫密碼 要備份的資料庫名 > "${D}/${T}/${T}.sql" cd ${D} /bin/tar -czf "${D}/${T}.tar.gz" "${T}" /usr/bin/scp "${D}/${T}.tar.gz" kuco@x4100.unix-center.net:~/web_backup/studyday.net |
2, 設定 Crontab , 更多的 crontab 介紹在這裡
代碼如下 |
複製代碼 |
crontab -e 30 04 * * * /bin/sh /root/backup/web_backup.sh |
3, 可能會遇到的問題:
在 STEP 1 中 scp 遠程複製命令時會遇到輸入密碼的提示, 如果沒有密碼輸入, 會導致複製不成功. 通過百度找到瞭解決的辦法.
1, 在 VPS 伺服器上的 ~/.ssh/ 目錄下產生密鑰檔案:
代碼如下 |
複製代碼 |
mkdir -p ~/.ssh ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa |
2, 在 x4100 伺服器上配置:
代碼如下 |
複製代碼 |
mkdir -p ~/.ssh touch ~/.ssh/authorized_keys |
3, 將 VPS 伺服器的 ~/.ssh/id_rsa.pub 內容追加到 x4100 伺服器的 ~/.ssh/authorized_keys 裡面
這樣就可能在調用 scp 命令時沒有密碼輸入提示了.