web-dev-qa-db-ja.com

tarのマルチボリューム機能を自動化できますか?

さて、私のDebianサーバーで現在のバックアップソリューションを改善する方法を読んだ後、 このページ を読んだところです。 Tarは非常に優れたマルチボリューム機能を提供しているようですが、試してみるとPrepare volume #X for ‘mybackup.tar.gz’ and hit return:

自動化されたCRONスクリプトでこの機能を使用したいので、これを自動化するにはどうすればよいですか。プッシュリターンを実行して、マルチボリュームプロンプトで必要なものを入力する人は誰もいません。

splitを使用するのが唯一の方法ですか?

8
Industrial

解決策は次のとおりです。

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で機能することを確認するために、あちこちで多くのビットを変更する必要があります。これは常に小さな課題です。

14
enzotib

疑問がある場合は、マニュアルを読んでください...

http://www.gnu.org/software/tar/manual/html_node/Multi_002dVolume-Archives.html

または、お気に入りのインターネット検索エンジンで次の検索文字列を使用するだけです。

"1つのテープまたはディスクより長いアーカイブ"

GNUtarマニュアルのそのセクションは、適切なスクリプト(new-volumeと呼ばれます)を提供します)tarコマンドの-Fオプションとともに使用します。必要に応じて、そのスクリプトを好みに合わせて微調整できます。

楽しい!

0
najevi