この記事は、Manningが発行したLinuxinActionの第4章から抜粋したものです。
死にかけているストレージドライブからデータを救出しようとしている場合でも、アーカイブをリモートストレージにバックアップしている場合でも、アクティブパーティションの完全なコピーを別の場所に作成している場合でも、ドライブとファイルシステムを安全かつ確実にコピーする方法を知る必要があります。幸い、dd
はシンプルで強力な画像コピーツールであり、ほぼ永遠に使用されています。そして、その間ずっと、仕事をより良くするものは何もありません。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
dd
でできることはたくさんあります あなたが十分に研究しているが、それが輝いているのは、パーティションで遊ぶことができる方法です。もちろん、tar
を使用することもできます またはscp
1台のコンピューターからファイルをコピーし、別のコンピューターの新しいLinuxインストールの上にそのまま貼り付けることで、ファイルシステム全体を複製します。ただし、これらのファイルシステムアーカイブは完全なイメージではないため、ベースとして機能するには、両端で実行中のホストOSが必要になります。
dd
を使用する 一方、ほぼすべてのデジタルの完全なバイト単位の画像を作成できます。しかし、地球の一方の端からもう一方の端にパーティションを投げ始める前に、その古いUnix管理者のジョークにはいくつかの真実があることを言及する必要があります: " dd disk destroyerの略です 。"dd
に間違った文字を1つでも入力した場合 コマンドを使用すると、貴重なデータのドライブ全体を即座に永続的に消去できます。はい、スペルは重要です。
覚えておいてください: Enterキーを押す前に 呼び出す dd
、 一時停止して、慎重に考えてください!
適切に警告されたので、簡単なことから始めましょう。 /dev/
として指定されたデータのディスク全体の正確なイメージを作成するとします。 sda
。空のドライブを接続しました(理想的には/dev/
と同じ容量です sda
システム)。構文は単純です:if=
ソースドライブとof=
を定義します データを保存するファイルまたは場所を定義します:
# dd if=/dev/sda of=/dev/sdb
次の例では、/dev/
の.imgアーカイブを作成します sda
ドライブして、ユーザーアカウントのホームディレクトリに保存します:
# dd if=/dev/sda of=/home/username/sdadisk.img
これらのコマンドは、ドライブ全体のイメージを作成しました。ドライブからの単一のパーティションに焦点を当てることもできます。次の例ではそれを行い、bs
も使用します 一度にコピーするバイト数(この場合は4,096)を設定します。 bs
で遊ぶ 値は、dd
の全体的な速度に影響を与える可能性があります ただし、理想的な設定はハードウェアプロファイルやその他の考慮事項によって異なります。
# dd if=/dev/sda2 of=/home/username/partition2.img bs=4096
復元は簡単です。事実上、if
の値を逆にします。 およびof
。この場合、if=
復元したい画像を取得し、of=
イメージを書き込みたいターゲットドライブを取得します:
# dd if=sdadisk.img of=/dev/sdb
1つのコマンドで作成操作とコピー操作の両方を実行することもできます。たとえば、この例では、SSHを使用してリモートドライブの圧縮イメージを作成し、結果のアーカイブをローカルマシンに保存します。
# ssh [email protected] "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz
アーカイブを常にテストして、機能していることを確認する必要があります。作成したブートドライブの場合は、コンピューターに貼り付けて、期待どおりに起動するかどうかを確認します。通常のデータパーティションの場合は、ファイルをマウントして、ファイルが存在し、適切にアクセスできることを確認します。
ddでディスクをワイプする
数年前、私には彼の政府の海外大使館でセキュリティを担当した友人がいました。彼はかつて私に、彼の監視下にある各大使館には公式の政府発行のハンマーが提供されていると言った。なんで?施設が不親切な人に襲われる危険にさらされた場合、ハンマーを使用してすべてのハードドライブを破壊することになりました。
あれは何でしょう?データを削除してみませんか?冗談でしょ?機密データを含むファイルをストレージデバイスから削除しても、実際にはデータが削除されないことは誰もが知っています。十分な時間とモチベーションがあれば、十分に適切に打たれたものを除いて、ほぼすべてのデジタルメディアからほぼすべてのものを取得できます。
ただし、dd
は使用できます 悪意のある人があなたの古いデータを入手するのをずっと難しくするためです。このコマンドは、/dev/sda1
の隅々まで何百万ものゼロを書き込むのに時間を費やします。 パーティション:
# dd if=/dev/zero of=/dev/sda1
しかし、それは良くなります。 /dev/
を使用する urandom
ソースとしてファイルを使用すると、ランダムな文字でディスクに書き込むことができます:
# dd if=/dev/urandom of=/dev/sda1
dd操作の監視
ディスクまたはパーティションのアーカイブには非常に長い時間がかかる可能性があるため、コマンドに進行状況モニターを追加することをお勧めします。 Pipe Viewerをインストールします(sudo apt install pv
Ubuntuの場合)、dd
に挿入します 。 pv
を使用 、その最後のコマンドは次のようになります:
# dd if=/dev/urandom | pv | dd of=/dev/sda1
4,14MB 0:00:05 [ 98kB/s] [ <=> ]
バックアップとディスク管理を延期しますか? ddを使用すると、言い訳が多すぎることはありません。それほど難しいことではありませんが、注意してください。頑張ってください!