tarバックアップ(ローテーション付き) のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- tarバックアップ(ローテーション付き) へ行く。
- 1 (2007-03-13 (火) 20:42:10)
- 2 (2007-03-13 (火) 21:31:34)
概要 †
引数に沿ってファイル(ディレクトリ)をtar + gzip圧縮するスクリプト。
スクリプト内の変数により数世代を保管することも可能。
使い方 †
以下のフォーマットで使用する
./tar_archive.sh [圧縮元ファイル or ディレクトリ] [圧縮先ファイル名]
例: ./tar_archive.sh /home/httpd/preview /home/system/script/preview.tgz
設定 †
世代管理を行う場合は以下の行に保管する世代を指定する。
ROTATE= 保管世代数
世代数に指定された値を最大値とし、出力ファイル名の末尾にナンバリングを行う。
コード †
#!/bin/sh # ------------------------ # tar archive make script # ------------------------ # Version : 1.0 # date : 2007/03/13 export LANG=C export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH ## Set ROTATE="4" # # TARGET if [ -z $1 ]; then echo "ERR : target Directory unknown" echo "USE : ./tar_archive.sh [TargetDirectory] [OUTPUT FILE NAME]" exit 0 fi if [ -e $1 ]; then INFILE=$1 else echo "ERR : $1 not found" echo "USE : ./tar_archive.sh [TargetDirectory] [OUTPUT FILE NAME]" fi # OUTPUT if [ -z $2 ]; then echo "ERR : Output File unknown" echo "USE : ./tar_archive.sh [TargetDirectory] [OUTPUT FILE NAME]" exit 0 else OUTFILE=$2 fi ## Exec # Rotate test -f $OUTFILE.$ROTATE && rm -rf $OUTFILE.$ROTATE while [ $ROTATE -ge 1 ]; do i=$((ROTATE-1)) if [ -f $OUTFILE.$i ]; then mv $OUTFILE.$i $OUTFILE.$ROTATE fi ROTATE=$i done test -f $OUTFILE && mv $OUTFILE $OUTFILE.1 # TAR tar cfPz $OUTFILE $INFILE # EOF