GNU/Linux >> Linux の 問題 >  >> Linux

ディスクを破壊せずにLinuxでddを使用する方法

この記事は、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 一時停止して、慎重に考えてください!

基本的な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を使用すると、言い訳が多すぎることはありません。それほど難しいことではありませんが、注意してください。頑張ってください!


Linux
  1. LinuxでBusyBoxを使用する方法

  2. Linuxでcronを使用する方法

  3. OpenSSHを使用してLinuxサーバーに接続する方法

  1. Linuxでディスクをパーティション分割する方法

  2. LinuxでFINDを使用する方法

  3. LinuxでSuコマンドを使用する方法

  1. Linuxのアクセシビリティ設定の使用方法

  2. Linuxでプリンタを設定する方法

  3. Linux で fdisk を使用してディスクをパーティション分割する方法