[Linux&FreeBSD] 備份系統資料,MySQL 資料庫,PgSQL 資料庫的自動化 bash shell script 程式

來分享一個自己寫的 bash shell script,本身管理系上一些伺服器,但是要每天備份資料庫,系統檔案,以防系統整個 crash 掉,但是這個 script 可以對單一一台電腦做備份動作,當然裡面還可以加上 rsync 的動作,遠端備份到不同機器上面,我覺得這樣也可以,我在 Sayay BBS 上面的 ghost 大大版上看到 [Backup] Amanda,這套看起來不錯,可是一直沒有時間去玩,她網站的架構圖如下: chart-amanda-network (by appleboy46) http://amanda.zmanda.com/ 上面這個我還沒玩過,最近沒啥時間可以玩,不過大家可以去試試看,我目前還是用我自己寫的 script,那下面就是大概會介紹怎麼使用我的 bash script,非常簡單,很適合個人 linux 主機的備份喔。
############################################### # # 日期:2008.05.22 # 作者:appleboy ( appleboy.tw AT gmail.com) # 網站:http://blog.wu-boy.com # ###############################################
本檔案歡迎大家拿去使用,也可以進行修改,加上功能,或者是減少功能,目前有的功能如下: 1. 備份系統各類檔案 ex: /etc,/var/www/html 2. 備份 MySQL 資料庫,支援遠端備份 3. 備份 PgSQL 資料庫 4. 定期刪除幾天前備份資料,避免系統空間過於浪費 5. 每天定期 FreeBSD port tree 更新 6. 支援 rsync 備份到遠端系統 步驟一:就是下載這個 script 檔案,然後放到系統的哪個資料夾,然後修改檔案第一行
#!/usr/local/bin/bash
#
# 使用 bash run my script,上面是 FreeBSD 路徑
# Linux 請用 /bin/bash
步驟二:開始設定 script 基本設定 ######### 開始設定 ##########
#
# 設定刪除幾天前資料
#
RETENTION_PERIOD="14"
你可以選擇刪除幾天前的資料,寫14的話,就是保溜14天以內的資料喔
#
# 設定檔案名稱
#
backup_system_file="www_database.txt"
backup_mysql_file="mysql_database.txt"
backup_pgsql_file="pgsql_database.txt"
選擇你要備份的地方:
#
# 您所要備份的地方
#
backup_home="/home/backup"
首先:www_database.txt,這個檔案裡面請寫你要備份的資料夾,範例如底下:
#
# 格式:
# 備份資料夾  壓縮檔名
/usr/local/etc etc.tar.gz
/usr/home/appleboy appleboy.tar.gz
/usr/local/www/apache22/data www-data.tar.gz
mysql_database.txt 部份:
#
# mysql 資料庫部份格式
# 主機名稱 資料庫名稱 資料庫character_set
localhost AP  utf8
localhost WebHD  utf8
pg_database.txt 部份
#
# 只需要填入 database 就好
#
adwii
以上檔案,請不要在檔案裡面加上註解,或者是在第一行加入 # ,這樣都不行的喔
#
# 是否啟動備份系統檔案:1:備份 0:略過
#
data_enable_backup="0"
#
# 設定mysql相關參數
#
mysql_db_user="backup"
mysql_db_passwd="wwwadmin"
#
# 是否啟動備份 mysql:1:備份 0:略過
#
mysql_enable_backup="0"
#
# 設定pgsql相關參數
#
pgsql_db_user="appleboy"
pgsql_db_passwd="XXXXX"
#
# 是否啟動備份 pgsql:1:備份 0:略過
#
pgsql_enable_backup="0"
#
# 備份到遠端系統 rsync
#
rsync_enable="0"
password_file="/usr/local/etc/rsyncd/XXXX.secret"
rsync_backup_dir="${backup_home}/*"
rsync_remote_dir="appleboy@XXX.XXX.XXX::wuboy"
#
# 更新 FreeBSD port tree
#
port_tree_enable="0"

#
# 備份路徑
#
back_www_dir="${backup_home}/www_data"
back_mysql_db_dir="${backup_home}/mysql_db"
back_pgsql_db_dir="${backup_home}/pgsql_db"
log_dir="${backup_home}/log"
上面說明還蠻清楚的吧,基本上剛開始預設功能都是關閉的,如果你要啟動她,就是把 0 改成 1 觀看 back_up.sh 檔案 www_database.txt 檔案 pgsql_database.txt 檔案 www_database.txt 檔案 上面檔案都是 UTF-8 格式,所以大家可以依照你系統的狀況調整,當全部設定好之後,接下來就是設定每天自動執行
#
# 設定每天早上 5點39分 執行這個檔案 
#
39      5    *       *       *       root    /usr/local/bin/bash /usr/home/backup/      back_up.sh 1> /dev/null 2>&1
如果大家有問題請在這裡留言
  • Pingback: mydumper 取代 mysqldump 效能 | 小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY()

  • Hi,

    感謝你的分享,不過你提供的 script 檔案雖然說是用 UTF-8 格式儲存,事實上卻是 Big5 🙁

  • 哈囉 yrchen:
    不好意思唷,沒注意到這個,下載下來,在利用其它軟體轉成 UTF8 吧

  • Pingback: FreeBSD 備份 script | 小波的懶人誌()

  • benson

    #
    # 您所要備份的地方
    #
    backup_home=”/home/backup”
    這是是指我想備份的地方->還是指我備份完想放在那個位置
    # 備份到遠端系統 rsync
    #
    rsync_enable=”0″
    password_file=”/usr/local/etc/rsyncd/XXXX.secret” 請問一下這是什麼意思
    我如果想要把資料自動備份到一台FTP裡的話要如何做呀
    #
    # 備份路徑
    #
    back_www_dir=”${backup_home}/www_data”
    back_mysql_db_dir=”${backup_home}/mysql_db”
    back_pgsql_db_dir=”${backup_home}/pgsql_db”
    log_dir=”${backup_home}/log”
    請問一下這四行需要修改嗎/?

  • 你只需要修改

    [cc lang=”bash”]
    backup_home=”/home/backup”
    [/cc]

    這一行就可以了,那四行可以不必修改