Apr 27, 2007

[Linux] 巨大なデータの tar アーカイビングに苦戦

大量のデータを tar でアーカイビングしようとして苦戦。 最初は特に意識せず普通に

tar cvf /home/foo.tar ./foo
とやったのだが、
tar: Cannot write to /home/foo.tar: File too large
tar: Error is not recoverable: exiting now
と怒られてしまった。 それなら、と
tar --use=bzip2 -cvf /home/foo.tar.bz2 ./foo
と bzip2 圧縮をかけたのだが、
bzip2: I/O or other error, bailing out.  Possible reason follows.
bzip2: File too large
        Input file = (stdin), output file = (stdout)
Broken pipe
と、またツレナイ結果に。 結局仕方が無いので
#!/bin/sh

src=./foo
dest=/home/
prefix=foo.
suffix=.tar.bz2

cd $src
for i in * ; do
  if [ -d $i ] ; then 
    echo "archiving $i... -> $dest/$prefix$i$suffix"
    tar --use=bzip2 -cvf $dest/$prefix$i$suffix $i > /dev/null
  fi
done
とディレクトリ個別にアーカイビングするハメに。 もっと良い方法がある気がするのだが。 どうすれば良いのだろう??