ボトルネック

LANDISKに/homeのバックアップをとってみたが、やたらに遅い。なんでだろーと思ったのだが、ハタと思い当たった。

要するにこういう話の続きなのだが、

  1. tarにかけて
  2. bzip2で圧縮して
  3. gpgで暗号化して
  4. splitにかけて2GB制限を回避して
  5. smbfsで書き込む

というのをパイプでつないでやっている。tarはいつも使っているもので問題ないしgpgのスループットは出るしsplitが何をやっているわけでもないしsmbfs+LANDISKも満足しているわけではないが3MB/sは出る。そう言えばbzip2が遅いのだった(ちゃんちゃん)。たしかにそうだった。

昨日の夜に仕掛けて遅いなぁと思い、今朝起きてから気がついた。

まあ、次からは差分バックアップになるので問題なかろう。

結局差分バックアップは単にタイムスタンプを使うってことにした。

(追記) 2004-01-29 09:25

実はfindの式が狂っていて以下だとPRUNEPATHが効きません。そのうち修正するかも。

#! /bin/sh<br /> set -x<br /> cd<br /> umask 077</p> <p>TWOG=1024m</p> <p>tar_raw(){<br /> OUT=$1<br /> shift<br /> tar cfp &#8211; $* | split -b $TWOG &#8211; $OUT.tar.<br /> }</p> <p>tar_crypt(){<br /> OUT=$1<br /> shift<br /> tar cfjp &#8211; $* | gpg -e | split -b $TWOG &#8211; $OUT.tbz2.gpg.<br /> }</p> <p>tar_raw_t(){<br /> FILE=$1<br /> shift<br /> cat $FILE.tar.?? | tar tvfp &#8211;<br /> }</p> <p>tar_crypt_t(){<br /> FILE=$1<br /> shift<br /> cat $FILE.tbz2.gpg.?? | gpg -d | tar tvfpj &#8211;<br /> }</p> <p>tar_raw_x(){<br /> FILE=$1<br /> shift<br /> cat $FILE.tar.?? | tar xfp &#8211;<br /> }</p> <p>tar_crypt_x(){<br /> FILE=$1<br /> shift<br /> cat $FILE.tbz2.gpg.?? | gpg -d | tar xfpj &#8211;<br /> }</p> <p>diff_tar(){<br /> OUTFILE=$1<br /> DATE=$(date +%Y%m%d%H%M)<br /> shift<br /> if [ -e $OUTFILE.last ] ; then<br /> TMPFILE=$(mktemp /tmp/backup.XXXXXX)<br /> EXP=&#8221;&#8221;<br /> for i in $PRUNEPATH; do<br /> EXP=&#8221;$EXP -path $i -prune -o&#8221;<br /> done<br /> find $* -follow -type f $EXP -newer $OUTFILE.last -print0 > $TMPFILE<br /> if [ -s $TMPFILE ] ; then<br /> touch $OUTFILE.last<br /> tar_${FORM} $OUTFILE.$DATE &#8211;null -T $TMPFILE<br /> fi<br /> rm $TMPFILE<br /> else<br /> touch $OUTFILE.last<br /> EXP=&#8221;&#8221;<br /> for i in $PRUNEPATH; do<br /> EXP=&#8221;$EXP &#8211;exclude $i&#8221;<br /> done<br /> tar_${FORM} $OUTFILE.$DATE $EXP $*<br /> fi<br /> }</p> <p>(以下、秘密)</p> <p>FORM=crypt<br /> PRUNEPATH=&#8221;&#8221;<br /> diff_tar LANDISK/bak/home .</p> <p>みたいな感じ。<br />

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です