資料備份方法

一.使用 tar 及 壓縮程式
例如:
1.要備份 /etc 這個目錄, 可以如此做: tar cf etc.tar /etc
(c 是開設一個新檔, f 是指定檔名之意)

2.若您要多加一道驗證的動件, 可多加個 W 選項: tar cWf etc.tar /etc

3.若要詳細顯示, 可多加個 v 選項: tar cvf etc.tar /etc

4.若要打包之後, 再行壓縮, 可多加個 z 選項: tar cvzf etc.tar.gz /etc
[@more@]二.tar進階使用:

對於備份檔應該加註日期, 這個可以透過 date +時間格式 這個指令達成。
例如:
1.tar cvf etc.`date +%d%H%M%S`.tar /etc
   結果可能會是: etc.17144055.tar

2. 記錄本次備份(第一次全部備份)之時間: touch bkup_last_time
    *下次備份 /etc 目錄時, 不全部備份, 只備份異動檔, 方法如下:
      find /etc -cnewer bkup_last_time > newbk.lst
      tar cvf etc.newer.tar -T newbk.lst

   * 記錄本次備份之時間: touch bkup_last_time
   * 下次備份時再重覆上述步驟.

三.備份目錄:

  建議 /etc, /home, /var/spool/mail 及資料庫等目錄即是必須備份的, 其它就視您而定, 自由抉擇囉.
備份另一個方法:
 php script
只需要依個人所需更改 4SOURCE_DIR 和 $EXCLUDE_D 最後再 chmod +x 就可以了。
如果要放 crontab,將 $ask = strtolower(read());
拿掉就可以了


#!/usr/bin/php -q
<?php
//Change The following two variables
$SOURCE_DIR = "/bin /boot /etc /home /lib /mnt /opt /root /sbin /tmp /usr /var";
$EXCLUDE_D = "/home/benny/mnt /usr/portage/distfiles";
//Stop here unless you know what you’re doing
$EXCLUDE_DIR = explode(" ",$EXCLUDE_D);
$DEST_DIR = "/misc/backup";
$DATE = date("Y-m-d");
$FILE = "BACKUP-".$DATE.".tgz";
for ( $i = 0; $i < count($EXCLUDE_DIR); $i++ ) {
if ( !$EXCLUDE ) { $EXCLUDE = " –exclude=".$EXCLUDE_DIR[$i]; }
else { $EXCLUDE = $EXCLUDE." –exclude=".$EXCLUDE_DIR[$i]; }
}
$BACKUP = "tar -zcvf ".$DEST_DIR."/".$FILE." ".$SOURCE_DIR.$EXCLUDE;
function read() {
$fp = fopen("php://stdin","r");
$input = fgets($fp,255);
fclose($fp);
return eregi_replace("n","",$input);
}
echo "=-= System Backup =-=nDESTINATION PATH: "
.$DEST_DIR."nFILE: ".$FILE.
"nExcluding: $EXCLUDE_Dn".
"nProceed? [Y/n]: ";

$ask = strtolower(read());
if ( !$ask ) { $ask = "y"; }
if ( $ask == "y" ) {
echo "System Backup will start within 5 Secsn";
for ( $i=0; $i<5; $i++ ) {
echo 5-$i."n";
sleep(1);
}
echo "Initializing System Backup…n";
shell_exec("echo Starting @ `date` >> backup.log");
shell_exec("echo Filename: $FILE >> backup.log");
shell_exec("$BACKUP");
shell_exec("echo Completed @ `date` >> backup.log");
}
else { echo "Aborted!n"; }
?>