LoginSignup
6
5

More than 3 years have passed since last update.

Diskをマルっとコピーする

Last updated at Posted at 2019-11-20

これは何?

何も考えずにマルっとディスクをコピーしたい、そんなときの解決策の1つです。

概要

ここではddコマンドを使います。ディスクのIDはfdiskを使います。

手順のまとめ

  1. コピー元のディスクのIDを取得
  2. ddでコピー

準備

  • 自由にいじれてLinuxを起動できる端末(作業端末)
  • Linuxの何らかのディストリビューション(Ubuntuをよく使います)
  • sudoできるアカウント、またはroot権限
  • コピー元のディスク
  • コピー元と同等のストレージ(物理単体、もしくはコピーできるだけの空き容量)

作業手順

ここでの説明は コピー元のディスクと同一の別のディスク(コピー先)にコピーをする というシナリオです。

また、作業端末は以下の構成であることを想定する。
- コピー元: /dev/sdc
- コピー先: /dev/sdb
- Linuxがインストールされたディスク:/dev/sda

コピー元ディスクの調査

誤ってコピー元に書き出してしまわないようにIDを確実にメモります。

※ もし対象のディスクのFormatがNTFSでエラーが起こった場合は How to fix Ubuntu unable to mount NTFS partition を参照してください。

注意 : 以下の作業例では/dev/sdbとしてIDの確認をしています。しかし、次の作業の コピー先ディスクを接続する を実行するとコピー元は/dev/sdcへとマッピングが変わります。これはマザーボードの接続方法とのハードウェアの認識方法に依存する為に変わっていますので、必ずIDを確認することで、/dev/sd[a-z]{1}とディスクとのマッピングの変化に対応してください。

  1. 作業端末のOSをシャットダウンして、電源を切る
  2. コピー元のディスクを作業端末に接続し、作業端末のOSをLinuxで起動する
  3. 以下のfdiskコマンドでIDを確認する
$ sudo fdisk /dev/sdb
   Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C075xxxx-BE81-42EE-xxxx-6A4052113065

Device     Start        End    Sectors   Size Type
/dev/sdc1   2048 1953523711 1953521664 931.5G Microsoft basic data

Command (m for help): q

コピー先ディスクを接続する

  1. 作業端末のOSをシャットダウンして、電源を切る
  2. コピー先のディスクを作業端末に接続する(コピー元のディスクを作業端末に接続した状態で)
  3. fdiskコマンドでIDを確認すると同時にコピー元、コピー先がLinux上でどのディレクトリにマップされているか確認をする

!!!! コピー元ディスクの調査の注意に書いた通り、 /dev/sdb を確認すると先程のIDと異なったIDが表示されました。よって、このディスクはコピー元ではなく、コピー先のディスクであることが分かります。必ず作業前に確認するようにしてください。間違えるとコピー元を全て削除してしまいます。

$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0A88yyyy-A88E-433D-yyyy-ABCD18FB7FBB

Device     Start        End    Sectors   Size Type
/dev/sdb1   2048 1953523711 1953521664 931.5G Microsoft basic data

Command (m for help): q   

/dev/sdcを確認するとコピー元であることが分かります。

$ sudo fdisk /dev/sdc
   Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C075xxxx-BE81-42EE-xxxx-6A4052113065

Device     Start        End    Sectors   Size Type
/dev/sdc1   2048 1953523711 1953521664 931.5G Microsoft basic data

Command (m for help): q

コピー元からコピー先へコピーを実行する

status=progressのオプションをつけることで今どの辺りであるのか、以下のような表示が得られます。

$ sudo dd if=/dev/sdc of=/dev/sdb bs=1024k status=progress
79691776 bytes (80 MB, 76 MiB) Copied, 1 s, 78.2 MB/s

以下のように表示が出てカーソルが戻ってきたらコピー完了です🎉

$ sudo dd if=/dev/sdc of=/dev/sdb bs=1024k status=progress
999964016640 bytes (1.0 TB, 931 GiB) copied, 2139 s, 467 MB/s
953869+1 records in
953869+1 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 2144.92 s, 466 MB/s

コピー時間

1Tのディスクのコピーで30〜40分くらいでコピーの作業完了でした。(2019/11/20)

注意

ddでのコピー元とコピー先の指定は/dev/sd[a-z]{1}で行いますが、この指定はマザーボードの接続方法とLinuxのハードウェアの認識方法に依存します。コピー元とコピー先の指定はディスクのIDを確認した上で指定するようにしてください。

Reference

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5