linux 定時備份

每部主機的任務都不相同,重要的數據也不相同,重要性也不同,所以,每一個人癿備份思考角度都不同! 有些備份策略是很是有趣的;mysql

(1)掛載儲存設備進行備份:linux

掛載設備:sql

備份的 script數據庫

      #!/bin/bash
      #
      ####################################################################
      # 用戶參數輸入位置:
      # basedir=你用來儲存此腳本所預計備份數據目錄(請獨立文件系統)
      basedir=/home/backup
      #
      ####################################################################
      # 底下請不要修改了!用默訃值便可!
      PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
      export LANG=C
      # 謳定要備份服務的配置文件,以及備份的目錄
      named=$basedir/named
     # 判斷目錄是否存在,若不存在則予以創建。
     for dirs in $named
     do
     [ ! -d "$dirs" ] && mkdir -p $dirs
     done
     # 1. 將系統主要的服務配置文件分別備份下來,同時也備份 /etc 所有。
     cp -a files $namedapache

(2)定時備份MYSQL數據庫的方法:bash

備份的 script (務必更改其中的username,password和dbname)ssh

     #!/bin/shrest

     mysqldump -uuser -ppassword dbname | gzip > /var/lib/mysqlbackup/dbname`date +%Y-%m-%d_%H%M%S`.sql.gz進程

     cd  /var/lib/mysqlbackupcrontab

      rm -rf `find . -name '*.sql.gz' -mtime 10`  #刪除10天前的備份文件

(3)使用 FTP 上傳備份數據:
假如你要上傳的數據是將 /backup/weekly/ 目錄內的檔案統整爲一個 /backup/weekly.tar.bz2 , 而且上傳到朋務器
端的 /home/backup/ 下,使用的帳號是 dmtsai ,密碼是 dmtsai.pass 。 那舉你能夠這樣作看看:

      #!/bin/bash
      # ===========================================
      # 先輸入系統所須要的數據
      host="192.168.1.100" # 進程主機
      id="dmtsai" # 進程主機的 FTP 帳號
      pw='dmtsai.pass' # 該帳號的密碼
      basedir="/backup/weekly" # 本地端的欲被備份的目錄
      remotedir="/home/backup" # 備份到進程的何處?
      # ===========================================
       backupfile=weekly.tar.bz2
       cd $basedir/..
       tar -jpc -f $backupfile $(basename $basedir)
       ftp -n "$host" > ${basedir}/../ftp.log 2>&1 <<EOF
       user $id $pw
       binary
       cd $remotedir
       put $backupfile
       bye
       EOF

(4)使用 rsync 上傳備份數據:
另外一個更簡單的方法就是透過 rsync ,可是你必需要在你的朋務器上面取得某個帳號使用權後, 而且該帳號能夠不用 密碼便可登入才行!這部分得要先參考朋務器篇得進程聯機朋務器才行! 假如你已經設定好 dmtsai 這個帳號能夠不用密碼便可登入進程朋務器,而一樣的你要讓 /backup/weekly/ 整個備份到 /home/backup/weekly 底下時,能夠簡單這樣作:


      #!/bin/bash
      remotedir=/home/backup/
      basedir=/backup/weekly
      host=127.0.0.1
      id=dmtsai
      # 底下爲程序階段!丌須要修改喔!
       rsync -av -e ssh $basedir ${id}@${host}:${remotedir}

以上的腳本寫好後,可使用crontab進行定時備份:

vi crontab

      # 加入這兩行便可 (請注意你癿檔案目錄!丌要照抄呦!)
      30 3 * * 0 root /backup/backupwk.sh
      30 2 * * * root /backup/backupday.sh

crontab的格式:

      分 時 日 月 星期 要運行的命令

     第1列分鐘1~59, 第2列小時1~23(0表示子夜), 第3列日1~31
     第4列月1~12, 第5列星期0~6(0表示星期天), 第6列要運行的命令

這裏有crontab文件條目的一些例子:

30 21 * * * /usr/local/apache/bin/apachectl restart  #表示每晚的21:30重啓apache。

45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart #表示每個月一、十、22日的4 : 45重啓apache。

10 1 * * 6,0 /usr/local/apache/bin/apachectl restart #表示每週6、週日的1 : 10重啓apache。

0,30 18-23 * * * /usr/local/apache/bin/apachectl restart #表示在天天18 : 00至23 : 00之間每隔30分鐘重啓apache。

0 23 * * 6 /usr/local/apache/bin/apachectl restart #表示每星期六的11 : 00 pm重啓apache。

* */1 * * * /usr/local/apache/bin/apachectl restart #每一小時重啓apache

* 23-7/1 * * * /usr/local/apache/bin/apachectl restart #晚上11點到早上7點之間,每隔一小時重啓apache

0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart #每個月的4號與每週一到週三的11點重啓apache

0 4 1 jan * /usr/local/apache/bin/apachectl restart #一月一號的4點重啓apache

參考:鳥哥linux以及網上的一些資源

相關文章
相關標籤/搜索