qcow2ファイルの実際のサイズは少し混乱しています。
ls -alh VMs/ubuntu-mini.qcow2
-rw------- 1 root root 21G mar 31 23:15 VMs/ubuntu-mini.qcow2
du -h VMs/ubuntu-mini.qcow2
2,7G VMs/ubuntu-mini.qcow2
このファイルを別のパーティション(ext4)にコピーしたいです。このコマンドが実際にコピーされたようです。21Gだけでなく2,7G私は期待しています。これで、新しい場所で両方のコマンド(duとls)が同じサイズ(21G)を表示します。
du -h /media/HDD0/VMs/ubuntu-mini.qcow2
21G /media/HDD0/VMs/ubuntu-mini.qcow2
ls -alh /media/HDD0/VMs/ubuntu-mini.qcow2
-rw------- 1 root root 21G mar 31 23:15 /media/HDD0/VMs/ubuntu-mini.qcow2
qcow2ファイルをコピーする正しい方法は何ですか? 「cp」コマンドに2,7Gのみコピーできるスイッチはありますか?
答え1
ファイルは足りない、これは、1つ以上の「穴」が含まれていることを意味します。ホールからデータを読み取るとゼロが返されますが、これらのゼロはディスクに保存されず、ファイルシステムによって生成されます。
この機能は、ほとんどゼロで構成された大容量ファイルを保存するときに物理ハードドライブのスペースを節約します。ユーティリティls
は見かけのファイルサイズを報告しますが、ファイルの見かけのサイズからファイルdu
内の穴のサイズ(つまり、ファイルがディスクで使用するスペースの量)を引いた値を表示します。
ファイルをコピーすると、cp
ファイルの利用可能な部分は保持されず、穴はゼロで埋められます。
GNUシステムで穴が十分に大きい場合は、ファイルをコピーするときにスパース性を維持するために--sparse=auto
フラグ--sparse=always
を使用できます。cp
一部のBSDシステム(少なくともOpenBSD)では、基本的cp
にスパースファイルの脆弱性を保存しようとします。
rsync
()オプションを使用してファイルをコピーすることもできます。--sparse
-S
穴がゼロ(全体または部分)で埋められても、結果ファイルは機能的に元のファイルと同じですが、実際のディスク容量を増やします。