web-dev-qa-db-ja.com

無料のUbuntuソフトウェアまたは方法を使用して、フルシステム(UbuntuおよびWindows)を外部ハードドライブにバックアップするにはどうすればよいですか?

Lenovoラップトップ(80Q0001NUS)で障害が発生するたびにオペレーティングシステムをリセットする必要を回避するには、UbuntuおよびWindowsを完全にバックアップできる必要があります。私はtar.xzファイルを作成して外付けハードドライブに保存したいと思っていましたが、オンラインで検索した後でも何をすべきかは完全にわかりません。バックアップの目標は、UbuntuまたはWindowsを、圧縮およびアーカイブされたときの状態に正確に復元できるようにすることです。私はこれらのパーティションを持っています:

ストレージドライブ

128 GB SSD

  • / dev/sda1:FAT32/boot/efiパーティション
  • / dev/sda2:NTFS Windows 10プライマリパーティション
  • / dev/sda3:BTRFS Ubuntu Rootパーティション
  • / dev/sda4:パーティションの交換

1 TB HDD

  • / dev/sdb1:NTFS(Windows)ストレージパーティション
  • / dev/sdb2:EXT4(共有)ストレージパーティション
  • / dev/sdb3:BTRFS(Ubuntu)ストレージパーティション

4 TB HDD(外部バックアップドライブ)

  • / dev/sdc1:NTFSパーティション
  • / dev/sdc2:EXT4パーティション
  • / dev/sdc3:BTRFSパーティション

/ dev/sda1と/ dev/sdb1を(最良の方法であれば別々に)/ dev/sdc1に、/ dev/sdb2を/ dev/sdc2に、/ dev/sda3と/ dev/sdb3を/にバックアップしたいdev/sdc3。これらの各バックアップを簡単に整理できるようにする必要があります(バックアップ作成時と同じように各パーティションを復元するために使用できる単一ファイルのように)。また、必要に応じて高度に圧縮する必要があります。回避可能な場合、完全なパーティションをバックアップしたくありません。パーティションとストレージドライブの同様のセットアップに復元できる、書き込まれたデータを復元したいだけです。最後に、LiveCDなどのソフトウェアやファイルなどの損失を防ぐために、それらを使用してシステムを復元できるようにする必要があります。ファイルをダウンロードして、オペレーティングシステムを何度もセットアップする必要はありません。彼らが失敗する時。復元が完了したら、すべての構成、設定、ファイルなどを保持したいと考えています。これを行う最適な方法を教えてください。ありがとうございました。

2
NAE

私はあなたが私の説明からLiveUSBまたはLiveCDで起動し、基本的にanythingのルートが必要であると仮定します。

まず、「dd」とは何かを説明します。略語は「ディスクダンプ」を意味し、ファイルのブロックデバイス(つまりディスク)である基本的にすべてのイメージを作成できます。基本を見ていきましょう。

dd if=source-device of=target-device bs=blocksize count=numberofblocks
  • if入力ファイル、別名、データの取得元

  • of出力ファイル、別名、データの保存先

  • bsブロックサイズ、別名、メモリに「バッファリング」するデータ量。これを使用しない場合、基本的に1つのデバイスから別のデバイスに直接コピーされ、slooooooowになります。ほとんどの操作では、何かを指定してください。私は通常bs=1Gのようなものを使用します。もちろん、実際にこれを行うには、1GBのRAMが必要です。

  • count移動する「ブロック」(bsで定義される数量)の数。一般的な場合、すべてのブロックが必要なため、これは必要ありません。

ここで、/ dev/sdaという名前の128GBのSSDがあり、その上にあるすべてのものを含めて(操作と呼ばれる)完全に「イメージ化」したいことを想像してください。パーティションテーブル。/mnt/bigdiskに十分なスペースのあるバックアップディスクがあります。ディスク全体をイメージするには、次のコマンドを発行します。

dd if=/dev/sda of=/mnt/bigdisk/backup-20160812.img bs=1G

これにはかなり時間がかかりますが(4TBのディスクでこれを行うまでは生きていません)、最後に/ mnt/bigdiskにbackup-20160812.imgという名前の128GBファイルが見つかります。その間、ddは何も出力せず、システムパフォーマンスの大幅な低下に気付くでしょう。ああ、すべての良いものを愛するために、単一のパーティションではなくnothingがマウントされているか、/ dev/sdaを使用していることを確認してください。

大きなファイルを取得したら、実際のディスクで何でもできます(物理的な破壊を除く)。復元したい場合は、次を実行します。

dd if=/mnt/bigdisk/backup-20160812.img of=/dev/sda bs=1G

これらは正確なコピーであり、次のことを意味します。

  • 大きなファイルのサイズは、まさにディスクのサイズです
  • 明らかに、そのサイズより小さいディスクに復元することはできません
  • より大きなディスクに復元しても、動作しない場合があります。通常、必要なパーティションの後に巨大な空き領域ブロックが続きます。多くのサイズ変更が必要になります。SSDの場合は、位置合わせを確認してください。
  • ソースディスクに欠陥がある場合、ddはエラーが発生すると停止します。これが望ましくない場合は、追加のパラメーターを指定する必要があります。 manページは明らかにあなたの友達です。
  • 繰り返しますが、すべてがイメージ化されます未使用のスペースでも。 100GBのディスクがあり、使用率が10%しかない場合、ファイルのサイズは100GBになり、未使用ブロックのコピーにかかる時間の90%が無駄になります。

この知識があれば、ddを使用して単一のパーティションをバックアップできます。次のコマンドを見て、理由がわかるかもしれません:

dd if=/dev/sda1 of=/mnt/bigdisk/backup-sda1-20160812.img bs=1G

唯一の違いは、/dev/sdaの代わりに/ dev/sda1を使用することです(別のターゲットファイル名を使用しました)。どうして? /dev/sdaはディスク全体を表し、/dev/sda1はそのディスクの最初のパーティションを表すためです。それだけです...ビット単位のコピーであることに関するすべての発言は持続します。

ddに生成されたファイルはgzip圧縮でき、ファイルが小さくなります。パイプを使用してこれを行うことができます。 imageコマンドは次のようになります。

dd if=/dev/sda bs=1G | gzip > /mnt/bigdisk/backup-20160812.img.gz

復元コマンドは次のようになります。

dd if=/mnt/bigdisk/backup-20160812.img.gz bs=1G | gunzip > /dev/sda

理解のための一般的な注意事項:ofを省略すると、すべての出力がstdoutに送信されます。このデータは、パイプ|を使用してgzip(またはgunzip)に送信されます。 gzip/gunzipには指定されたファイルがないため、このデータを使用してgzipします。出力はstdoutに送信され、>シンボルを使用してファイルに送信されます。

Ntfsパーティションに移りましょう。 ntfsclone調べたい関連ツールが他にもあります(ntfsresizentfsfix。コマンドラインでntfsと入力し、タブ補完を行う)すべてのビットをコピーする代わりに、ntfscloneはコピーしますファイルシステムの構造とデータ(特に指定しない限り)。したがって、未使用のスペースは無視されます。これは、ファイルがはるかに小さく、ntfsパーティションの実際の「使用済み」ファイルサイズよりも大きくないという事実に変換されます。コマンドも:

ntfsclone -s -o /mnt/bigdisk/backup-20160812-sda2.ntfsclone /dev/sda2

動作中にあらゆる種類の情報を提供します。これは、ddよりも安心です。とにかく、それはすべてどういう意味ですか?

  • -s画像を保存することを意味します(デバイスからデバイスへのクローンは行いません)--oどこにデータを送信しますか。この場合、ファイル。ファイルが存在する場合、上書きを拒否します。
  • コマンドの最後のオプションはソース、この場合はsdaのパーティション2です。

復元の場合:

ntfsclone -r -O /dev/sda2 /mnt/bigdisk/backup-20160812-sda2.ntfsclone

繰り返しますが、なだめるような情報と、これがオプションの意味です。

  • -rは、イメージからの復元を意味します。基本的に、復元用の-sペンダントです。
  • -Oはデータを書き込む場所です。この場合、大文字の-Oになります。ファイルが上書きされるためです。 /dev/sda2は既に存在し、上書きするため、これが必要です。
  • 最後のオプションは、データのソースです。これは、明らかに、最初のコマンドで作成したファイルです。

これらの画像のサイズは変更できません。ファイルサイズに基づいて適合する場合でも、小さなディスク/パーティションに復元することはありません。バックアップされたファイルシステムの構造は、ディスクのサイズに制限されます。そのため、10GBのデータを含む100GBのパーティションで作成したイメージは、より小さな50GBに収まる可能性がありますが、機能しません。より大きなパーティションに復元できますが、構造は同じままであるため、実際にその余分なスペースを使用するには、ntfsresizeを使用する必要があります。

dumpに行きましょう。私のコメントで述べたように、私はこれを何年も使用していません。 Linuxの再インストールは基本的に痛みがないことを知っているので、特に/ homeを別のパーティションに置いている場合、データファイルをバックアップするだけです。ここに書かれているのは、基本的に私が書いている間に見つけたものです。ダンプを使用する私のOpenBSDバックアップスクリプトは非常に古いので、それらがどのように機能するかをまだ知っていると言うことを敢えてしません。を投げ捨てます。

dump -0 -f /mnt/bigdisk/backup-20160812-sda3.dump /dev/sda3

繰り返しますが、これはどういう意味ですか?

  • -0は、ダンプのレベルです。これは増分バックアップを行うことであり、非常に便利ですが、今のところ、レベル0ダンプはファイルシステム全体を意味することを覚えているでしょう。
  • -fダンプのデータは、指定されたファイルに送信されます。この場合、/mnt/bigdisk/backup-20160812-sda3-level0.dump

戻す?さて、クリーンなファイルシステムとマウントされたファイルシステムにしか復元できないことを知っておく必要があります。そのため、まずターゲットがクリーンにフォーマットされ、マウントされていることを確認する必要があります。

mkfs.ext4 /dev/sda3
mount /dev/sda3 /mnt
cd /mnt
restore -r -f /mnt/bigdisk/backup-20160812-sda3-level0.dump
  • -rは復元を意味します
  • -fファイルから
  • ターゲットは現在のディレクトリであるため、/ mnt

restore: ./lost+found: File existsは新しく作成されたファイルシステムに存在するため、おそらくlost+foundのような警告が表示されます。

おもしろいことに、それが機能する方法を考えると、より小さなディスクに復元できるはずですが、私は試していません。

これで、「マウント」に対処しました。これらの操作は、ダンプの復元部分を除いて、マウントされたディスクでは実行しないでください。

最後に、MBRとGPTのバックアップ:MBRは簡単で、正直なところ、ディスクが2TBを超えない限り、MBRを使用することを好みます。とにかく、MBRは基本的にディスク上のブロック0であり、最初の部分はブートコードで、2番目の部分はパーティションテーブルです。最初のセクターの最初の446バイト、次の66バイトがパーティションです。したがって、ブートコードのみを抽出すると、次のようになります。

dd if=/dev/sda of=/mnt/bigdisk/backup-20160812-bootcode.dd bs=446 count=1

パーティションテーブルを使用してブートコードを抽出すると、次のようになります。

dd if=/dev/sda of=/mnt/bigdisk/backup-20160812-mbr.dd bs=512 count=1

それでおしまい。明らかに、これらをまったく同じディスク(またはまったく同じ特性を持つディスク)にのみ復元できます。

ご覧のとおり、MBRは単純です。 GPTはそうではなく、苦痛です。 GPTは可変長であり、理解を深めるためにGoogleを使用することをお勧めします。これをテストしているマシンにGPTディスクがないので、すべてを再確認してください。私がGoogleから使用するツールはgdiskです。悲しいかな、それはインタラクティブなツールのようです。それは問題ありませんが、シンプルなワンライナーが必要です。

printf "b\\n/mnt/bigdisk/backup-20160812-gpt.gdisk\n" | gdisk /dev/sda

基本的に、テキストを送信します。

b
/mnt/bigdisk/backup-20160812-gpt.gdisk

アプリケーションgdiskでデバイス/dev/sdaで作業しています。ファイル/mnt/bigdisk/backup-20160812-gpt.gdiskには、GPTのバックアップが含まれているはずです。復元はこのようなものでなければなりませんが、私は試していないので、自己責任で使用してください。

printf "b\\nr\\nl\\n/mnt/bigdisk/backup-20160812-gpt.gdisk" | gdisk /dev/sda

これにより、次のテキストが対話型gdiskメニューに表示され、リカバリモードに移行してファイルから復元されます。

DdとともにGoogling GPTを起動すると、GPTで使用されるuuidのためにこれを行わないように警告する多くの人々が表示されます。確かにそうです:同じシステム内で同じuuidを持つ2つのディスクがアクティブな場合、willの問題が発生します。もちろん、それはあなたがここでやっていることではありません。ファイルへのコピーに固執する場合、システムには2つの同一のUUIDがあります(これは私のすべての例が行うことです)

ご覧のとおり、これは消化するのにかなり大きな情報であり、スペルミスやタイプミスなどのためにもう一度読む必要はありません。すべてが多すぎる場合は、 Clonezilla 。実際に必要なものに近いかもしれません。私があなたにそれを伝えることから始めていたなら、私はそんなに多くの文章さえ保存したかもしれません。

3
jawtheshark