ハードドライブをバックアップする必要があります。dd
画像を外付けハードドライブに使用して保存したいです。
- ハードドライブ自体のオペレーティングシステムを使用してこれを実行できますか?
dd
それとも別のデバイス(LiveCDなど)から起動する必要がありますか? - 通常、機器が設置されて動作している場合は、その機器の画像を撮影するのは安全ですか?
dd
デバイスがマウントされていますが、実行中に他のI / O操作がないと確信している場合はどうなりますか?
rsync
私はこれがバックアップ、特に増分バックアップのための最高のツールであると確信しています。
dd
ところで、他の記憶装置もバックアップしたい、分割されていない空間に保存されたデータもコピーしたいので興味があります。たとえば、私の電子ブックリーダーは、分割されていないスペースを使用して、uboot、カーネル、その他のデータを保存します。
答え1
通常、これは安全ではありません。 FS はジョブが特定の順序で書き込まれると想定するため、ファイルに新しいデータを書き込んでから、別のデータからそのデータへのポインタを作成できます。詳細はファイルシステムによって異なります。次のことが起こると想像してください。
dd
ガベージまたは一部のデータを含む場所Xから読み込みます。- ファイルシステム書き込み位置X
- ファイルシステム書き込み位置X + 1位置Xへのポインタ
dd
リンクはX + 1位置からX位置まで読み取られます。
バックアップの観点からは、ジャンクデータが発生します。ただし、この問題を解決する方法はいくつかあります。
- ファイルシステム特定のコマンドを介してファイルシステムを固定します(私は
xfs_freeze
それが1つだと思い、他のコマンドはわかりませんが、そのようなオプションは少なくとも理論上存在します) - lvmスナップショットを作成してコピーします。コピーはコンピュータを再起動したかのように作成されるため(HDDの並べ替えを除く)、ダーティファイルシステムになりますが、コピーはアトミックに作成されます。一部のファイルシステム(XFSなど)は、まず固定する必要があります。
- 他の人が提案したようにrsyncを使用してください。これでコピーは安全で、LVMは必要ありませんが、コピーはアトミックではありません。したがって、ファイルシステムレベルで上記の問題を回避しながら、ファイルの問題が引き続き発生する可能性があります(たとえば、バックグラウンドでmvを実行している間にファイルが失われる可能性は低いかもしれませんが)。
- スナップショットのあるファイルシステムを使用してください。BTFS、タキシード3、ジブス、ネルベス...これにより、両方の問題を回避できます。スナップショットを作成し、完全にアトミックなrsyncを介してコピーします。しかし、これらのファイルシステムは実験的なケースが多い。
最後の注意 -dd
おそらく最善のバックアップ方法ではありません。ディスク全体をコピーしますが、これは「ゴミ」もコピーするため、通常は無駄です。同様のディスクイメージが必要な場合画像の一部より良いかもしれません。より良いオプションがない場合は、rsync、tarなどの差分/増分モードを使用するか、フルバックアップシステムを使用してください。バキュラム、タスナップまたは他の多くのものの一つです。重複排除は、バックアップサイズの点で驚くべき効果を発揮します。
答え2
これは、パーティションの特定の目的とレプリカの目的によって異なります。しかし、私は一般的に言うとdd
ファイルシステムのバックアップに適したツールではありません。。それはもともと意図ではありません。
パーティションの空の部分をコピーすると、多くの時間が無駄になります。
ファイルシステムが現在マウントされている場合、一部はオペレーティングシステムレベルのエンティティであり、プライマリブロックデバイスと同期していない可能性があるため、不一致が発生する可能性があります。最初の通話は、プロセスが
sync
すぐには行われないため、この作業にはあまり役に立ちません。
使用cp -a
またはrsync
交換してください。もちろん、ターゲットパーティションを作成する必要があるため、簡単ではありませんが、より安全で柔軟です。ファイルシステムを作成する必要がある場合ビデオ、以下を参照してください。
ルートファイルシステムをコピーする予定の場合は、絶対に使用しないでくださいdd
。rsync -ax
cp -ax
コピーには表示されない可能性があります。 Linux の場合、これには以下が含まれます。
/dev
/lost+found
/mnt
/proc
/run
/sys
/tmp
これらのいくつかは、実際にはディスク上の実際のディレクトリではなく、カーネルインターフェイスです。これをコピーすることは、コピーに適用されない多くの情報をコピーすることです。これを使用してシステムを実行しようとすると、物理インターフェイスが一番上にインストールされるため、スペースを無駄にするだけです。他のものにはプロセスの実行に使用される一時的な情報が含まれています。コピーすると、システムがゴミを分類できないため、より大きな問題になります。
ルートファイルシステムのイメージファイルを生成する場合(またはすべてのファイルシステム)、空の画像ファイルを生成します。これは次の用途に適していますdd
。
dd if=/dev/zero of=whatever.img bs=1024 count=1000000
1024MB イメージ (1000000 * 1024)。count
他のサイズをご希望の場合は調整してください。たとえば、ext
ファイルシステムを作成します。ファイルに:
mke2fs whatever.img
実際のブロックデバイスではないという警告メッセージが表示されます。続く。これでイメージファイルをマウントします。
mount whatever.img /mnt/img
/mnt/img
存在する必要がありますが、何でもできます。今入力することができますrsync
(または)。削除してもコンテンツは内部に残ります。cp -a
/mnt/img
whatever.img
しかし...
明確に言えば、何らかの理由でイメージファイルが必要な場合にのみ、説明したファイルシステムイメージ方法を使用してください。パーティションを別のハードドライブにコピーすることが目的であれば、画像は必要ありません:そのドライブに空のファイルシステムを持つ新しいパーティションを作成してマウントし、そこにコピーします。ファイルシステムの内容を空のディレクトリに配置してアーカイブできます。
tar -czf myarchive.tar.gz [the directory path]
その後、それを既存の(空または他の)パーティションの上に配置し、次のように展開できます。
tar -xzf myarchive.tar.gz
そのパスがアーカイブのエントリと一致すると、既存のファイルが上書きされます。それ以外の場合、既存のディレクトリ階層は変更されずにそのまま残ります。
答え3
rsyncはファイルシステムのバックアップ用に選択されたツールで、現在実行されているオペレーティングシステムの起動可能なバックアップを作成できます。
いくつかの注意:
- 適切なアルファベットスープオプションを追加する必要があります。
- パスは非常に重要です。
- 除外リストは必須であり、オペレーティングシステムと構成によって異なる場合があります。
tarのような他の方法と比較して、rsyncの利点は次のとおりです。
- いつでもバックアップを停止して開始できます。
- 要求に応じて削除、以前の削除、移動など、置き換えられたファイルを処理するためのさまざまなオプション
- バックアップを復元(または繰り返す)たくさん以前にコピーしたファイルをスキップするため、他の方法よりも高速です。 (20倍速向上が一般的です)
- --link-dest オプションは、実際に新しいファイルのコピー中にバージョン管理されたバックアップを作成します。
イメージのバックアップは、その場所が存在するが発生する可能性のあるすべての問題を含むドライブをそのままコピーします。ファイルバックアップはまったく新しいディレクトリを作成し、プロセス内のドライブを線形化(断片化)します。現在のオペレーティングシステムに対して10個の同じコピーを作成したい場合は、rsyncをコピーマスターとして使用し、dd(または同様)を使用して残りの作業を実行します。
答え4
使用クローン属、真剣に。 Norton Ghostのような最高のオープンソースLinuxベースのユーティリティです。パーティション複製とディスク全体の複製、ディスクからディスクへ、またはディスクからファイルシステムへ(ファイルとして保存)を実行します。ほとんどのLinuxファイルシステム、NTFS、FAT32などをサポートしています。内部ディスク、外部ドライブ、またはネットワーク経由のSMBまたはNFS共有にも保存できます。
使いやすく、時間を節約できます。
編集:いいえ、質問に答えるには、dd
ブロックデバイスから読み取ることが原子的ではないため、ほとんどのファイルシステムをマウントできないため、ファイルシステムのコピーが一貫しない危険があります。たとえば、100個のブロックをコピーすると、システムは最初のブロックと最後のブロックを途中で更新した可能性があります。つまり、コピーには最後に変更されたブロックが含まれますが、最初のブロックは含まれません。