ドライブのイメージを作成し、「使用済みデータ」のみを保存するためのddの使用について説明しているさまざまな投稿を見てきました。問題/質問を提起する前に、いくつかのことを想定しましょう。
仮定
質問/問題
cp
のようなものを--sparse=always
オプションをdd
と組み合わせて使用すると、ファイルが1GBとして表示されるように、スパースファイルが生成されます。
cp --sparse=always <(dd if=/dev/sda bs=8M) /mnt/remote/location/disk.img
または、以下のようなもので、すべてのゼロ化されたスペースを圧縮する必要があります。
dd if=/dev/sda1 | gzip -c > /mnt/remote/location/disk.img.gz
したがって、復元時のスパースイメージファイルの影響は何ですか?転送されるデータは1GBですか、それとも認識された空/ゼロスペースを含めて10GBですか?これは明らかに潜在的なネットワーク負荷と時間を評価するための考慮事項です-復元する。
P.S. Clonezillaなどの他のオプションがあり、ddrescueのようなもので再開機能が可能になることは理解していますが、問題は特に上記のコンテキストでddを使用することです。
ありがとう。
Microsoftからの単語 は次のとおりです。「WindowsNTFSファイルシステムでは、ファイルはデフォルトでスパースになりません。アプリケーションまたはユーザーは、FSCTL_SET_SPARSE制御コードを使用してファイルをスパースとして明示的にマークする必要があります。」残念ながら、LinuxはSMB1を介してこれらのファイルをマークしません。 報告によると 最初にファイルをWindows側でスパースにした場合(Cygwin dd if=/dev/zero of=BigFile bs=1M count=1 seek=150000
)、Linuxからスパースとして記述し続けることができます。読書は最適化されないと思います。
RHEL6coreutils-8.4ではcp --sparse=always local_file /mnt/cifs/file_on_cifs
スパースファイルを書き込みません。 CIFSファイルを読み取るときは、ゼロの領域を読み取ります(no fiemap 最適化)。 RHEL6では、バックアップと復元の両方でファイル全体がネットワーク経由で転送されます。より良いgzipで圧縮します。
Ubuntu14xのcoreutils-8.25でも同じ状況です。
2014パッチ「SMB2/SMB3マウントへのスパースファイルサポートの追加」 があるため、Windows8.1およびその他のプラットフォームのマウントされた共有でスパースファイルがサポートされることを期待しています。
Linuxクライアントに一部のLinuxサーバーからSamba共有をマウントすると、SMB1でもスパースファイルを書き込むことができます。読み取りの最適化はありません。
ddrescue を_-S
_オプションとともに使用できます。
-S --sparse Use sparse writes for outfile. (The blocks of zeros are not actually allocated on disc). May save a lot of disc space in some cases. Not all systems support this. Only regular files can be sparse.
_ddrescue /dev/sda1 /path/to/outfile
_に似たものを発行できます