web-dev-qa-db-ja.com

重複によって作成されたバックアップセットを手動で抽出するにはどうすればよいですか?

重複ソフトウェアによって作成された一連のファイルがWebサーバーにあります。

  • duplicity-full.20110315T085334Z.vol1.difftar.gz
  • duplicity-full.20110315T085334Z.vol2.difftar.gz
  • duplicity-full.20110315T085334Z.vol3.difftar.gz
  • など...(50ファイル、合計サイズ約1 Gb)

バックアップは暗号化なしで行われました。

私の現在のホスティング業者は彼のサーバーに重複がなく、それをインストールしたくありません。リモートSSHアクセスを使用してこれらのファイルを解凍するにはどうすればよいですか?たぶんそれを行うために利用できるいくつかのbashスクリプトがありますか?

5
Andrew

必要なアーカイブをダウンロードして、次のように作成するのはどうですか:duplicity scp://[email protected]//usr/backup restored_dir(公式サイトの例)

2
black-tux

他の誰かがこれに遭遇した場合(私がちょうど持っているように)、いくつかの合理的に詳細な(そしてほとんど正しい)ステップ ここに があります。

重要な詳細

重要な点は、すべてのduplicity-full.*.difftar.gzファイルを同じ場所に解凍して、2つのsnapshot/ディレクトリとmultivol_snapshot/ディレクトリだけを残すことです。

ファイルがsnapshot/にある場合は、これで完了です。それ以外の場合は、ファイルがあったパスのmultivol_snapshot/でディレクトリを見つけます。元のファイルを再作成するには、このディレクトリ内のすべてのファイルを結合する必要があります。ファイルには番号が付けられており、catコマンドを使用して結合できます。オリジナルの大きさによっては、パーツが多い場合があります。

元の指示の問題

上にリンクされている指示は、cat * > rescued-fileの使用を提案しています。残念ながら、9つ以上のパーツがある場合、この単純なアプローチは失敗します。 *は数値順ではなく辞書順に展開されるため、102の前にリストされ、ファイルは間違った順序で再構築されます。

回避策

簡単なアプローチの1つは、数字が同じ長さの場合に辞書の順序が機能すること、および?が1文字に一致することを覚えておくことです。したがって、最大のファイルに3桁がある場合は、手動で次のように入力できます。

cat ? ?? ??? > rescued-file

最大のファイル番号に応じて、必要に応じて?パターンを追加または削除します。

スクリプト

回復するファイルがたくさんあり、それらすべてにそのファイルを入力したくない場合は、このようなスクリプトを使用することをお勧めします。すべてのファイルに含まれているディレクトリを一覧表示し、リストから重複を削除してから、各ディレクトリに移動し、そこにあるフラグメントからcontentファイルを作成します。 (spacer$1を機能させるためだけのものです。)

find multivol_snapshot/ -type f -printf '%h\0' | \
  sort -uz | \
  xargs -0 -n 1 sh -c 'cd "$1" ; cat $(ls | sort -n) > content' spacer

これで、探していたファイル名の末尾に/contentを追加するだけで、それを見つけることができます。

制限

これは、元のファイルのアクセス許可または所有権を復元しません。また、増分バックアップも処理しませんが、 リンクされた命令 もこの点で少し行き詰まります—ファイルをつなぎ合わせるためにrdiff 'を使用することを提案します'そして読者にman rdiffを紹介します。

8
Paul Whittaker

これらのアーカイブを解凍して、必要なファイルをコピーしてみてください。ファイルをバックアップする方法はわかりませんが、ファイルをdirにコピーしてgzip(またはtar.gz)すると思います

0
black-tux

あなたの場合、簡単に抽出できるバックアップソフトウェア(またはスクリプト)を使用する方が良いと思います。 backuppc、flaxbackupを確認できます(ホストで動作するかどうかはわかりません。vps(またはvds)の場合は動作しますが、共有ホスティングの場合は動作しません)。

0
black-tux