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

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

わかりました、今読んだだけこのページ私のDebianサーバーの現在のバックアップソリューションを改善した後。 Tarはかなり良いマルチボリューム機能を提供しているようです。しかし、私が試したときにそれをしなければなりませんでしたPrepare volume #X for ‘mybackup.tar.gz’ and hit return:

誰もEnterキーを押さずにマルチボリュームプロンプトに必要な内容を入力しない自動化CRONスクリプトでこの機能を使用したいので、自動化するにはどうすればよいですか?

split唯一の方法を使用していますか?

ベストアンサー1

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

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つです。

#!/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、これは常に少し難しいです。

おすすめ記事