ハードディスクを小さなサイズにクローンする方法。
dd
とPartImageはこの要求をサポートしていません。rsync
はMBRをコピーしません。バックアップを取らないためにHDDのクローンを作成する必要があるので、rsync
は受け入れられない答えです。
助言がありますか?
単純に十分なスペースがないため、大きなパーティションを小さなパーティションにクローンクローンすることはできません(dd
などを使用)。
ただし、大きなパーティション上のファイルが小さなパーティションにも収まる場合は、rsync
を使用してそれらのファイルをコピーできます。使用する正確なオプションは、特定のユースケースによって異なりますが、すべてのファイルを単純にコピーするには、次のようにする必要があります。
rsync -av /mount/point/of/large/partition/ /mount/point/of/small/partition
編集:もう一度:大きなパーティションを小さなパーティションにクローンすることはできません。 (しかし、読み進めてください、あなたの問題はまだ解決できます。)
その理由は簡単です。ソースパーティションがターゲットパーティションよりも大きいからです。何を期待しますか?いくつかのブロックをドロップするだけですか?どれ?そして、どのようにdd
を知る必要がありますか?もちろん、dd
のbs=
およびcount=
オプションを使用して、ソースパーティションの最初の多岐にわたるブロックのみをコピーして、ターゲットパーティションに収まるようにすることができますが、パーティションが壊れてしまいます。それは確かにあなたが望むものではありません。
だから、あなたは小さなパーティションに大きなパーティションをクローンできないので、あなたができる唯一のことはfirstソースパーティションのサイズを、データを失わないようにファイルシステムの仕様を認識しているgparted
のようなものを使用して、ターゲットパーティションのサイズ以下に縮小します。そして、thenのみがdd
を使用してパーティションをクローンできました。理想的には、ソースパーティションの新しいサイズは、ターゲットパーティションのサイズとequalである必要があります(smallerまたはequalだけでなく)、そうでない場合は、クローン作成後にターゲットパーティションに未割り当て領域が発生します。
また、not単に大きなドライブのMBRを小さなドライブのMBRにコピーする必要があることに注意してください(その逆も同様です)。 512バイトのサイズでハードドライブの最初のセクションであるMBRには、ハードドライブのレイアウトに関する情報が含まれています。
(446+64+2=512
に注意してください。)
MBRのクローンを作成する場合は、次のように最初の446バイトのみをクローンします。
dd if=/dev/source of=/tmp/mbr.bak bs=512 count=1
dd if=/tmp/mbr.bak of=/dev/target bs=446 count=1
... /dev/source
と/dev/target
をソースとターゲットのハードドライブのデバイス名に置き換えます(例:それぞれ/dev/sda
と/dev/sdb
)。 ( 詳細については、こちらをご覧ください。 )
ただし、適切な方法は、新しいハードドライブでクリーンなGrubの再インストール(またはMBRにあるもの)を実行することです。
要約すると、大きなドライブを小さなドライブに複製する場合は、次の手順を実行します。
ソースドライブと同じ数のパーティションを使用して、ターゲットドライブにパーティションテーブルをレイアウトします。ソースドライブのパーティションとターゲットドライブのパーティションは1対1で対応している必要があります。ただし、ターゲットドライブの(一部の)パーティションは、ソースドライブの対応するパーティションより小さくすることができます。そのためには、fdisk
やcfdisk
などのツールを使用します。
ソースドライブ上の対応するパーティションよりも小さいターゲットドライブ上の各パーティションについて、ソースドライブ上のこの対応するパーティションのサイズを小さくして、ターゲットドライブ上のパーティションのサイズと一致させます。そのためにgparted
などのツールを使用します。
ソースドライブの各パーティションに対して、コマンドを発行します
dd if=/dev/sdaX of=/dev/sdbY
...パーティション/dev/sdaX
をソースドライブからターゲットドライブの対応するパーティション/dev/sdbY
にクローンします(もちろん、デバイス名を適切に置き換えます)
MBRの複製も要求する場合は、この投稿で上記で説明した2つのdd
コマンドを使用してください(/tmp/mbr.bak
のものを使用)。ただし、Grubをクリーンに再インストールする方が良いことを覚えておいてください。
Malte Skoruppaがすでに投稿しているため、正確なクローニングはできません。ただし、clonezillaは、より大きなディスクがいっぱいでない限り、このタスクを実行できます(Malteはすでにこれについて言及しています)。
基本的に、詳細オプションを有効にし、小さいディスクに関する警告メッセージを「無視」する必要があります。スクリーンショットの詳細については、 Clonezilla docs を参照してください。 160GB HDDのバックアップを64GB SSDに復元するときに同じ問題が発生しました。私にとってこれはうまくいきました。
必要な結果になるはずの別のソリューションは、同じサイズのディスクに復元し、新しいパーティションスキーマを小さいディスクに収めるために再パーティション化することです。これを行う方法の詳細については、 jsm-techblog.blogspot.de を参照してください。
Gparted は仕事をするべきです
Gpartedでサイズ変更した後、Clonezillaでイメージングする前に、ドライブから起動してOSにエラーを修正する機会を与えます。
次に、Clonezillaを実行し、必要なハードディスクパーティションのコピーを作成します
私にとって最適な別のオプション: MondoRescure
Mondo RescueはGPL災害復旧ソリューションです。
バックアップメディアとしてのテープ、ディスク、ネットワーク、CD/DVD、複数のファイルシステム、LVM、ソフトウェアおよびハードウェアRAIDをサポートしています。
簡単なガイドがあります here
スクリーンショットをいくつか投稿します。
1.サポートされているバックアップメディアタイプのリストから選択します。
2. CD/DVD- + R [W]にバックアップしている場合、MondoはCDバーナーにBurnProofテクノロジーが搭載されているか、ラップトップの内部にあるか、それともエキセントリックかを尋ねます。テープストリーマにバックアップしている場合、このメッセージは表示されません。
3.どの程度の圧縮が必要ですか?なし。テープストリーマにハードウェア圧縮が組み込まれている場合。 CPUが非常に高速の場合、最大。平均は、ほとんどの状況でうまくいくはずです。
4.コンピュータ全体(/ sys、/ run、/ proc、および/ tmpを除く)をバックアップする場合は、これをデフォルトの/のままにします。それ以外の場合は、サブセットを指定します(例:/ usr/local |/home)。各パスの間に必ずパイプを入れてください。
5.コンピューター全体をバックアップする場合、特定のディレクトリを除外することができます。/shared/MP3。 「ディレクトリを除外」ダイアログボックスでそれらを指定してください。各パスの間にパイプを入れてください。/shared/private |/scratch |/nfs |/windows
6.カーネルは正常ですか? Red Hat、Mandrake、SuSE、Debian、およびSlackwareのユーザーは、一般に「はい」と言ってください。これらのベンダーは、信頼できるカーネルの作成に長けているからです。 GentooまたはLFSを使用している場合、カーネルが非標準である可能性があります。その場合、Mondoのフェイルセーフカーネル(別途提供)を使用する場合は「いいえ」と答えてください。
7.アーカイブをメディアに書き込んだ後にアーカイブを検証する場合は、ここで「はい」と言います。ハードウェアとLinuxディストリビューションに絶対的な信念がある場合は、「いいえ」と言い、少し祈ります。
8.先に進みたいと確信している場合は、「はい」と発声し、Mondoがコンピューターをバックアップしている間に他にやるべきことを見つけます。 「いいえ」と言うと、シェルプロンプトで不意にダンプされます。 :-)
9.バックアッププロセスが開始されます。最初に実行するバックアップ前のタスクがいくつかありますが、バックアップは基本的に進行中です。バックアッププロセスを簡素化するために、一連の質問がありました。次回は、必要に応じて、一連の質問に答える代わりに、さまざまなコマンドラインスイッチを使用してmondoarchiveを呼び出して、その動作を制御できます。詳細については、manページを参照してください。
10.Mondoは、バックアップするすべてのファイルのカタログを作成します。これには最大5分かかります。ファイルのリストは、セットごとに約4 MB(圧縮前)のファイルに分割されます。通常、これには1分かかります。
11.モンドはミンディに電話します。 Mindiは、既存のLinuxディストリビューションとファイルシステムに基づいたブータブルメディアイメージと補助データディスクイメージを生成します。そうすれば、Mondoのツールが既存のファイルシステムおよびバイナリと互換性があることを確認できます。Mondoのツールがあなたのツールです。 Mindiの実行には最大5分かかります。
12.最後に、モンドはコンピューターのバックアップを開始します。このプロセスには、アーカイブするデータの量、CPUの速度、使用しているRAMの量などに応じて、数分または数時間かかる場合があります。通常のファイルをバックアップしてから、大きなファイル(約32MBを超えるファイル)をバックアップします。バックアップの検証を選択した場合、モンドはそれも行います。
1.バックアップメディアの種類を選択します。ライブ復元プロセスは、モンドメディアから起動した後にmondorestoreをパラメーターなしで入力した場合に非常によく似ています。
2.テープ/ CDを挿入したら「OK」を押します。テープバックアップを生成した場合、テープ自体で十分です。 CDバックアップを生成した場合、最初のCDで十分です。それ以外の場合は、ブートメディアが必要になる場合があります。
3.復元するファイルとディレクトリにフラグを立てます。 [その他]ボタンと[少ない]ボタンを使用して、サブディレクトリを開いたり閉じたりします。
4.ファイルを復元する場所を指定します。一般に、「/」が適切です。復元するファイルの新しいバージョンを上書きしたくない場合は、復元パスとして/ tmp/BKPなどを指定します。
5.Mondorestoreは、メディアから構成情報を取得します。 (サンプル画面はテープユーザー向けです。CDユーザーには別のものが表示されます。)
6.データはハードディスクに復元されます-最初に通常のファイル、次に復元セット内の大きな(32MB以上の)ファイルがあります。
Clonezillaを使用すると、より大きなハードドライブからより小さなハードドライブへの「疑似クローニング」を実現できます。事実上、ディスクのパーティションを保存および復元できます。次の手順(HDDからSSDへの転送用に開発された)がそこに到達します。
最初のトリックは、Gpartedを使用してハードドライブ上のパーティションのサイズを変更し、各パーティションを縮小して、含まれる未使用スペースの量を減らすことです。明らかに、パーティションは、すべてのパーティションに必要な合計スペースがSSDの容量よりも小さくなるようなサイズにする必要があります。
次にClonezillaを実行し、個々のハードディスクパーティションのコピーを作成して(savepartsオプションを使用)、これらを外部USBドライブに一時的に保存します。ディスク全体(savedisk)のイメージを作成するのではなく、パーティション(saveparts)を保存する必要があることに注意してください。
参照: 「より小さなSSDへのハードドライブのクローン」 プロセスおよびリファレンスソースのリンクの詳細については、こちらをご覧ください。
Clonezilla および GParted を使用して、データをより小さなドライブに転送できます。
GParted Live CD を使用して、新しいドライブに収まるようにパーティションを縮小します。空の(灰色の)スペースがドライブの右端にあるようにパーティションを移動します。最初のパーティションの前にすでに空のスペースがあった場合、ブートまたはその他の隠された情報が含まれている可能性があるため、そのスペースを残します。
Clonezillaを使用して、device-device
クローンを作成します。 詳細オプション を選択し、-icds
オプションを有効にして、ディスクサイズのチェックをスキップします。クローンを続行し、古いドライブを削除して、新しいドライブから起動してみてください。エラーが発生した場合は、ソースディスクのエラーを修復するのに役立つ-fsck-src-part
オプションを試してください。
Clonezillaドキュメント から:
イメージのすべてのデータが小さいディスクに収まる、つまり間違ったディスク領域に書き込まれないことが確実な場合は、オプション「-icds」をチェックできます。警告!このオプションを選択するには、何をしているのかを知る必要があります!.
1つのFAQ Clonezillaで-icds
と-k1
の両方のオプションを使用することをお勧めしますが、それはうまくいきませんでした。他の人は、GPartedを使用してパーティションをコピーできると述べましたが、すべてのパーティションタイプをコピーすることはできず、その方法を使用した後、おそらくコピーされないパーティション間の隠された情報のためにマシンを起動できませんでした。
上記の例のほとんどは、実際に元のドライブのサイズを変更することを示唆しているように見えるため、実際にコピーを作成する前にデータを変更することにより、データを危険にさらします。
私が使用する非常にマニュアルではありますが、リスクの少ない別の方法があります。何かが失敗したためにフォールバックしたい場合に備えて、ソースドライブはそのままです。
また、クローン/サイズ変更では、ディスクスワップを行っている間に新しいドライブに移動しながら、新しいファイルシステムに切り替えることはできません。以下の手順では、目的のドライブに選択したファイルシステムのみを作成する必要があります。
元のドライブの横にある新しい宛先ドライブをコンピューターにインストールします。
私の例では、ソース(元のドライブ)は/ dev/sdaであり、宛先(新しい小さいドライブ)は/ dev/sdbです。セットアップでは、異なる場合があります
/ mnt/sourceの下にsrcを読み取り専用としてマウントします
宛先ドライブを/ mnt/destinationの下にマウントします
srcファイルシステムを宛先ファイルシステムにコピーします:
新しいディスクがあるため、ubuntuはデバイス名ではなくuuidを使用してドライブを見つけてマウントします。新しいドライブuuidを使用してディスクをマウントするように宛先fstabを変更します。
ls -la/dev/disk/by-uuid
/のuuidを変更し、/ mnt/destination/etc/fstabでスワップします。元のドライブとは異なるものに変更することにした場合は、マウントポイントのファイルシステムを変更することを忘れないでください
grubが同じバージョンであることが重要な場合は、元のディスクを再度起動し、以下のコマンドを実行して実行し、grubを新しいドライブにインストールします。
次に、ソースドライブをコンピューターから削除し、宛先ドライブを起動します。 grubは完全に起動せず、grubリカバリシェルのリカバリシェルに終了します。
いくつかの必要なgrubモジュールをロードするには-insmod ext2-insmod linuxはディスクデバイスをリストします-ls
適切なデバイスを選択します(私の例ではhd0、msdos1です)
vmlinuz-xxxおよびinitrd-xxxの正確な名前を見つけて、使用するgrubを構成します
ls/boot /
上記のlsから取得したvmlinuzおよびinitrdの適切な名前を確認して使用し、以下で使用しているサンプルバージョンの代わりにそれらを使用します。
linux /boot/vmlinuz-2.6.32-5-AMD64 root =/dev/sda single
/ dev/sdaがデバイスの場合、ドライブは次回dstディスクのみでマシンを再起動するときにrootfsディスクになります
initrd /boot/initd.img-2.6.32-5-AMD64
これでマシンが正常に起動します。最後にgrubを更新して新しいディスクuuidを使用するため、毎回この手動手順を繰り返す必要はありません。
質問に対する正しい答えではないかもしれませんが、同様の問題を解決しようとしてこのページに到達します。
古い256Mbコンパクトフラッシュカードを、破壊された32Mbのコンパクトフラッシュカードに複製したかったのです。フラッシュカードには、小さなスプリングコイルを製造する小さなLinuxアプライアンスが含まれています。
この方法で解決しました:
(もちろん、256Mbで使用される有効なスペースは32Mb未満であったため、うまく適合します)
「dd」で256Mbフラッシュカードのイメージを作成します(つまり、カードが/ dev/sdbにマウントされていると仮定します):
dd if=/dev/sdb of=image256.iso
netbootin を使用して、 'image256.iso' ISO(Diskimageオプション)を読み取ります。
32MbカードがあるUSBドライブを選択し、32Mbカードにイメージをダンプします。
それだけです、32Mbカードが私のマシンを再び正常に起動しました。
HTH
免責事項:私はWereSyncの元の著者です
これは WereSync を使用して可能です。 WereSyncは Malteの答え の一般的なプロセスに従いますが、複数ではなく1つのコマンドのみを必要とします。また、クローンをバックアップとして使用している場合、バックエンドでrsyncを採用しているため、そのバックアップを増分的に更新できます。
WereSyncをインストールするには、pipを使用します。
pip install weresync
そこから単純にWereSyncコマンドを使用できます
weresync -C -g 2 -E 1 /dev/sda /dev/sdb
上記のコマンドは、/ dev/sdaから/ dev/sdbにデータをコピーします。 -C
フラグは、2つのドライブのパーティションが同等であるかどうかをWereSyncがチェックし、WereSyncがそうでない場合、/ dev/sdaから/ dev/sdbにパーティションをコピーし、適合するようにサイズを変更することをマークします新しいパーティションのUUIDは異なります。パーティションが有効かどうかのテストに使用するシステムは細心の注意を要する場合があるため、最初のバックアップ後にこのフラグを省略することをお勧めします。
-g
および-E
コマンドは省略できますが、その場合、ブートローダーのインストールはほぼ確実に失敗します。
-g
は「grubパーティション」を指します。または、grubをインストールする必要があります。通常、これは/にマウントされたパーティションです。/dev/sda2を/にマウントしている場合、上記の例のように-g 2
をWereSyncに渡します。これが省略された場合、WereSyncはそれ自体で適切なパーティションを見つけようとしますが、エラーが発生しやすくなります。単純にフラグを渡すことをお勧めします。
-E
はEFIパーティションを指します。 EFIパーティションが/ dev/sda1にある場合、上記のコマンドのように-E 1
をWereSyncに渡します。
/ bootフォルダー用に別のパーティションがある場合は、WereSyncにも知らせる必要があります。/dev/sda3にある場合は、-B 3
をWereSyncに渡します。
このコマンドで使用可能なフラグの詳細については、 WereSync Command Documentation をご覧ください。
GPartedを使用して大きいディスクのファイルシステムを縮小した後、2つのディスクをRAIDケースにミラーリングモードで配置します。大きいディスクがソースで、小さいディスクがターゲットです。クローンを開始するには、ケース内のリセットボタンをクリックするだけで済みました(モードを変更せず、レイド1からレイド0に変更しました)。完全に機能しました! :) GW3.5AX2-SU3/MB RAIDケースを使用しました。
250ギガバイト(sda)のブートディスクを120ギガバイト(sdc)のディスクに圧縮した経験を投稿しています
sdaには2つのパーティションが含まれます。
私もです:
私のgpartedはlvmでは動作しないので:
レスキューディスクから:
pvresize/dev/sda2 --setphysicalvolumesize xxxxxxxxxxxxK(LVスペースより1 GB多い)(ここにエラーがあります...
しかし、FS-LV-VGを縮小するだけなので、パーティションは依然として大きくなりました。
fdiskでパーティションを再作成します。
fdisk /dev/sda
d --> 2
n --> p --> 2 --> default --> (new reduced
size!!!)
w
次に、システムは、次の再起動まで古いパーティションテーブルを使用することを要求します。しかし、再起動してイメージを実行するのを忘れました:
dd if =/dev/sda2 of =/dev/sdc2 bs = 4096(この時点で、何かが間違っていると思い、パーティションテーブルが新しいsda2の終わりを反映していないため、sdcで起動できませんでした)
しかし、すべてが正常で、再起動後、システムさえもブートするsdcパーティションを選択(PV、LV、/ bootの重複について不平を言っています)
私はラッキーかどうか、または不必要な手順を行うかどうかわからない...コメントをいただければ幸いです.
NVMe(Samsung 950 Pro)が認識されないため、1607へのWin 10アップデートがリブート後に壊れるので、この問題に遭遇したので、NVMeを他の(より大きな)内部ドライブ(私の場合は「東芝」)にクローンしました、Win 10を更新し、システムをNVMeに復元しました。
これを達成するために必要な手順を以下に示します(-icds
のrestorepartsが機能しなかったため)。
安定版ブランチのClonzilaを使用した場合、CDから起動できるようにするには、BIOSでレガシーブートモードに切り替える必要があります。それ以外の場合、代替ブランチからのダウンロードを使用する場合、UEFIブートをサポートする必要があります。
ご自身の責任でガイドに従ってください。ここでの手順とコマンドはチェックとダブルチェックが行われますが、タイプミスによりデータの損失やハードウェア障害が発生する可能性があるため、まず何をしているかを学び、正しい方向へのヒントとしてこれらの手順を実行してください。
初めてWindowsでNVMeがまだブート情報を保持している状態で競合が発生したと思うので、今回は東芝への最初のクローン作成直後(UEFIブートへの切り替え前)にNVMeドライブのすべてのパーティションを削除しました
〜削除はClonezilla Shellで簡単にできます:
Sudo su
dd if=/dev/zero of=/dev/nvme0n1 bs=512 count=1
〜または、GPartedを起動し、そこで視覚的に実行します
(BIOSでUEFIブートに切り替えます)
mBRのコピーは私にとって何の役にも立たなかったため、このストーリーではGPTが重要なので、(Clonezilla)シェルに入り、東芝からNVMeにGPTをコピーします。
Sudo su
sgdisk /dev/sda -R /dev/nvme0n1
sgdisk -G /dev/nvme0n1`
( 説明 )
clonezilaは(Expertスイッチ-icdsを使用しても)パーティションの復元を拒否するため、再びシェルに入り、次の操作を行います。
partprobe #forces kernel to reload partition infos
fdisk -l #shows all disks info
dd if=/dev/sda1 of=/dev/nvme0n1p1 bs=64K status=progress
dd if=/dev/sda2 of=/dev/nvme0n1p2 bs=64K status=progress
dd if=/dev/sda3 of=/dev/nvme0n1p3 bs=64K status=progress
...
( 詳細 )
tosiba MBRおよびGPTのバックアップ:
sgdisk --backup=sda.gpt /dev/sda
バックアップを安全な場所にコピーします(手順6で行ったドライブイメージ全体ではなく、復元できるようにします)
mkdir /mnt/usb
(put in usb flash or similar)
mount /dev/sdb /mnt/usb
cp sda.gpt /mnt/usb
umount /dev/sdb`
toshibaパーティション情報をクリアして、Windowsとの競合を引き起こさないようにします
dd if=/dev/zero of=/dev/sda bs=512 count=1
(BIOSでUEFIブートに切り替える)Windows 10(1607)DVDからブートし、[修復]> [トラブルシューティング]> [コマンドプロンプト]を選択して、これらすべてを実行します。
bootrec /fixboot
bootrec /scanos
bootrec /fixmbr
bootrec /rebuildbcd
exit
( 詳細 )
nVMeディスクでWindows 1607を再起動します
最初にシステムのクローンを2つのステップで作成してスパースイメージにすることができます(イメージを追加すると、イメージが大きくなります)。このイメージから2番目の小さいディスクに復元します。
ライブCDでは、大きなディスクの最後のパーティション(/ dev/sdc3など)のlvm(ある場合)よりも小さなディスクに収まるように、ファイルシステム(resize2fs)を縮小するだけです。
Fdiskでは、最後のパーティション(/ dev/sda3)をより小さなセクターで削除および再作成するため、大きなディスクの最後のセクターは、小さなディスクの最後のセクターと同じ値を持ちます。
スペースがなくなるまで#dd if = big of = small bs = 10Mを行うよりも。
1つの悪い値はデータ損失の原因となるため、縮小中は特に注意してください。