DDを使用して、外部ハードディスク上の別のパーティションに(ディスク全体ではなく)パーティションをバックアップするにはどうすればよいですか?
次のコマンドでこれを実現しました。
Sudo dd if=/dev/sda6 of=/dev/sdb3 bs=1M
ただし、私の要件は次のとおりです。
/dev/sda6
をバックアップし、それを画像(.img
)ファイルとして/dev/sdb3
に保存する必要があります
圧縮(.gz)画像ファイルとして(これは実際に私が達成しようとしているものです)
(明らかにうまくいかなかった私の愚かな試みは次のとおりです:
Sudo dd if=/dev/sda6 of=/dev/sdb3/backup.img bs=4096 conv=notrunc,noerror
Sudo dd bs=1M if=/dev/sda6 | gzip -c > /dev/sdb3/backup.gz
/dev/sdb3
が実際にマウント/dev/sdb3
でない限り(デバイスとマウントポイントについて少し調べてください)、以下を行う必要があります。
/dev/sdb3
がマウントされている場所を見つけます。これにはmount
コマンドを使用します。 /dev/sdb3
が/home
にマウントされていると仮定します。ファイルの書き込みをその場所に向けます。
Sudo dd if=/dev/sda6 of=/home/backup.img
完了したら、imgファイルに期待どおりのものが含まれていることを確認します。
また、partition全体をバックアップする必要はありますか?通常、rsync
などを使用してファイルをバックアップし、必要に応じて結果のバックアップディレクトリを圧縮する方が簡単で便利です。しかし、これは本当にあなた次第です。
あなたがしたいことは3つの簡単なステップを伴います:
ディスクファイルの作成
fallocate
を使用して、ブロックを作成し、ディスクファイルに事前に割り当てます。 dd
または他のツールを使用してファイルをゼロで埋めてファイルを作成するよりもはるかに高速です。ディスクファイルサイズを指定するには、MB/MiB/GB/GiB
プレフィックスを使用できます。たとえば、サイズが50 GiBのディスクイメージが必要な場合は、次のようにします。
$ fallocate -l 50GiB part_backup.img
ディスクファイルをフォーマットします。この例では、ext4
を使用し、ジャーナリング機能を無効にします。この場合、必要ないためです。
$ mkfs.ext4 -O '^has_journal' part_backup.img
ディスクファイルの準備ができたので、losetup
を使用してディスクファイルをマウントします。 --show
オプションを渡すと、ディスクファイルがマウントされているループバックデバイスが出力されます(例:/dev/loop0
$ Sudo losetup --show -f part_backup.img
/mnt
にマウントフォルダーを作成し、そのフォルダーにループバックデバイスをマウントします
$ Sudo mount /dev/loop0 /mnt/my_disk_file
パーティションからディスクファイルへのデータのコピー
rsync
を使用して、マウントしたディスクファイルにファイルをコピーします。
$ Sudo rsync -avzPSX /mnt/media_partition/ /mnt/my_disk_file
よく分からない場合は、rsyncでこれらのrsync optsのそれぞれが何をするかを調べてください。また、バックアップソースの末尾のスラッシュに関する注意事項もお読みください。
ディスクファイルを圧縮する
通常どおりにディスクファイルをアンマウントします
$ Sudo umount /mnt/my_disk_file
$ Sudo losetup -d /dev/loop0
gzip
を使用してディスクファイルを圧縮します