ドライブを失い、Ubuntu OSをインストールしました。そこからDuplicityを使用してバックアップを作成しましたが、まだ別のドライブに保管しているアーカイブファイルを復元する方法がわかりません。彼らはすべてこれらの4つの表記法に従います
duplicity-full.20140106T111233Z.manifest
duplicity-full-signatures.20140106T111233Z.sigtar.gz
duplicity-full.20140106T111233Z.volxxx.difftar.gz (multiple volumes)
duplicity-full.20140106T111233Z.volxxx.difftar (multiple volumes)
回復する必要がある重要なデータがあります。何か私にできることはありますか? gzipを使用するのに十分でしょうか?もしそうなら、どうすればそれらをすべて簡単に抽出できますか?
編集1復元オプションと--gioオプションの両方を使用して提案を試行すると、次のテキストが表示されます。
duplicity restore file://media/ubuntu/Toshiba\ HDD/BACKUPS/Documents/ /media/ubuntu/9fb63c8e-ecb5-4c55-b4e0-282e7b4a82ff/tmp/docs/
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase:
Traceback (most recent call last):
File "/usr/bin/duplicity", line 1494, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 1488, in with_tempdir
fn()
File "/usr/bin/duplicity", line 1337, in main
do_backup(action)
File "/usr/bin/duplicity", line 1422, in do_backup
restore(col_stats)
File "/usr/bin/duplicity", line 697, in restore
restore_get_patched_rop_iter(col_stats)):
File "/usr/bin/duplicity", line 719, in restore_get_patched_rop_iter
backup_chain = col_stats.get_backup_chain_at_time(time)
File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 952, in get_backup_chain_at_time
raise CollectionsError("No backup chains found")
CollectionsError: No backup chains found
/ media/ubuntu/Toshiba\HDD/BACKUPS/Documents /はすべての重複ファイルがある場所であり、/ media/ubuntu/9fb63c8e-ecb5-4c55-b4e0-282e7b4a82ff/tmp/docs /ファイルの復元先の一時的な保存先フォルダー。
編集2 file:// media ....の欠落しているスラッシュを修正しました。今では復元されたファイルを取得しますが、期待どおりではありません。多くのファイルが欠落しています(最大24 GBがあります!)
root@ubuntu:/media/ubuntu/Toshiba HDD/BACKUPS/Documents# ls -la /tmp/docs/home/luis/
total 4176
drwx------ 16 root root 1000 Jun 30 19:13 .
drwx------ 3 root root 60 Jun 30 19:13 ..
drwx------ 3 1000 1000 60 Oct 23 2013 .activestate
drwxr-xr-x 2 1000 1000 60 Oct 23 2013 .ActiveState
drwx------ 3 1000 1000 60 Dec 28 2012 .Adobe
-rw------- 1 1000 1000 32120 Jan 4 12:56 .bash_history
-rw-r--r-- 1 1000 1000 220 Dec 28 2012 .bash_logout
-rw-r--r-- 1 1000 1000 3637 Dec 28 2012 .bashrc
drwx------ 3 1000 1000 60 Jan 3 14:01 .cache
drwxr-xr-x 3 1000 1000 60 Nov 16 2013 .cddb
-rw-rw-r-- 1 1000 1000 740 Jan 10 2013 .cola
drwx------ 3 1000 1000 60 Dec 29 2012 .compiz
drwxrwxr-x 3 1000 1000 80 Oct 1 2013 .composer
drwx------ 46 1000 1000 1020 Dec 8 2013 .config
drwx------ 3 1000 1000 60 Dec 28 2012 .dbus
-rw-r--r-- 1 1000 1000 25 Jul 13 2013 .dmrc
drwx------ 3 1000 1000 380 Jan 6 10:31 .dropbox
drwxr-xr-x 6 1000 1000 1660 Dec 17 2013 .dropbox-dist
drwx------ 3 root root 60 Jun 30 19:13 .Eclipse
-rw------- 1 1000 1000 50282 Jan 6 10:29 .ICEauthority
drwxrwxr-x 14 1000 1000 340 Dec 7 2013 .PlayOnLinux
-rw-r--r-- 1 root root 2077491 Nov 23 2013 .Soulseek.1385165090491
-rw-r--r-- 1 root root 2076644 Nov 23 2013 .Soulseek.1385166430938
-rw-r--r-- 1 1000 1000 9986 Dec 30 20:02 .Soulseek.1388433748295
drwxrwxr-x 2 1000 1000 60 Oct 13 2013 .SyncWall
-rw------- 1 1000 1000 109 Jan 6 10:29 .Xauthority
-rw-rw-r-- 1 1000 1000 0 Jul 29 2013 .Xauthority.25Y20W
-rw-rw-r-- 1 1000 1000 0 Jul 13 2013 .Xauthority.7K14ZW
-rw-rw-r-- 1 1000 1000 0 Jul 7 2013 .Xauthority.7K7SZW
-rw-rw-r-- 1 1000 1000 0 Jul 13 2013 .Xauthority.9X1E0W
-rw-rw-r-- 1 1000 1000 0 Sep 1 2013 .Xauthority.A3D52W
-rw-rw-r-- 1 1000 1000 0 Sep 1 2013 .Xauthority.CEUV2W
-rw-rw-r-- 1 1000 1000 0 Jul 27 2013 .Xauthority.CP7Q0W
-rw-rw-r-- 1 1000 1000 0 Sep 8 2013 .Xauthority.E1ET2W
-rw-rw-r-- 1 1000 1000 0 Aug 26 2013 .Xauthority.E32K2W
-rw-rw-r-- 1 1000 1000 0 Sep 14 2013 .Xauthority.EKK92W
-rw-rw-r-- 1 1000 1000 0 Jul 12 2013 .Xauthority.F4QRZW
-rw-rw-r-- 1 1000 1000 0 Jul 25 2013 .Xauthority.ISVZ0W
-rw-rw-r-- 1 1000 1000 0 Jul 11 2013 .Xauthority.JU3UZW
-rw-rw-r-- 1 1000 1000 0 Aug 31 2013 .Xauthority.M30S2W
-rw-rw-r-- 1 1000 1000 0 Aug 1 2013 .Xauthority.M3H20W
-rw-rw-r-- 1 1000 1000 0 Sep 9 2013 .Xauthority.MKIN2W
-rw-rw-r-- 1 1000 1000 0 Aug 28 2013 .Xauthority.RWHB2W
-rw-rw-r-- 1 1000 1000 0 Jul 15 2013 .Xauthority.SN85ZW
-rw-rw-r-- 1 1000 1000 0 Sep 15 2013 .Xauthority.T22C3W
-rw-rw-r-- 1 1000 1000 0 Jul 14 2013 .Xauthority.T6CB0W
-rw-rw-r-- 1 1000 1000 0 Jul 31 2013 .Xauthority.VF7Q0W
-rw-rw-r-- 1 1000 1000 0 Sep 9 2013 .Xauthority.WGEX2W
-rw-rw-r-- 1 1000 1000 0 Aug 31 2013 .Xauthority.WZR52W
-rw-rw-r-- 1 1000 1000 0 Jul 25 2013 .Xauthority.YQIR0W
最も奇妙なのは、ドットで始まるすべてのファイルに加えて、Nautilusを使用してhome/luisディレクトリを参照できないことです。これは、実際にはすべてのバックアップデータが存在する場所でした。
duplicity
を使用して抽出します。
duplicity restore file:///path_to_folder_contains_backups/ path_where_to_extract_it/
GnuPGパスフレーズを入力して、を押します Enter
デフォルトでは、Duplicityは同じフォルダーのバックアップではなく、ソースフォルダーに最後のバックアップ(時間を比較)を復元します。異なるフォルダーに複数のバックアップがある場合、または同じフォルダーの特定の時刻が必要な場合は、--time
オプションの例を使用します。
duplicity restore --time 20140106T111233Z file:///path_to_folder_contains_backups/ path_where_to_extract_it/
探しているファイルが表示されない場合、試してください:
ソースフォルダーで使用可能なすべてのフル/ incバックアップに含まれるすべてのファイルをリストする関数を作成します。
ldup () {
for f in $(ls $1/duplicity-*.manifest.gpg); do
echo "========================================================================";
echo $f;
n=$(basename $f .manifest.gpg);
prefix=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $1 }');
if [[ "$prefix" == "duplicity-full" ]]; then
t=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $2 }');
else
t=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $4 }');
fi;
echo -e "Creation time:\t" $t;
echo "------------------------------------------------------------------------";
duplicity list-current-files --time $t file://$1/ | grep "$2";
done;
}
すべてのファイルをリストするには(末尾に/
がないことに注意してください):
ldup /path_to_folder_contains_backups
ファイル名のパターンを検索します。
ldup /path_to_folder_contains_backups pattern
参照:man duplicity
最初に複製を作成してみてください。duplicity --gio file:///media/backup /tmp/restore
ある程度詳細な(およびmostly正しい)ステップ ここ があります。
主な詳細
重要な点は、すべてのduplicity-full.*.difftar.gz
ファイルを同じ場所にアンパックすることです。これにより、2つのsnapshot/
およびmultivol_snapshot/
ディレクトリだけが残ります。
ファイルがsnapshot/
にあれば、完了です。それ以外の場合は、multivol_snapshot/
でファイルが使用されていたパスでディレクトリを見つけます。元のファイルを再作成するには、このディレクトリ内のすべてのファイルを結合する必要があります。ファイルには番号が付けられ、cat
コマンドを使用して結合できます。オリジナルの大きさに応じて、多くのパーツがある場合があります。
元の指示に関する問題
上記のリンクの指示は、cat * > rescued-file
の使用を提案しています。残念ながら、9個以上のパーツがある場合、この単純なアプローチは失敗します。 *
は辞書順ではなく、数字順で展開するため、10
は2
の前にリストされ、ファイルは間違った順序で再構築されます。
回避策
1つの簡単なアプローチは、辞書の順序doesが同じ長さの場合に機能し、?
が単一の文字に一致することを覚えておくことです。したがって、最大のファイルにthree桁がある場合、手動で入力できます。
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
を参照してください。