「ディスクのクローン」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎dd を使う: 情報を更新)
 
(5人の利用者による、間の24版が非表示)
2行目: 2行目:
 
[[Category:システムリカバリ]]
 
[[Category:システムリカバリ]]
 
[[en:Disk cloning]]
 
[[en:Disk cloning]]
[[it:Disk cloning]]
+
[[es:Disk cloning]]
[[ru:Disk cloning]]
+
[[pt:Disk cloning]]
[[tr:Disk klonlama]]
+
[[zh-hans:Disk cloning]]
  +
{{Related articles start}}
[[zh-cn:Disk cloning]]
 
  +
{{Related|バックアッププログラム}}
ディスクのクローンとはパーティションやハードドライブ全体のイメージを作成することを言います。[[バックアッププログラム|バックアップ]]や[[ファイルリカバリ|リカバリ]]用に他のコンピューターにドライブをコピーするのに役立ちます。
 
  +
{{Related|システムメンテナンス#バックアップ}}
  +
{{Related|Rsync によるフルシステムバックアップ}}
  +
{{Related articles end}}
  +
ディスクのクローンとはパーティションやハードドライブ全体のイメージを作成することを言います。[[バックアッププログラム|バックアップ]] や [[ファイルリカバリ|リカバリ]] 用に他のコンピューターにドライブをコピーするのに役立ちます。
   
  +
{{Note|論理セクタサイズが異なる [[Advanced Format|ドライブ]] 間のディスククローニングはお勧めしません。
== dd を使う ==
 
   
  +
* 論理セクタサイズが小さいドライブ (例:4096バイトから512バイト) への移行は、セクタ番号でパーティション境界を指定するため、パーティションテーブルの再作成が必要です。
dd コマンドはシンプルでありながら、多目的に使える強力なツールです。ファイルシステムのタイプやオペレーティングシステムとは関係なく、ブロックごとに、コピーを行うことができます。ライブ CD などの、ライブ環境から dd を使用すると便利です。
 
  +
* ファイルシステムのブロックサイズが対象ドライブの論理セクタサイズより小さいか、割り切れない場合、論理セクタサイズの大きいドライブ (例:512バイトから4096バイト) への移動ができない場合があります。
  +
}}
   
  +
{{Tip|時間の経過とともに [[ファイルシステム]] は新しい機能を取得し、[https://wiki.archlinux.org/index.php/File_systems#Create_a_file_system mkfs] ユーティリティはデフォルトを変更しますが、すべての新機能を再フォーマットせずに有効にできるわけではありません。したがって、データを新しいドライブに移動するときは、ブロックデバイスやファイルシステムのクローンを作成する代わりに、新しいファイルシステムを作成し、[[rsync#Full system backup|rsync]] などを使ってファイル (およびその属性、ACL、拡張属性など) のみをコピーすることを検討してください。}}
{{Warning|この種のコマンドの常として、使うときは慎重にならなければなりません。さもないとデータを破壊するおそれがあります。入力ファイル ({{ic|1=if=}}) と出力ファイル ({{ic|1=of=}}) の順序に注意し、逆にしないように!必ずコピー先ドライブまたはパーティション ({{ic|1=of=}}) のサイズがコピー元 ({{ic|1=if=}}) のサイズ以上になっているようにしてください。}}
 
   
=== パーティションのクローン ===
+
== ブロックレベルのクロー ==
   
  +
=== dd を使う ===
物理ディスク {{ic|/dev/sda}} のパーティション 1 を、物理ディスク {{ic|/dev/sdb}} のパーティション 1 に複製。
 
# dd if=/dev/sda1 of=/dev/sdb1 bs=512 conv=noerror,sync
 
   
  +
[[dd#ディスクの複製と復元]] と [[Core utilities#dd の代替]] を参照してください。
{{Warning|出力ファイル {{ic|1=of=}} (この例では {{ic|sdb1}}) が存在しない場合は、ルートファイルシステムにこの名前のファイルが作成されてしまいます。}}
 
   
  +
=== ddrescue を使う ===
=== ハードディスク全体のクローン ===
 
   
  +
可能であれば、ディスクからのデータリカバリは、ネイティブインターフェイスを使用して実行する必要があります。SATA または古いドライブの場合は IDE です。USB アダプターを使用すると、結果が異なる場合があります。
物理ディスク {{ic|/dev/sd''X''}} を物理ディスク {{ic|/dev/sdY}} に複製:
 
# dd if=/dev/sd''X'' of=/dev/sd''Y'' bs=512 conv=noerror,sync
 
   
  +
GNU {{Pkg|ddrescue}} は、読み取りエラーを無視できるデータ回復ツールです。''ddrescue'' は、あるデバイスから別のデバイスにデータをコピーするために両方を使用できることを除いて、dd とはまったく関係がありません。主な違いは、''ddrescue'' は洗練されたアルゴリズムを使用して故障したドライブからデータをコピーし、追加の損傷を可能な限り少なくすることです。詳細は [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html ddrescue マニュアル] を参照してください。
このコマンドは MBR (とブートローダー)、全てのパーティション、UUID、データを含めディスクの全てを複製します。
 
* {{ic|noerror}} は読み取りエラーを全て無視して操作を続行します。dd のデフォルトの挙動ではエラーがあると dd は動作を停止します。
 
* {{ic|sync}} は読み取りエラーが存在した場合、入力ブロックをゼロで埋めるため、データのオフセットも同期します。
 
* {{ic|1=bs=512}} はブロックサイズを 512 バイト(ハードドライブの「古典的な」ブロックサイズ)にセットします。自分のハードドライブのブロックサイズが 4KiB のときだけ 512 を 4096 にすることができます。また、以下の警告も読んでください。これはブロックサイズを変えるだけでなく、読み取りエラーがどのように伝播するかにも関係しています。
 
   
  +
故障したり死にかけているドライブのクローンを作るには、''ddrescue'' を2回実行します。1回目では、読み取りエラーが存在しないブロックを全てコピーして、エラーを {{ic|rescue.map}} にマッピングします。
{{Warning|ブロックサイズを指定すると、読み取りエラーの制御方法が影響を受けます。以下を読んでください。}}
 
   
  +
# ddrescue --force -n /dev/sd''X'' /dev/sd''Y'' rescue.map
dd では入力ブロックサイズ (IBS) と出力ブロックサイズ (OBS) の指定ができます。{{ic|bs}} をセットすると IBS と OBS の両方をセットしたことになります。例えばブロックサイズを 1MiB にすると、通常は 1024*1024 バイト単位で読み書きします。しかし読み取りエラーが起きるとおかしくなります。{{ic|noerror,sync}} オプションを使うと dd は読み取りエラーをゼロで埋めるようになると思いがちですが、そうではありません。ドキュメントによると dd は''読み取りが完了した後で'' OBS を IBS と同じサイズになるようゼロ埋めします。つまりそのブロックの''最後''にゼロが追加されます。したがって、1MiB のブロックの最初でたった 512 バイトの読み取りエラーがあるだけで、1MiB 全体が駄目になってしまうことを意味します。例えば 12ERROR89 というデータの読み取り部分にエラーがあると、結果は 120000089 ではなく 128900000 になります。
 
   
  +
ここで {{ic|''X''}} はソースのパーティションであり、{{ic|''Y''}} はコピー先の [[デバイスファイル#ブロックデバイス|ブロックデバイス]] のパーティションレターです。
自分のディスクにエラーがないと自信を持てるなら、ブロックサイズを大きくしてもよいでしょう。そうするとコピー速度が数倍向上します。例えば、単純な Celeron 2.7 GHz のシステムで bs を 512 から 64 KiB に変えたところ、コピー速度は 35 MB/s から 120 MB/s になりました。しかしくれぐれも、コピー元ディスクで読み取りエラーがあった場合はコピー先ディスクで''破損ブロック''になってしまうことに注意してください。つまり 512 バイトの読み取りエラーが1回あるだけで出力先ブロックの 64 KiB 全体が駄目になってしまいます。
 
   
  +
2回目では、不良ブロックだけをコピーして、ソースからの読み込みを3回試してからあきらめます。
{{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 のようなユーティリティを使ってください。
 
}}
 
   
  +
# ddrescue --force -d -r3 -n /dev/sd''X'' /dev/sd''Y'' rescue.map
=== MBR のバックアップ ===
 
   
  +
状況によっては、特定のセクタを読み取ろうとしているときに、ディスク コントローラまたは USB アダプタがロックすることがあります。{{ic|-i}} オプションを使用して、''ddrescue'' にその位置の後で読み取りを開始するように指示できます。
MBR はディスクの頭512バイトに保存されています。MBR は3つの構成部位から成ります:
 
   
  +
これで、ファイルシステムの破損をチェックし、新しいドライブをマウントできます。
# 最初の446バイトにはブートローダーが含まれます。
 
# 次の64バイトにはパーティションテーブルが含まれます (16バイトごとに4エントリ、1つのエントリに1つのプライマリパーティション)。
 
# 最後の2バイトには識別子が含まれます。
 
   
  +
# fsck -f /dev/sd''Y''
MBR を {{ic|mbr.img}} ファイルに保存するには:
 
# dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1
 
   
  +
== ファイルシステムのクローン ==
リストアするには (注意: 以下の操作で既存のパーティションテーブルが破壊されディスク上の全てのデータにアクセスできなくなる可能性があります):
 
# dd if=/path/to/mbr_file.img of=/dev/sdX
 
   
  +
=== e2image を使う ===
ブートローダーだけをリストアして、プライマリパーティションテーブルのエントリはそのままにしたい場合、MBR の最初の446バイトだけをリストアしてください:
 
# dd if=/path/to/mbr_file.img of=/dev/sdX bs=446 count=1
 
   
  +
''e2image'' は {{Pkg|e2fsprogs}} にデバッグ用として含まれているツールです。使用ブロックのみをコピーして効率的に ext2, ext3, ext4 パーティションをコピーできます。e2image が使えるのは ext2, ext3, ext4 ファイルシステムだけです。未使用ブロックはコピーされないため、削除したファイルを復元するのには役に立ちません。
パーティションテーブルだけをリストアするには、次のコマンドを使用します:
 
# dd if=/path/to/mbr_file.img of=/dev/sdX bs=1 skip=446 count=64
 
   
  +
e2image を使って、物理ディスク {{ic|/dev/sda}} の1番目のパーティションを物理ディスク {{ic|/dev/sdb}} の1番目のパーティションに複製するには:
完全な dd ディスクイメージから MBR を取得することもできます:
 
# dd if=/path/to/disk.img of=/path/to/mbr_file.img bs=512 count=1
 
   
  +
# e2image -ra -p /dev/sda1 /dev/sdb1
=== ディスクイメージの作成 ===
 
   
  +
{{Tip|[[GParted]]は ''e2image''を使って効率的に ext2/3/4 パーティションを複製します。}}
1. liveCD や liveUSB から起動。
 
   
  +
=== xfs_copy を使う ===
2. コピー元ドライブの全てのパーティションがマウント解除されていることを確認する。
 
   
  +
{{Pkg|xfsprogs}} の {{man|8|xfs_copy}} を使用すると、[[XFS]] ファイルシステムを 1 つ以上のブロックデバイスに並行してコピーできます。
3. 外部 HD をマウント。
 
   
  +
{{Note|デフォルトでは、''xfs_copy'' は新しいファイルシステム用に新しい [[UUID]] を生成します。同じ UUID のクローンを作成するには、{{ic|-d}} オプションを使用します。これにより、ディスク交換に​​適した複製ファイルシステムが作成されます。}}
4. ドライブをバックアップ:
 
# dd if=/dev/sd''X'' conv=sync,noerror bs=64K | gzip -c > ''/path/to/backup.img.gz''
 
   
  +
{{Tip|XFS のクローンを複数のブロックデバイスに並行して作成するには、それらをすべて {{ic|xfs_copy}} コマンドに追加するだけです。}}
必要であれば (外部 HD が FAT32 でフォーマットされている場合など) ディスクイメージを分割します (''split'' の [[man ページ]]を参照):
 
   
  +
たとえば、{{ic|/dev/sda1}} 上のファイルシステムのクローンを {{ic|/dev/sdb1}} に作成するには、次のコマンドを実行します:
# dd if=/dev/sd''X'' conv=sync,noerror bs=64K | gzip -c | split -a3 -b2G - ''/path/to/backup.img.gz''
 
   
  +
# xfs_copy /dev/sda1 /dev/sdb1
ローカルに十分なディスク空き容量がない場合は、イメージを ssh で転送することができます:
 
   
  +
== 汎用性の高いクローニングソリューション ==
# dd if=/dev/sd''X'' conv=sync,noerror bs=64K | gzip -c | ssh user@local dd of=backup.img.gz
 
   
  +
以下のアプリケーションはファイルシステム全体をバックアップして、故障したときに簡単に復元することができます。ほとんどが Live CD や USB ドライブとして使えます。1つまたは複数の特定の時点での完全なシステムイメージが含まれており、既存の良い設定を記録するときによく使われます。これらの比較については [[Wikipedia:Comparison of disk cloning software]] を参照してください。
5. イメージ内に保存されたパーティションテーブルを解釈できるようにするために、ドライブのレイアウトに関する付加情報を保存します。その情報の中で最も重要なのはシリンダーサイズです。
 
   
  +
完全なシステムバックアップを作成できる他のアプリケーションについては [[バックアッププログラム]] を参照してください。
# fdisk -l /dev/sd''X'' > ''/path/to/list_fdisk.info''
 
   
  +
* {{App|Arch Backup|シンプルな設定を使用する平凡なバックアップスクリプト。
{{Note|You may wish to use a block size ({{ic|1=bs=}}) that is equal to the amount of cache on the HD you are backing up. For example, {{ic|1=bs=8192K}} works for an 8 MiB cache. The 64 Kib mentioned in this article is better than the default {{ic|1=bs=512}} bytes, but it will run faster with a larger {{ic|1=bs=}}.}}
 
  +
** 圧縮方法を設定可能。
  +
** 複数の場所にバックアップ。
  +
|https://github.com/p5n/archlinux-stuff/tree/master/arch-backup/|{{AUR|arch-backup}}}}
   
  +
* {{App|[[Wikipedia:Clonezilla|Clonezilla]]|障害復旧、ディスククローン、ディスクイメージング、デプロイメントソリューション。
=== システムのリストア ===
 
  +
** 完全なバックアップとリカバリソリューション:ブートセクタ、ブートローダ、パーティションテーブルを含むドライブ全体のイメージと復元が可能です。
  +
** BIOS と UEFI、MBR と GPT をサポートします。
  +
** ライブ CD, USB フラッシュドライブ, PXE サーバーから起動。
  +
** ほとんどのファイルシステム (ext2-3-4、reiserfs、reiser4、xfs、jfs、btrfs、f2fs、FAT12-16-32、NTFS、HFS+、UFS など) と LVM2 をサポート。
  +
** Partclone (デフォルト)、Partimage (オプション)、ntfsclone (オプション) を使用する場合は空き領域を認識し、それ以外の場合は dd にフォールバックしてブロックレベルのコピーを行います (dm-crypt/LUKS コンテナー、サポートされていないファイルシステムなど。)
  +
** さまざまな形式 (zstd を含む) とレベルのマルチスレッド圧縮をサポート。
  +
** バックアップの暗号化をサポート。
  +
** 多数のマシンを一度にリストアするマルチキャストサーバー。
  +
** Arch Linux のインストールメディアに同梱されています。
  +
|https://clonezilla.org/|{{Pkg|clonezilla}}}}
   
  +
* {{App|Deepin Clone|Deepin によるバックアップとリストアのツール。ディスクまたはパーティションのクローン作成、バックアップ、リストアをサポートします。|https://www.deepin.org/en/original/deepin-clone/|{{Pkg|deepin-clone}}}}
システムをリストアするには:
 
# gunzip -c ''/path/to/backup.img.gz'' | dd of=/dev/sd''X''
 
   
  +
* {{App|FSArchiver|安全で柔軟性のあるファイルシステムバックアップ・デプロイメントツール
もしくはイメージが複数のボリュームに分かれている場合:
 
  +
** 基本的なファイル属性をサポート (パーミッション, 所有者, ...)
# cat ''/path/to/backup.img.gz*'' | gunzip -c | dd of=/dev/sd''X''
 
  +
** ひとつのアーカイブで複数のファイルシステムをサポート。
  +
** (SELinux によって使われる)拡張属性のサポート。
  +
** 全ての Linux ファイルシステムで共通のファイルシステム属性をサポート (ラベル, uuid, ブロックサイズ)
  +
** [https://www.fsarchiver.org/Cloning-ntfs NTFSファイルシステム] をサポート(Windows パーティションの柔軟なクローンを作成する機能)
  +
** アーカイブに書き込まれたデータのチェックサムを作成 (ヘッダ, データブロック、ファイル全体)
  +
** 破損しているアーカイブの復旧ができます (作業ファイルをスキップ)
  +
** lzo, gzip, bzip2, lzma のマルチスレッド圧縮。
  +
** 巨大なアーカイブを複数のファイルに分割することでファイルの最大容量を固定することができます。
  +
** パスワードによるアーカイブの暗号化。[[OpenSSL]] の libcrypto による blowfish を使用。
  +
** マウントされている root ファイルシステムのバックアップのサポート ({{ic|-A}} オプション)
  +
** [https://www.sysresccd.org/Main_Page System Rescue CD] に同梱されています。
  +
|https://www.fsarchiver.org/|{{Pkg|fsarchiver}}}}
   
  +
* {{App|[[Wikipedia:Mondo Rescue|Mondo Rescue]]|バックアップメディアを作成する障害復旧ソリューション。損害を受けたシステムを再配置することができます。
== ディスククローンソフトウェア ==
 
  +
** イメージベースのバックアップ。Linux/Windows をサポート。
  +
** 圧縮率は調整可能。
  +
** ライブ環境をバックアップできます (システムを止める必要がありません)。
  +
** イメージを多数のファイルに分割可能。
  +
** Live CD で起動することで完全なリストアが出来ます。
  +
** NFS, CD, テープドライブなどのメディアからバックアップ・リストアできます。
  +
** バックアップの検証ができます。
  +
|http://www.mondorescue.org/|{{AUR|mondo}}}}
   
  +
* {{App|[[Partclone]]|使用しているブロックだけを考慮してパーティションをバックアップ・リストアできるツール。
=== Arch でディスククローン ===
 
  +
** ext2, ext3, ext4, hfs+, reiserfs, reiser4, btrfs, vmfs3, vmfs5, xfs, jfs, ufs, ntfs, fat(12/16/32), exfat, f2fs, nilfs をサポート。
  +
** 特別な機能 (圧縮、暗号化など) をスクリプト化するためのパイプ、標準入力、および標準出力をサポートします。
  +
** レスキューモードでは、不良ブロックをスキップして正常なブロックのみをバックアップしようとします。ソース デバイスから GNU Ddrescue ドメイン ログ ファイルを作成するオプション。
  +
** ''ncurses'' インターフェイスが利用可能。
  +
** バックアップされたすべてのブロックは、crc32 でチェックサムされます。
  +
** Arch Linux インストール メディアに含まれています。
  +
|https://partclone.org/|{{Pkg|partclone}}}}
   
  +
* {{App|[[Wikipedia:Partimage|Partimage]]|Linux/UNIX 環境向けの ''ncurses'' ディスク複製ユーティリティ。
* [[Partclone]] にはパーティション上の使用されているブロックを保存・復旧するためのユーティリティが入っており ext2, ext3, ext4, hfs+, reiserfs, reiser4, btrfs, vmfs3, vmfs5, xfs, jfs, ufs, ntfs, fat(12/16/32), exfat がサポートされています。オプションで、ncurses インターフェイスを使うこともできます。Partclone は community リポジトリからインストールできます。
 
  +
** ライブ CD が存在します。
* [http://www.partimage.org/ Partimage] は ''ncurses'' プログラムで、community リポジトリに入っています。Partimage は現在 ''ext4'' や ''btrfs'' ファイルシステムをサポートしていません。NTFS のサポートは実験段階です。
 
  +
** Linux, Windows, macOS の最も一般的なファイルシステムをサポート。
  +
** 圧縮
  +
** Samba/NFS を使用してネットワーク経由で保存したり複数の CD や DVD に保存できます。
  +
** 開発は停止して FSArchiver に移っています。
  +
|http://www.partimage.org|{{Pkg|partimage}}}}
   
  +
* {{App|J7Z|Linux 向けの Java による GUI でデータの圧縮やバックアップを楽にします。7z, BZip2, Zip, GZip, Tar アーカイブを作成することができます。
=== Arch の外からディスククローン ===
 
  +
** 既存のアーカイブを素早くアップデート。
  +
** 複数のフォルダを一つのストレージにバックアップ。
  +
** 保護されたアーカイブを作成・展開。
  +
** アーカイブのプロファイル・リストを使うことで負担を軽減。
  +
|http://j7z.xavion.name/|{{AUR|j7z}}}}
   
  +
* {{App|[[Wikipedia:Redo Backup and Recovery|Redo Backup and Recovery]]|Linux CD ブータブルイメージから実行できるバックアップ・障害復旧アプリケーション。
If you wish to backup or propagate your Arch install root, you are probably better off booting into something else and clone the partition from there. Some suggestions:
 
  +
** ディスクパーティションのベアメタルバックアップとリカバリができます。
  +
** バックエンドとして [http://www.xpud.org/ xPUD] と [[Partclone]] を使用。
  +
|http://www.redobackup.org/|}}
   
  +
* {{App|System Tar & Restore|tar を使ったシステムのバックアップとリストア、または rsync による転送。
* [http://partedmagic.com/doku.php?id=start PartedMagic] has a very nice live cd/usb with PartImage and other recovery tools.
 
  +
** GUIおよびCLIインターフェース。
* [http://www.mondorescue.org/ Mindi] is a linux distribution specifically for disk clone backup. It comes with its own cloning program, Mondo Rescue.
 
  +
** ''.tar.gz'', ''.tar.bz2'', ''.tar.xz'', ''.tar'' アーカイブを作成。
* [[wikipedia:Acronis_True_Image|Acronis True Image]] is a commercial disk cloner for Windows. It allows you to create a live (from within Windows), so you do not need a working Windows install on the actual machine to use it. After registration of the Acronis software on their website, you will be able to download a Linux-based Live CD and/or plugins for BartPE for creation of the Windows-based live CD. It can also create a WinPE Live CD based on Windows. The created ISO Live CD image by Acronis doesn't have the [http://www.syslinux.org/wiki/index.php/Isohybrid hybrid boot] ability and cannot be written to USB storage as a raw file.
 
  +
** openssl / gpg 暗号化をサポート。
* [http://www.fsarchiver.org/Main_Page FSArchiver] allows you to save the contents of a file system to a compressed archive file. Can be found on the [http://www.sysresccd.org/Main_Page System Rescue CD].
 
  +
** rsync を使って実行中のシステムを転送。
* [http://clonezilla.org/ Clonezilla] is an enhanced partition imager which can also restore entire disks as well as partitions. Clonezilla is included on the Arch Linux installation media.
 
  +
** Grub2, Syslinux, EFISTUB/efibootmgr, Systemd/bootctl をサポート。
* [http://redobackup.org/ Redo Backup and Recovery] is a Live CD featuring a graphical front-end to ''partclone''.
 
  +
|https://github.com/tritonas00/system-tar-and-restore|{{AUR|system-tar-and-restore}}}}
   
 
== 参照 ==
 
== 参照 ==

2023年11月11日 (土) 04:40時点における最新版

関連記事

ディスクのクローンとはパーティションやハードドライブ全体のイメージを作成することを言います。バックアップリカバリ 用に他のコンピューターにドライブをコピーするのに役立ちます。

ノート: 論理セクタサイズが異なる ドライブ 間のディスククローニングはお勧めしません。
  • 論理セクタサイズが小さいドライブ (例:4096バイトから512バイト) への移行は、セクタ番号でパーティション境界を指定するため、パーティションテーブルの再作成が必要です。
  • ファイルシステムのブロックサイズが対象ドライブの論理セクタサイズより小さいか、割り切れない場合、論理セクタサイズの大きいドライブ (例:512バイトから4096バイト) への移動ができない場合があります。
ヒント: 時間の経過とともに ファイルシステム は新しい機能を取得し、mkfs ユーティリティはデフォルトを変更しますが、すべての新機能を再フォーマットせずに有効にできるわけではありません。したがって、データを新しいドライブに移動するときは、ブロックデバイスやファイルシステムのクローンを作成する代わりに、新しいファイルシステムを作成し、rsync などを使ってファイル (およびその属性、ACL、拡張属性など) のみをコピーすることを検討してください。

ブロックレベルのクローニング

dd を使う

dd#ディスクの複製と復元Core utilities#dd の代替 を参照してください。

ddrescue を使う

可能であれば、ディスクからのデータリカバリは、ネイティブインターフェイスを使用して実行する必要があります。SATA または古いドライブの場合は IDE です。USB アダプターを使用すると、結果が異なる場合があります。

GNU ddrescue は、読み取りエラーを無視できるデータ回復ツールです。ddrescue は、あるデバイスから別のデバイスにデータをコピーするために両方を使用できることを除いて、dd とはまったく関係がありません。主な違いは、ddrescue は洗練されたアルゴリズムを使用して故障したドライブからデータをコピーし、追加の損傷を可能な限り少なくすることです。詳細は ddrescue マニュアル を参照してください。

故障したり死にかけているドライブのクローンを作るには、ddrescue を2回実行します。1回目では、読み取りエラーが存在しないブロックを全てコピーして、エラーを rescue.map にマッピングします。

# ddrescue --force -n /dev/sdX /dev/sdY rescue.map

ここで X はソースのパーティションであり、Y はコピー先の ブロックデバイス のパーティションレターです。

2回目では、不良ブロックだけをコピーして、ソースからの読み込みを3回試してからあきらめます。

# ddrescue --force -d -r3 -n /dev/sdX /dev/sdY rescue.map

状況によっては、特定のセクタを読み取ろうとしているときに、ディスク コントローラまたは USB アダプタがロックすることがあります。-i オプションを使用して、ddrescue にその位置の後で読み取りを開始するように指示できます。

これで、ファイルシステムの破損をチェックし、新しいドライブをマウントできます。

# fsck -f /dev/sdY

ファイルシステムのクローン

e2image を使う

e2imagee2fsprogs にデバッグ用として含まれているツールです。使用ブロックのみをコピーして効率的に ext2, ext3, ext4 パーティションをコピーできます。e2image が使えるのは ext2, ext3, ext4 ファイルシステムだけです。未使用ブロックはコピーされないため、削除したファイルを復元するのには役に立ちません。

e2image を使って、物理ディスク /dev/sda の1番目のパーティションを物理ディスク /dev/sdb の1番目のパーティションに複製するには:

 # e2image -ra -p /dev/sda1 /dev/sdb1
ヒント: GPartede2imageを使って効率的に ext2/3/4 パーティションを複製します。

xfs_copy を使う

xfsprogsxfs_copy(8) を使用すると、XFS ファイルシステムを 1 つ以上のブロックデバイスに並行してコピーできます。

ノート: デフォルトでは、xfs_copy は新しいファイルシステム用に新しい UUID を生成します。同じ UUID のクローンを作成するには、-d オプションを使用します。これにより、ディスク交換に​​適した複製ファイルシステムが作成されます。
ヒント: XFS のクローンを複数のブロックデバイスに並行して作成するには、それらをすべて xfs_copy コマンドに追加するだけです。

たとえば、/dev/sda1 上のファイルシステムのクローンを /dev/sdb1 に作成するには、次のコマンドを実行します:

# xfs_copy /dev/sda1 /dev/sdb1

汎用性の高いクローニングソリューション

以下のアプリケーションはファイルシステム全体をバックアップして、故障したときに簡単に復元することができます。ほとんどが Live CD や USB ドライブとして使えます。1つまたは複数の特定の時点での完全なシステムイメージが含まれており、既存の良い設定を記録するときによく使われます。これらの比較については Wikipedia:Comparison of disk cloning software を参照してください。

完全なシステムバックアップを作成できる他のアプリケーションについては バックアッププログラム を参照してください。

  • Arch Backup — シンプルな設定を使用する平凡なバックアップスクリプト。
    • 圧縮方法を設定可能。
    • 複数の場所にバックアップ。
https://github.com/p5n/archlinux-stuff/tree/master/arch-backup/ || arch-backupAUR
  • Clonezilla — 障害復旧、ディスククローン、ディスクイメージング、デプロイメントソリューション。
    • 完全なバックアップとリカバリソリューション:ブートセクタ、ブートローダ、パーティションテーブルを含むドライブ全体のイメージと復元が可能です。
    • BIOS と UEFI、MBR と GPT をサポートします。
    • ライブ CD, USB フラッシュドライブ, PXE サーバーから起動。
    • ほとんどのファイルシステム (ext2-3-4、reiserfs、reiser4、xfs、jfs、btrfs、f2fs、FAT12-16-32、NTFS、HFS+、UFS など) と LVM2 をサポート。
    • Partclone (デフォルト)、Partimage (オプション)、ntfsclone (オプション) を使用する場合は空き領域を認識し、それ以外の場合は dd にフォールバックしてブロックレベルのコピーを行います (dm-crypt/LUKS コンテナー、サポートされていないファイルシステムなど。)
    • さまざまな形式 (zstd を含む) とレベルのマルチスレッド圧縮をサポート。
    • バックアップの暗号化をサポート。
    • 多数のマシンを一度にリストアするマルチキャストサーバー。
    • Arch Linux のインストールメディアに同梱されています。
https://clonezilla.org/ || clonezilla
  • Deepin Clone — Deepin によるバックアップとリストアのツール。ディスクまたはパーティションのクローン作成、バックアップ、リストアをサポートします。
https://www.deepin.org/en/original/deepin-clone/ || deepin-clone
  • FSArchiver — 安全で柔軟性のあるファイルシステムバックアップ・デプロイメントツール
    • 基本的なファイル属性をサポート (パーミッション, 所有者, ...)
    • ひとつのアーカイブで複数のファイルシステムをサポート。
    • (SELinux によって使われる)拡張属性のサポート。
    • 全ての Linux ファイルシステムで共通のファイルシステム属性をサポート (ラベル, uuid, ブロックサイズ)
    • NTFSファイルシステム をサポート(Windows パーティションの柔軟なクローンを作成する機能)
    • アーカイブに書き込まれたデータのチェックサムを作成 (ヘッダ, データブロック、ファイル全体)
    • 破損しているアーカイブの復旧ができます (作業ファイルをスキップ)
    • lzo, gzip, bzip2, lzma のマルチスレッド圧縮。
    • 巨大なアーカイブを複数のファイルに分割することでファイルの最大容量を固定することができます。
    • パスワードによるアーカイブの暗号化。OpenSSL の libcrypto による blowfish を使用。
    • マウントされている root ファイルシステムのバックアップのサポート (-A オプション)
    • System Rescue CD に同梱されています。
https://www.fsarchiver.org/ || fsarchiver
  • Mondo Rescue — バックアップメディアを作成する障害復旧ソリューション。損害を受けたシステムを再配置することができます。
    • イメージベースのバックアップ。Linux/Windows をサポート。
    • 圧縮率は調整可能。
    • ライブ環境をバックアップできます (システムを止める必要がありません)。
    • イメージを多数のファイルに分割可能。
    • Live CD で起動することで完全なリストアが出来ます。
    • NFS, CD, テープドライブなどのメディアからバックアップ・リストアできます。
    • バックアップの検証ができます。
http://www.mondorescue.org/ || mondoAUR
  • Partclone — 使用しているブロックだけを考慮してパーティションをバックアップ・リストアできるツール。
    • ext2, ext3, ext4, hfs+, reiserfs, reiser4, btrfs, vmfs3, vmfs5, xfs, jfs, ufs, ntfs, fat(12/16/32), exfat, f2fs, nilfs をサポート。
    • 特別な機能 (圧縮、暗号化など) をスクリプト化するためのパイプ、標準入力、および標準出力をサポートします。
    • レスキューモードでは、不良ブロックをスキップして正常なブロックのみをバックアップしようとします。ソース デバイスから GNU Ddrescue ドメイン ログ ファイルを作成するオプション。
    • ncurses インターフェイスが利用可能。
    • バックアップされたすべてのブロックは、crc32 でチェックサムされます。
    • Arch Linux インストール メディアに含まれています。
https://partclone.org/ || partclone
  • Partimage — Linux/UNIX 環境向けの ncurses ディスク複製ユーティリティ。
    • ライブ CD が存在します。
    • Linux, Windows, macOS の最も一般的なファイルシステムをサポート。
    • 圧縮
    • Samba/NFS を使用してネットワーク経由で保存したり複数の CD や DVD に保存できます。
    • 開発は停止して FSArchiver に移っています。
http://www.partimage.org || partimage
  • J7Z — Linux 向けの Java による GUI でデータの圧縮やバックアップを楽にします。7z, BZip2, Zip, GZip, Tar アーカイブを作成することができます。
    • 既存のアーカイブを素早くアップデート。
    • 複数のフォルダを一つのストレージにバックアップ。
    • 保護されたアーカイブを作成・展開。
    • アーカイブのプロファイル・リストを使うことで負担を軽減。
http://j7z.xavion.name/ || j7zAUR
  • Redo Backup and Recovery — Linux CD ブータブルイメージから実行できるバックアップ・障害復旧アプリケーション。
    • ディスクパーティションのベアメタルバックアップとリカバリができます。
    • バックエンドとして xPUDPartclone を使用。
http://www.redobackup.org/ ||
  • System Tar & Restore — tar を使ったシステムのバックアップとリストア、または rsync による転送。
    • GUIおよびCLIインターフェース。
    • .tar.gz, .tar.bz2, .tar.xz, .tar アーカイブを作成。
    • openssl / gpg 暗号化をサポート。
    • rsync を使って実行中のシステムを転送。
    • Grub2, Syslinux, EFISTUB/efibootmgr, Systemd/bootctl をサポート。
https://github.com/tritonas00/system-tar-and-restore || system-tar-and-restoreAUR

参照