さて、私のDebianサーバーで現在のバックアップソリューションを改善する方法を読んだ後、 このページ を読んだところです。 Tarは非常に優れたマルチボリューム機能を提供しているようですが、試してみるとPrepare volume #X for ‘mybackup.tar.gz’ and hit return:
。
自動化されたCRONスクリプトでこの機能を使用したいので、これを自動化するにはどうすればよいですか。プッシュリターンを実行して、マルチボリュームプロンプトで必要なものを入力する人は誰もいません。
split
を使用するのが唯一の方法ですか?
解決策は次のとおりです。
printf 'n file-%02d.tar\n' {2..100} |
tar -ML 716800 -cf file-01.tar Documents/ 2>/dev/null
ここで、100はボリュームの数以上の数です。
編集
私はばかげた数をとらない傾向があるが、大きな数を設定することは問題ではないはずです。
別の方法としては、 "次のボリューム"スクリプト があり、-F
オプション、
tar -ML 716800 -F './myscript file' -cf file.tar Documents/ 2>/dev/null
次に./myscript
置く
#!/bin/bash
prefix="$1"
n=1
while [[ -e "$prefix-$n.tar" ]]; do
((n++))
done
mv "$prefix.tar" "$prefix-$n.tar"
echo "$prefix-$n.tar"
各ボリュームの終了時に実行され、file.tar
適切なfileNNN.tar
。最後のボリュームの場合、スクリプトは実行されないため、最後のボリューム名はfile.tar
。
編集2
私は次の手の込んだ解決策に行き着きました。
2つのスクリプトがあります。1つは作成用で、もう1つは抽出用です。
#!/bin/bash
# CREATION SCRIPT
# save on file the initial volume number
echo 1 >number
# multi-volume archive creation
tar -ML 100000 -F './tar-multi-volume-script c file' -cf file.tar Documents2/ 2>&-
# execute the "change-volume" script a last time
./tar-multi-volume-script c file
そして
#!/bin/bash
# EXTRACTION SCRIPT
# save on file the initial volume number
echo 1 >number
# execute the "change-volume" script a first time
./tar-multi-volume-script x file
# multi-volume archive extraction
tar -M -F './tar-multi-volume-script x file' -xf file.tar 2>&-
# remove a spurious file
rm file.tar
どこ ./tar-multi-volume-script
によって与えられます
#!/bin/bash
# TAR INVOKED SCRIPT
mode="$1"
prefix="$2"
n=$(<number)
case $mode in
c) mv "$prefix.tar" "$prefix-$n.tar" ;;
x) cp "$prefix-$n.tar" "$prefix.tar" ;;
esac
echo $((n+1)) >number
明らかに、状況に適応し、それがcron
で機能することを確認するために、あちこちで多くのビットを変更する必要があります。これは常に小さな課題です。
疑問がある場合は、マニュアルを読んでください...
http://www.gnu.org/software/tar/manual/html_node/Multi_002dVolume-Archives.html
または、お気に入りのインターネット検索エンジンで次の検索文字列を使用するだけです。
"1つのテープまたはディスクより長いアーカイブ"
GNUtarマニュアルのそのセクションは、適切なスクリプト(new-volumeと呼ばれます)を提供します)tarコマンドの-Fオプションとともに使用します。必要に応じて、そのスクリプトを好みに合わせて微調整できます。
楽しい!