コピー中にファイルが大きくなります


1

古いバックアップを削除して新しいバックアップを作成するのを忘れるほど愚かだった。削除してから数日後、Windowsがクラッシュしました。

今、私はDebianを通してバックアップを作成しようとしています。Windowsディレクトリツリー(イメージとしてではない)を使用して、1TBドライブを1,5TBドライブにコピーしています。しかし、私の1TBは1,5TBに収まりません。1,5TBディスクには他のファイルはありません。両方のドライブはNTFSです。

何が起きているのですか、どうすれば修正できますか?


パーティションコピーまたはファイルコピーを実行していますか?1TBドライブで圧縮を使用していますか?ファイルシステムはNTFSであり、ブロックサイズは同じですか?パーティションコピーは常に同じサイズを提供し、空き500MBに追加のパーティションを作成できます。gpartedこれらの操作にはお勧めしますが、代わりにdd、1TBディスクを1.5TBパーティション内の単一の1TBファイルにコピーすることもできます(または、バックアッププロセスが遅くなりますが、オンザフライで圧縮する場合は小さなファイルにコピーすることもできます) )。
AFH

どちらもNTFSです。両方のブロックサイズは512です。gpartedは機能しません(Debian Jessie)そして、ディスクのイメージを作成するのではなく、ディスク全体のクローンを作成する必要があります。
-hasnieking

ddディスクのクローンにも使用できます。以下の私の答えをご覧ください。
ジョン

回答:


2

OK、ドライブ全体を削除して、プロパティに移動しました。ここで、空としてリストされているが、1TBが使用されていることがわかりました。NTFSとしてフォーマットしましたが、今ではすべてが適合しました!


1
それがあなたのために働く場合、あなたの答えをマークすることを忘れないでください。
NetworkKingPin

(個人ファイルのバックアップだけでなく)起動可能な使用可能なクローンが必要な場合は、使用中にコピーをコピーしても機能しcpない可能性があることに注意してください。たとえば、ブートセクタはコピーしません。追加の作業を行ってブートに成功した場合でも、cp特定の属性やその他のntfs固有のものを正しくコピーできない可能性があるため、今後問題が発生する可能性があります。一方、個人ファイルのバックアップを作成するだけの場合は、Windowsの組み込みバックアップ機能を使用してみませんか?
ジョン

0

コピーされたディレクトリツリーが、コピー元よりもコピー先でより多くのスペースを占有する理由はいくつか考えられます。NTFSを含むほとんどのファイルシステムは、これに寄与する可能性のある次の機能をサポートしています。

編集:cpWindowsエクスプローラーではなく、コピーの実行に使用しようとしていることがわかりました。これらの項目に関して、どのようにcp、そしてどのようにntfs-3g振る舞うのか分かりません。ただし、答えには2番目の部分があるため、読み続けてください。

  • symlinks / hardlinks:ファイルシステムは、元のファイルの完全なコピーではなく、単純に元のファイルを指すファイルの軽量な「コピー」を作成できます(一方の「コピー」に加えられた変更が他方に適用されることを意味します) 。Windowsは、たとえばWinSXSフォルダーなど、この機能自体も使用すると考えています。Windowsエクスプローラーでシンボリックリンク/ハードリンクをコピーしようとすると、単純に軽量のシンボリックリンク/ハードリンクがコピーされません。代わりに、元のファイルの完全なコピーが提供されます。たとえば、ファイルとそのファイルへのシンボリックリンクがあり、両方を新しい場所にコピーするとします。次に、元のファイルのコピーを1つではなく2つ作成し、元のファイルの合計2倍のスペースを使用します。
  • スパースファイル:NTFSを使用すると、すべて0のチャンクを多く含むファイルのスペースを節約できます。ファイル全体を保存する代わりに、ファイルシステムはゼロ以外のチャンクのみを保存するように指示できます。Windows Explorerを使用してスパースファイルをコピーすると、結果のコピーはスパースではなくなります。そのため、ファイル内のすべての0のチャンクが実際にスペースを占有し、コピーのサイズが大きくなります。
  • 圧縮:NTFSを使用すると、ファイルを圧縮してスペースを節約することができます。Windowsエクスプローラを使用してファイルをコピーすると、コピー先のディレクトリが圧縮ディレクトリでない限り、結果のコピーは圧縮されません。詳細については、このMicrosoftヘルプページを参照してください

あなたが個人的にこれらの機能を広範囲に利用しているのでなければ、これらのことのどれかがあなたのコピーがそんなに多くのスペースを使い果たすことはありそうにないようです。ソースと(不完全な)コピーの両方でWinDirStatなどのディスク領域使用ユーティリティを実行して、コピーでどの領域が領域を占有しているかを確認することで、余分な領域がどこから来ているかを把握できます。

ただし、復元可能な完全に使用可能なWindowsイメージが実際に必要な場合は、cpメタデータ(Windows ACLなど)が正しくコピーされると確信できないなどのユーティリティの使用はお勧めしません。代わりに、AFHが提案したように画像ベースのコピーを行うことをお勧めします。ディスクのイメージを作成するのではなく、ディスクのクローンを作成する場合は、基本的に同じ指示に従うことができ、最後にわずかな修正が加えられます。

  1. Linuxを起動します。(あなたはDebianを使用していると言ったと思います。)
  2. バックアップするハードディスクへのパスを決定します。で始まる必要があり/dev/ます。パーティションだけでなく、ハードディスク全体をバックアップすることをお勧めします。これを以下のように参照します。
  3. バックアップするハードディスクをマウントし、そのマウントポイントへのパスを見つけます。これを以下のように参照します。
  4. 走る dd if=<path to source> of=<path to destination mount point>/mybackup.bak
  5. 完了するまで3時間から1.5日間待ちます。(おそらく速度は10mb / sから100mb / sの間です。)ソースまたは宛先がUSB 3.0外付けドライブである場合、コピー速度がWindowsの場合よりもはるかに遅いことに驚くかもしれません。理由は、LinuxがUASPをサポートすることになっているにもかかわらず、サポートが必要なときに常にサポートが有効になるとは限らないからです。(少なくとも、これは私の経験でした。)
  6. バックアップを復元する必要がある場合は、実行してください dd if=<path to destination mount point>/mybackup.bak of=<path to source>

イメージを作成するのではなくディスクのクローンを作成する場合は、コピー先のhdへのパスに置き換えることができるはずです。(/dev/。で始まる必要があります。)

編集:gronostajが指摘しているように、bs=<size>with を使用するとdd速度が上がる場合があります。ただし、使用する最適な値はシステムによって異なります。詳細については、この回答を参照してください


追加bs=4Kddwaaayより速く、それらを作るために呼び出します。
グロノスタジュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.