「ディスクのクローン」の版間の差分
(→ディスククローンソフトウェア: 英語版と同期してDeepin Cloneを翻訳して追加) |
Kusanaginoturugi (トーク | 投稿記録) (→dd を使う: 英語版に差し替え) |
||
16行目: | 16行目: | ||
== dd を使う == |
== dd を使う == |
||
+ | See [[dd#Disk cloning and restore]]. |
||
− | dd コマンドはシンプルでありながら、多目的に使える強力なツールです。ファイルシステムのタイプやオペレーティングシステムとは関係なく、ブロックごとに、コピーを行うことができます。ライブ CD などの、ライブ環境から dd を使用すると便利です。 |
||
− | |||
− | {{Warning|この種のコマンドの常として、使うときは慎重にならなければなりません。さもないとデータを破壊するおそれがあります。入力ファイル ({{ic|1=if=}}) と出力ファイル ({{ic|1=of=}}) の順序に注意し、逆にしないように!必ずコピー先ドライブまたはパーティション ({{ic|1=of=}}) のサイズがコピー元 ({{ic|1=if=}}) のサイズ以上になっているようにしてください。}} |
||
− | |||
− | === パーティションのクローン === |
||
− | |||
− | 物理ディスク {{ic|/dev/sda}} のパーティション 1 を、物理ディスク {{ic|/dev/sdb}} のパーティション 1 に複製。 |
||
− | # dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress |
||
− | |||
− | {{Warning|出力ファイル {{ic|1=of=}} (この例では {{ic|sdb1}}) が存在しない場合は、ルートファイルシステムにこの名前のファイルが作成されてしまいます。}} |
||
− | |||
− | === ハードディスク全体のクローン === |
||
− | |||
− | 物理ディスク {{ic|/dev/sd''X''}} を物理ディスク {{ic|/dev/sdY}} に複製: |
||
− | # dd if=/dev/sd''X'' of=/dev/sd''Y'' bs=64K conv=noerror,sync status=progress |
||
− | |||
− | このコマンドは MBR (とブートローダー)、全てのパーティション、UUID、データを含めディスクの全てを複製します。 |
||
− | * {{ic|1=bs=}} はブロックサイズをセットします。デフォルトはハードドライブの「古典的な」ブロックサイズである 512 バイトですが、64K や 128K など大きな値を使ったほうが最近の事情には即しています。また、以下の警告も読んでください。これはブロックサイズを変えるだけでなく、読み取りエラーがどのように伝播するかにも関係しています。どの値が最適なのかは [https://www.mail-archive.com/eug-lug@efn.org/msg12073.html] や [http://blog.tdg5.com/tuning-dd-block-size/] などを読んでください。 |
||
− | * {{ic|noerror}} は読み取りエラーを全て無視して操作を続行します。dd のデフォルトの挙動ではエラーがあると dd は動作を停止します。 |
||
− | * {{ic|sync}} は読み取りエラーが存在した場合、入力ブロックをゼロで埋めるため、データのオフセットも同期します。 |
||
− | * {{ic|1=status=progress}} は定期的に転送の統計を表示して、操作が完了するまでの時間を見積もることができます。 |
||
− | |||
− | {{Warning|ブロックサイズを指定すると、読み取りエラーの制御方法が影響を受けます。以下を読んでください。}} |
||
− | |||
− | dd では入力ブロックサイズ (IBS) と出力ブロックサイズ (OBS) の指定ができます。{{ic|bs}} をセットすると IBS と OBS の両方をセットしたことになります。例えばブロックサイズを 1MiB にすると、通常は 1024*1024 バイト単位で読み書きします。しかし読み取りエラーが起きるとおかしくなります。{{ic|noerror,sync}} オプションを使うと dd は読み取りエラーをゼロで埋めるようになると思いがちですが、そうではありません。ドキュメントによると dd は''読み取りが完了した後で'' OBS を IBS と同じサイズになるようゼロ埋めします。つまりそのブロックの''最後''にゼロが追加されます。したがって、1MiB のブロックの最初でたった 512 バイトの読み取りエラーがあるだけで、1MiB 全体が駄目になってしまうことを意味します。例えば 12ERROR89 というデータの読み取り部分にエラーがあると、結果は 120000089 ではなく 128900000 になります。 |
||
− | |||
− | 自分のディスクにエラーがないと自信を持てるなら、ブロックサイズを大きくしてもよいでしょう。そうするとコピー速度が数倍向上します。例えば、単純な Celeron 2.7 GHz のシステムで bs を 512 から 64 KiB に変えたところ、コピー速度は 35 MB/s から 120 MB/s になりました。しかしくれぐれも、コピー元ディスクで読み取りエラーがあった場合はコピー先ディスクで''破損ブロック''になってしまうことに注意してください。つまり 512 バイトの読み取りエラーが1回あるだけで出力先ブロックの 64 KiB 全体が駄目になってしまいます。 |
||
− | |||
− | {{Tip|''dd'' の進捗状況を表示したい場合、{{ic|1=status=progress}} オプションを使って下さい。詳しくは [[Core Utilities#dd]] を参照。}} |
||
− | |||
− | {{Note| |
||
− | * ext2/3/4 ファイルシステムで一意な UUID を復活させるには、各パーティションで {{ic|tune2fs /dev/sd''XY'' -U random}} を実行してください。 |
||
− | * ''dd'' で変更したパーティションテーブルはカーネルには認識されません。再起動することなしにカーネルに変更を通知するには、([[GNU Parted]] に含まれる) partprobe のようなユーティリティを使ってください。 |
||
− | }} |
||
− | |||
− | === パーティションテーブルのバックアップ === |
||
− | |||
− | [[fdisk#バックアップとリストア]]を見てください。 |
||
− | |||
− | === ディスクイメージの作成 === |
||
− | |||
− | 1. liveCD や liveUSB から起動。 |
||
− | |||
− | 2. コピー元ドライブの全てのパーティションがマウント解除されていることを確認する。 |
||
− | |||
− | 3. 外部 HD をマウント。 |
||
− | |||
− | 4. ドライブをバックアップ: |
||
− | # dd if=/dev/sd''X'' conv=sync,noerror bs=64K | gzip -c > ''/path/to/backup.img.gz'' |
||
− | |||
− | 必要であれば (外部 HD が FAT32 でフォーマットされている場合など) ディスクイメージを分割します (''split'' の [[man ページ]]を参照): |
||
− | |||
− | # dd if=/dev/sd''X'' conv=sync,noerror bs=64K | gzip -c | split -a3 -b2G - ''/path/to/backup.img.gz'' |
||
− | |||
− | ローカルに十分なディスク空き容量がない場合は、イメージを ssh で転送することができます: |
||
− | |||
− | # dd if=/dev/sd''X'' conv=sync,noerror bs=64K | gzip -c | ssh user@local dd of=backup.img.gz |
||
− | |||
− | 5. イメージ内に保存されたパーティションテーブルを解釈できるようにするために、ドライブのレイアウトに関する付加情報を保存します。その情報の中で最も重要なのはシリンダーサイズです。 |
||
− | |||
− | # fdisk -l /dev/sd''X'' > ''/path/to/list_fdisk.info'' |
||
− | |||
− | {{Note|使用するブロックサイズ ({{ic|1=bs=}}) はバックアップするハードディスクのキャッシュ容量に合わせると良いでしょう。例えばキャッシュが 8 MiB なら {{ic|1=bs=8192K}} とします。この記事で使っている 64 Kib はデフォルトの {{ic|1=bs=512}} バイトよりも高速に動作しますが、更に大きい {{ic|1=bs=}} を指定すれば高速化できます。}} |
||
− | |||
− | === システムのリストア === |
||
− | |||
− | システムをリストアするには: |
||
− | # gunzip -c ''/path/to/backup.img.gz'' | dd of=/dev/sd''X'' |
||
− | |||
− | もしくはイメージが複数のボリュームに分かれている場合: |
||
− | # cat ''/path/to/backup.img.gz*'' | gunzip -c | dd of=/dev/sd''X'' |
||
== ddrescue を使う == |
== ddrescue を使う == |
2021年10月29日 (金) 15:36時点における版
ディスクのクローンとはパーティションやハードドライブ全体のイメージを作成することを言います。バックアップやリカバリ用に他のコンピューターにドライブをコピーするのに役立ちます。
dd を使う
See dd#Disk cloning and restore.
ddrescue を使う
ddrescue はデータの複製・復元のために作られたツールです。ファイルやブロックデバイスからデータを別の場所 (ハードディスクや CD-R など) にコピーして、読み取りエラーが発生したドライブから無事な部分を救い出すことができます。
故障したドライブから複製する場合、ddrescue を2回実行してください。1回目では、読み取りエラーが存在しないブロックをコピーして rescue.log
にエラーを出力します:
# ddrescue -f -n /dev/sdX /dev/sdY rescue.log
2回目では、不良ブロックだけをコピーして何とかデータを取り出せないか3回コピーを試します:
# ddrescue -d -f -r3 /dev/sdX /dev/sdY rescue.log
コピーできたらファイルシステムをチェックして新しいドライブをマウントしてください:
# fsck -f /dev/sdY
e2image を使う
e2image は e2fsprogs にデバッグ用として含まれているツールです。使用ブロックのみをコピーして効率的に ext2, ext3, ext4 パーティションをコピーできます。e2image が使えるのは ext2, ext3, ext4 ファイルシステムだけです。未使用ブロックはコピーされないため、削除したファイルを復元するのには役に立ちません。
e2image を使って、物理ディスク /dev/sda
の1番目のパーティションを物理ディスク /dev/sdb
の1番目のパーティションに複製するには:
# e2image -ra -p /dev/sda1 /dev/sdb1
ディスククローンソフトウェア
以下のアプリケーションはファイルシステム全体をバックアップして、故障したときに簡単に復元することができます。ほとんどが Live CD や USB ドライブとして使えます。特定の時間の完全なシステムイメージを保存することができ、良い状態の設定を確認したいときにもよく使われます。
完全なシステムバックアップを作成できる他のアプリケーションについてはバックアッププログラムを参照してください。
- Acronis True Image — Windows 用の商用ディスク複製ツール。(Windows の中から) ライブ環境を作成できるため、使用するマシンに Windows がインストールされていなくても使えます。ウェブサイトで Acronis ソフトウェアを登録すれば、Linux ベースのライブ CD や Windows ベースのライブ環境 CD を作成するための BartPE のプラグインをダウンロードできます。Windows ベースの Windows PE のライブ CD を作成することも可能です。Acronis によって作成された ISO ライブ CD イメージは ハイブリッドブート 機能を持っていないため直接 USB ストレージに書き込むことはできません。
- Arch Backup — シンプルな設定を使用する平凡なバックアップスクリプト。
- 圧縮方法を設定可能。
- 複数の場所にバックアップ。
- Clonezilla — 障害復旧、ディスククローン、ディスクイメージング、デプロイメントソリューション。
- Deepin Clone — Deepin によるバックアップとリストアのツール。ディスクまたはパーティションのクローン作成、バックアップ、リストアをサポートします。
- FSArchiver — 安全で柔軟性のあるファイルシステムバックアップ・デプロイメントツール。
- 基本的なファイル属性をサポート (パーミッション, 所有者, ...)。
- ひとつのアーカイブで複数のファイルシステムをサポート。
- (SELinux によって使われる) 拡張属性をサポート。
- 全ての Linux ファイルシステムで共通のファイルシステム属性をサポート (ラベル, uuid, ブロックサイズ)。
- ntfs ファイルシステム をサポート (Windows パーティションの複製を作成可能)。
- アーカイブに書き込まれたデータのチェックサムを作成 (ヘッダ, データブロック, ファイル全体)。
- 破損しているアーカイブの復旧ができます (作業ファイルをスキップ)。
- lzo, gzip, bzip2, lzma のマルチスレッド圧縮。
- 巨大なアーカイブを複数のファイルに分割することでファイルの最大容量を固定することができます。
- パスワードによるアーカイブの暗号化。OpenSSL の libcrypto による blowfish を使用。
- マウントされている root ファイルシステムのバックアップのサポート (-A オプション)。
- System Rescue CD に同梱されています。
- Mondo Rescue — バックアップメディアを作成する障害復旧ソリューション。損害を受けたシステムを再配置することができます。
- イメージベースのバックアップ。Linux/Windows をサポート。
- 圧縮率は調整可能。
- ライブ環境をバックアップできます (システムを止める必要がありません)。
- イメージを多数のファイルに分割可能。
- Live CD で起動することで完全なリストアが出来ます。
- NFS, CD, テープドライブなどのメディアからバックアップ・リストアできます。
- バックアップの検証ができます。
- Partclone — 使用しているブロックだけを考慮してパーティションをバックアップ・リストアできるツール。
- PartedMagic — PartImage などのリカバリツールが同梱されているライブ CD/USB。
- Partimage — Linux/UNIX 環境向けのディスク複製ユーティリティ。
- Q7Z — Linux 向けの P7Zip GUI。データの圧縮とバックアップを楽にします。次の圧縮ファイルを作成することが可能: 7z, BZip2, Zip, GZip, Tar。
- 既存のアーカイブを素早くアップデート。
- 複数のフォルダを一つのストレージにバックアップ。
- 保護されたアーカイブを作成・展開。
- アーカイブのプロファイル・リストを使うことで負担を軽減。
- Redo Backup and Recovery — Linux CD ブータブルイメージから実行できるバックアップ・障害復旧アプリケーション。
- http://www.redobackup.org/ || パッケージが存在しないか AUR で検索
- System Tar & Restore — フルシステムバックアップと復元を行うための bash スクリプトのセット。
- CLI とダイアログインターフェイス。
- 簡単なバックアップと復元ウィザード。
- .tar.gz, .tar.bz2, .tar.xz, .tar アーカイブを作成。
- openssl / gpg 暗号化をサポート。
- rsync を使って実行中のシステムを転送。
- GRUB2, Syslinux, EFISTUB/efibootmgr, Systemd/bootctl をサポート。