2009-03-19

[Shell] 利用 tar 作資料備份

一般在 console 使用 tar 做備份壓縮時,都會習慣使用相對路徑做壓縮,在解壓縮時也比較方便,可是再寫 Shell 做 crontab 排程時,也想要使用相對路徑做壓縮的話,必須用一些方法,下面的 script 還加上過濾檔案的機制,可以排除一些隱藏檔或特定目錄的備份。

#!/bin/bash
# Program : 備份指定目錄
# History : 2009/03/19
# Author : Jax
# E-mail : weskerjax@gmail.com
# Website : http://jax-work-archive.blogspot.com/

PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

# 排除不需要備份的檔案類型
EXCLUDE=""
FILTER=(
"*.bak"           # 排除副檔名為 .bak 的檔案
".*"              # 排除所有隱藏檔
"/CVS/"           # 排除所有目錄為 CVS 的目錄
"Smarty/cache"    # 排除路徑為 Smarty/cache 的目錄
"Smarty/tpl_c"    # 排除路徑為 Smarty/tpl_c 的目錄
)
for i in "${FILTER[@]}" ; do
    EXCLUDE="$EXCLUDE --exclude=$i"
done

# 時間參數
DATE=$(date +%Y%m%d)

# 配份目錄
TARGET_DIR="/home/web"

# 備份檔名路徑目錄
ZIP_FILE="/home/backup/backup_$DATE.tar.bz2"

# 執行壓縮指令
tar -jcf $ZIP_FILE $EXCLUDE -C $TARGET_DIR $(ls $TARGET_DIR)

exit 0;


原始檔:server_backup.sh

0 回應: