LANDISKに/homeのバックアップをとってみたが、やたらに遅い。なんでだろーと思ったのだが、ハタと思い当たった。 要するにこういう話の続きなのだが、
- tarにかけて
- bzip2で圧縮して
- gpgで暗号化して
- splitにかけて2GB制限を回避して
- smbfsで書き込む
というのをパイプでつないでやっている。tarはいつも使っているもので問題ないしgpgのスループットは出るしsplitが何をやっているわけでもないしsmbfs+LANDISKも満足しているわけではないが3MB/sは出る。そう言えばbzip2が遅いのだった(ちゃんちゃん)。たしかにそうだった。 昨日の夜に仕掛けて遅いなぁと思い、今朝起きてから気がついた。 まあ、次からは差分バックアップになるので問題なかろう。 結局差分バックアップは単にタイムスタンプを使うってことにした。 (追記) 2004-01-29 09:25 実はfindの式が狂っていて以下だとPRUNEPATHが効きません。そのうち修正するかも。 #! /bin/sh 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 . みたいな感じ。