• 讓 Linux 每天自動備份且存留 7 天簡單的方法

    by  • 2009/04/06 • linux • 2 Comments

    運用 Linux 內建的 logrotate 及 Cron 來達成自動備份 7 天的方式

    Step 1.
    先確定要備份的東西所在的位置, 如 /var/www/html/ 所有的東西,

    且每天都要備份到 /backup/ 裡面

    Step 2. 建立排程(Cron)壓縮 /var/www/html/ 所有的檔案

    以下我是以每天早上 1:00 來自動執行壓縮(最好已 root 來建立)

    #crontab -e
    新增以下這行
    0 1 * * * /bin/tar zcvf /backup/www.tar.gz /var/www/html/* > /dev/null 2>&1
    

    Step 3. 在 /backup/ 建立一個 logrotate 的規則檔如 backup.log 檔案內容如下

    # vi backup.log
    /backup/*gz {
    missingok
    notifempty
    sharedscripts
    postrotate
    endscript
    rotate 7
    }
    

    Step 4. 建立排程進行 logrotate, 以下是 12:58 進行 logrotate.

    #crontab -e
    58 0 * * * /usr/sbin/logrotate -f /backup/backup.log > /dev/null 2>&1
    

    以上動作完成後就完成啦 !!

    運作幾天後, 在 /backup/ 就可以看到如以下的狀況 !!

    #ls -l -h
    總計 1.9G
    -rw-r--r--  1 root root  105  3月 30 16:12 backup
    -rw-r--r--  1 root root 250M  4月  6 01:00 www.tar.gz
    -rw-r--r--  1 root root 250M  4月  5 01:00 www.tar.gz.1
    -rw-r--r--  1 root root 250M  4月  4 01:00 www.tar.gz.2
    -rw-r--r--  1 root root 241M  4月  3 01:00 www.tar.gz.3
    -rw-r--r--  1 root root 221M  4月  2 01:00 www.tar.gz.4
    -rw-r--r--  1 root root 220M  4月  1 01:00 www.tar.gz.5
    -rw-r--r--  1 root root 231M  3月 31 01:00 www.tar.gz.6
    -rw-r--r--  1 root root 231M  3月 30 01:00 www.tar.gz.7
    
    

    • bestlong

      建議在 logrotate 設定檔 backup.log 中再加上 size=0
      這樣才會讓小檔案也能 rotate

    • @bestlong
      謝謝您的分享 ~~