LANDISKに/homeのバックアップをとってみたが、やたらに遅い。なんでだろーと思ったのだが、ハタと思い当たった。
要するにこういう話の続きなのだが、
- tarにかけて
- bzip2で圧縮して
- gpgで暗号化して
- splitにかけて2GB制限を回避して
- smbfsで書き込む
というのをパイプでつないでやっている。tarはいつも使っているもので問題ないしgpgのスループットは出るしsplitが何をやっているわけでもないしsmbfs+LANDISKも満足しているわけではないが3MB/sは出る。そう言えばbzip2が遅いのだった(ちゃんちゃん)。たしかにそうだった。
昨日の夜に仕掛けて遅いなぁと思い、今朝起きてから気がついた。
まあ、次からは差分バックアップになるので問題なかろう。
結局差分バックアップは単にタイムスタンプを使うってことにした。
(追記) 2004-01-29 09:25
実はfindの式が狂っていて以下だとPRUNEPATHが効きません。そのうち修正するかも。
set -x
cd
umask 077
TWOG=1024m
tar_raw(){
OUT=$1
shift
tar cfp – $* | split -b $TWOG – $OUT.tar.
}
tar_crypt(){
OUT=$1
shift
tar cfjp – $* | gpg -e | split -b $TWOG – $OUT.tbz2.gpg.
}
tar_raw_t(){
FILE=$1
shift
cat $FILE.tar.?? | tar tvfp –
}
tar_crypt_t(){
FILE=$1
shift
cat $FILE.tbz2.gpg.?? | gpg -d | tar tvfpj –
}
tar_raw_x(){
FILE=$1
shift
cat $FILE.tar.?? | tar xfp –
}
tar_crypt_x(){
FILE=$1
shift
cat $FILE.tbz2.gpg.?? | gpg -d | tar xfpj –
}
diff_tar(){
OUTFILE=$1
DATE=$(date +%Y%m%d%H%M)
shift
if [ -e $OUTFILE.last ] ; then
TMPFILE=$(mktemp /tmp/backup.XXXXXX)
EXP=””
for i in $PRUNEPATH; do
EXP=”$EXP -path $i -prune -o”
done
find $* -follow -type f $EXP -newer $OUTFILE.last -print0 > $TMPFILE
if [ -s $TMPFILE ] ; then
touch $OUTFILE.last
tar_${FORM} $OUTFILE.$DATE –null -T $TMPFILE
fi
rm $TMPFILE
else
touch $OUTFILE.last
EXP=””
for i in $PRUNEPATH; do
EXP=”$EXP –exclude $i”
done
tar_${FORM} $OUTFILE.$DATE $EXP $*
fi
}
(以下、秘密)
FORM=crypt
PRUNEPATH=””
diff_tar LANDISK/bak/home .
みたいな感じ。