自動將資料庫等資料備份到Gmail
| 七月 16, 2005 | 沒有迴響 | 沒有引用 | 1649 reads | Size: L, M, S | Edit: P, C || Category: Unix-like. |
Gmail 擁有 2G 的超大容量,而且品質頗穩定,不好好利用真的太可惜了。
其實好像本來就有一些教學有寫備份的方法,其中比較有名的,應該就是 GSLin 加上 GnuPG 的方法 和 Astaka 的 Script 備份 ,前者的方法很不錯,不過好像會有不支援 uuencode 的問題,送到 gmail 後不會顯示成檔案,而是一串亂碼,我總不可能閒到還要每次去複製貼上來改吧。
而後者的方法滿不錯的,不過主要是利用可支援 mime 的 mail 軟體,才能讓 gmail 順利辨識附加檔案。所以決定用後者的方法去作修改。
首先必須安裝 mutt,放在 /usr/ports/mail/mutt
然後就可以複製這份 script 來修改成你的版本
#!/bin/sh
###########################################################
# Backup Mysql Datebase To Email
#
# Author : Astaka Wang(astaka@astaka.idv.tw)
# Modify : ajer001
###########################################################
#where you want to save the backup files.
BACKUP_PATH=備份檔案的儲存路徑
#what mail you want to mail to.
RECEIVE_MAIL=填入e-mail account
#what your MySQL database server root's password.
MYSQL_ROOT_PASSWORD=MySQL資料庫伺服器的root密碼
#what database in MySQL server you want to backup.
MYSQL_BACKUP_DATABASE_1=欲備份MySQL內的第一個資料庫名稱
MYSQL_BACKUP_DATABASE_2=欲備份MySQL內的第二個資料庫名稱
#what backup filename you want to save.
MYSQL_BACKUP_DATABASE_FILENAME_1=欲儲存備份的第一個檔案名稱
MYSQL_BACKUP_DATABASE_FILENAME_2=欲儲存備份的第二個檔案名稱
#Script will add the system time to filename automatic
#1.Dump mysql database from mysql server
/usr/local/bin/mysqladmin -uroot -p$MYSQL_ROOT_PASSWORD flush-logs
/usr/local/bin/mysqldump $MYSQL_BACKUP_DATABASE_1 -uroot -p$MYSQL_ROOT_PASSWORD --opt > $BACKUP_PATH/$MYSQL_BACKUP_DATABASE_FILENAME_1.sql
/usr/local/bin/mysqldump $MYSQL_BACKUP_DATABASE_2 -uroot -p$MYSQL_ROOT_PASSWORD --opt > $BACKUP_PATH/$MYSQL_BACKUP_DATABASE_FILENAME_2.sql
#2.Compress the sql file
/usr/bin/tar -zcvpf $BACKUP_PATH/Mysql_Backup-`date +%y-%m-%d`.tar.gz $BACKUP_PATH/$MYSQL_BACKUP_DATABASE_FILENAME_1.sql $BACKUP_PATH/$MYSQL_BACKUP_DATABASE_FILENAME_2.sql
/bin/rm $BACKUP_PATH/$MYSQL_BACKUP_DATABASE_FILENAME_1.sql $BACKUP_PATH/$MYSQL_BACKUP_DATABASE_FILENAME_2.sql
#3.Use metasend to send the compressed file to a mail account
/usr/local/bin/mutt -s "Mysql_Backup-`date +%y-%m-%d`" -a $BACKUP_PATH/Mysql_Backup-`date +%y-%m-%d`.tar.gz $RECEIVE_MAIL < /dev/null
/bin/rm $BACKUP_PATH/Mysql_Backup-`date +%y-%m-%d`.tar.gz
因為我有兩個資料庫想備份,所以增加了一個備份的項目,如果不需要可以把相關的移除,只備份一個資料庫。並且改成 freebsd 的語法,還有改成 mutt 的來送信。
接著,只要 chmod 成可執行檔案,因為裡面有 mysql 密碼,所以要注意設定好相關權限,並且丟到 crontab 去跑即可。
如此就完成了,可以到你的 gmail 或其他信箱收收看是否正常,也可以加上規則。讓他自動幫你分類,方便管理。
此外,也可改變一下這份 script,讓他幫你備份其他重要檔案,例如 passwd、master.passwd等等重要的系統檔案。
#!/bin/sh
###########################################################
# Backup File To Email
#
# Author : Astaka Wang(astaka@astaka.idv.tw)
# Modify : ajer001
###########################################################
#where you want to save the backup files.
BACKUP_PATH=備份檔案的儲存路徑
#what mail you want to mail to.
RECEIVE_MAIL=填入e-mail account
#what file you want to backup
BACKUP_FILE_1=要備份的檔案路徑
#Script will add the system time to filename automatic
#1.Backup Files
/usr//bin/tar -zcvpf $BACKUP_PATH/File_Backup-`date +%y-%m-%d`.tar.gz $BACKUP_FILE_1
#3.Use metasend to send the compressed file to a mail account
/usr/local/bin/mutt -s "File_Backup-`date +%y-%m-%d`" -a $BACKUP_PATH/File_Backup-`date +%y-%m-%d`.tar.gz $RECEIVE_MAIL < /dev/null
/bin/rm $BACKUP_PATH/File_Backup-`date +%y-%m-%d`.tar.gz
如此即可。 try it....

