Linux程式設計-11.Shell Script(bash)--(3)用於自動備份的Shell Script(轉)
Linux程式設計-11.Shell Script(bash)--(3)用於自動備份的Shell Script(轉)[@more@]from: 一個用於自動備份的Shell Script我們先前提到,可利用Shell Script搭配crond來作定期的工作。要作定期性的工作,在UNIX上,就是與crond的搭配運用。--------------------------------------------------------------------------------首先我們先來研究如何對系統進行備份。要對系統進行備份,不外乎便是利用一些壓縮工具。在許多UNIX系統上,tar及gzip是de facto的資料交換標準。我們經常可以看見一些tar.gz或tgz檔,這些檔案,被稱為tarball。當然了,您也可以用bzip2、zip等等壓縮工具來進行壓縮,不必限定於gzip。但tar配合gzip是最普遍的,也是最方便的方式。要將我們想要的資料壓縮起來,進行備份,可以結合tar及gzip一起進行。方式有很多種,最常用的指令是以下這一種:tar -c file/dir ... | gzip -9 > xxxx.tar.gz您也可以分開來做:tar -r file/dir ... -f xxxx.targzip -9 xxxx.tar或tar -r file/dir ... -f xxxx.targzip -9 < xxxx.tar > xxxx.tar.gz--------------------------------------------------------------------------------在解過Linux下檔案備份的基本知識後,我們來寫一個將檔案備份的Script。#!/bin/sh# Filename : backupDIRS="/etc /var /your_directories_or_files"BACKUP="/tmp/backup.tgz"tar -c $DIRS | gzip -9 > $BACKUP其中DIRS放的是您要備份的檔案及目錄,BACKUP是您的備份檔。可不要將/tmp放進DIRS中,那樣做,您是在做備份的備份,可能將您的硬碟塞爆。--------------------------------------------------------------------------------接下來測試[foxman@foxman bash]# chmod 755 backup[foxman@foxman bash]# ./backup執行完成後在/tmp就會有一個backup.tgz,裡面儲存了您重要的資料。您可用gzip -dc /tmp/backup.tgz | tar -vt或tar vtfz /tmp/backup.tgz來看看裡面的檔案列表。要解開時,可用以下指令來完成復原:gzip -dc /tmp/backup.tgz | tar -xv或tar xvfz /tmp/backup.tgz備份通常是僅備份系統通常最重要的部份,/etc可說是不可缺少的一部份。另外,看您系統中有那些重要的資料需要備份。通常來說,您沒有必要備份 /bin、/sbin、/usr/bin、/usr/sbin、/usr/X11R6/bin等等這些執行檔目錄。只要備份您重要的檔案即可,別把整個硬碟備份,那是蠻呆的動作。--------------------------------------------------------------------------------如果您有許多臺機器,可利用其中一臺任務較輕的內部網路主機,做為主要備份主機。將所有機器都自動執行備份,然後利用NFS/Coda/Samba等網路檔案系統,將備份的資料放到該備份機器中,該機器則定時收取備份資料,然後您再由該機器中進行一次備份。這裡是整個系統備份方案的圖示。在您進行之前,先解一下,系統中那些是要備份的,那些是不需要的。--------------------------------------------------------------------------------新的backup#!/bin/shHOSTNAME=`hostname`DIRS="/etc /var /your_important_directory"BACKUP="/tmp/$HOSTNAME.tgz"NFS="/mnt/nfs"tar -c $DIRS | gzip -9 > $BACKUPmv -f $BACKUP $NFS--------------------------------------------------------------------------------備份主機內的Script : collect_backup#!/bin/shNFS="/mnt/nfs"BACKUP="/backup"mv -f $NFS/*.tgz $BACKUP在此,您不能夠將所有備份都直接放在/mnt/nfs,這是危險的。萬一任一臺機器不小心將/mnt/nfs所有內容刪除,那麼備份就會消失。因此,您需要將/mnt/nfs移到一個只有該備份主機可存取的目錄中。--------------------------------------------------------------------------------當這些個別的Script都測試好以後,接下來我們將他們放到crontab裡面。找到您的crontab,它的位置可能在/var/spool/cron/crontabs/root、/etc/crontab、/var/cron/tabs/root。在crontab中選擇以下之一加入(看您定期的時間):Slackware : /var/spool/cron/crontabs/root01 * * * * /full_backup_script_path/backup 1> /dev/null 2> /dev/null # 每小時(太過火一點)30 16 * * * /full_backup_script_path/backup 1> /dev/null 2> /dev/null # 每日16:30,下班前備份30 16 * * 0 /full_backup_script_path/backup 1> /dev/null 2> /dev/null # 每週一16:300 5 1 * * /full_backup_script_path/backup 1> /dev/null 2> /dev/null # 每月一號5:0RedHat/Debian : /etc/crontabRedHat可直接將backup放入/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly。或採用如上加入/etc/crontab的方式:有關crontab的用法,可查"man 5 crontab",在此不詳述。備份主機的設定類同。注意: 所有機器不要同時進行備份,否則網路會大塞車。備份主機收取備份的時間要設為最後,否則會收不到備份資料。您可以在實作後,將時間間隔調整一下。--------------------------------------------------------------------------------看看,兩個小小不到三行的Shell Script,配合cron這個定時工具。可以讓原本需要耗時多個小時的人工備份工作,簡化到不到十分鐘。善用您的想像力,多加一點變化,可你讓您的生活變得輕鬆異常,快樂悠哉
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944713/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell Script(bash)--用於自動備份的Shell Script(轉)
- Linux程式設計-11.Shell Script(bash)--(1)簡介(轉)Linux程式設計
- Linux程式設計-11.Shell Script(bash)--(2)教學例(轉)Linux程式設計
- Shell Script(bash)--教學例(轉)
- Shell Script(轉)
- 20天學會bash shell script (二)
- 20天會學bash shell script(一)
- 20 天學會bash shell script (三)
- rman 0.1.2 備份 script
- Shell Script
- shell script
- shell script程式設計小結——附帶例項程式設計
- LINUX 自動備份程式日誌(shell)Linux
- Unix程式設計/應用問答中文版 ---20.shell script問題(轉)程式設計
- BASH Shell的指令碼程式設計(轉)指令碼程式設計
- shell script to rename directory
- BASH SHELL 程式設計簡介(轉)程式設計
- 自動啟動ORACLE Script ServiceOracle
- shell script的簡單使用
- Shell Script to Calculate Values Recommended Linux HugePagesLinux
- DB中備份每一張table script
- PHP也可以當成Shell Script使用(轉)PHP
- 用Linux完成Oracle自動物理備份(轉)LinuxOracle
- Bourne shell script中的quoting
- 翻譯:《實用的Python程式設計》03_01_ScriptPython程式設計
- execute shell script from stored procedure
- 用Linux命令完成Oracle自動物理備份(轉)LinuxOracle
- [shell] execute remote Script自動生成oracle awr report並mail出來REMOracleAI
- shell程式設計–bash變數程式設計變數
- 9.bash shell程式設計程式設計
- ORACLE自動備份shell指令碼Oracle指令碼
- 教你用Linux完成Oracle自動物理備份(轉)LinuxOracle
- 恢復IpTables的預設設定(Script)(轉)
- 小的shell script進不同系統的
- Java Script網頁設計案例Java網頁
- IPTables配置Script(轉)
- ORACLE常用Script(轉)Oracle
- ORACLE常用Script (轉)Oracle