自動將資料庫等資料備份到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....

     




Leave A Comment: