lsとduのディスク使用量の違いで表されるディスク領域を回復する方法

lsとduのディスク使用量の違いで表されるディスク領域を回復する方法

私はバックアップ用に使用したい(以前に使用しなければならなかった)1TB外付けハードドライブを持っており、それを理解するために多くの実験を行いました。デスクトップグラフィックリストのメニュー項目のプロパティをもう一度見てみると、Propertyそのうち3分の1程度が使用されているのを見て驚きました。その後、コマンドラインを見てみると、次のような結果が出ました。

[root@localhost]/home/Harry# du -cs /run/media/Harry/CA6C321E6C32062B
167785742   /run/media/Harry/CA6C321E6C32062B
167785742   total
[root@localhost]/home/Harry# ls -alh /run/media/Harry/CA6C321E6C32062B
total 4.2M
drwx------  1 Harry Harry 4.0K Nov 18 15:15 .
drwxr-x---+ 3 root  root    60 Nov 21 14:14 ..
drwx------  1 Harry Harry 4.0K Oct 22  2013 2014-01-07
drwx------  1 Harry Harry 4.0K Sep 22 20:12 2014-09-22
drwx------  1 Harry Harry 4.0K Sep 23 19:56 2014-09-23
drwx------  1 Harry Harry 4.0K Sep 23 19:56 2014-09-24
drwx------  1 Harry Harry 4.0K Sep 25 19:18 2014-09-25
drwx------  1 Harry Harry 4.0K Sep 25 19:18 2014-09-26
drwx------  1 Harry Harry 4.0K Sep 27 23:33 2014-09-27
drwx------  1 Harry Harry 4.0K Sep 28 19:12 2014-09-28
drwx------  1 Harry Harry 4.0K Oct  7 20:00 annals
-rw-------  1 Harry Harry   30 Apr 23  2013 autorun.inf
drwx------  1 Harry Harry    0 Oct 12 16:54 GPS
drwx------  1 Harry Harry    0 Nov 18 15:15 System Volume Information
-rw-------  2 Harry Harry 4.2M Apr 17  2013 TOSHIBA STOR.E ALU 2S 2.5.pdf
[root@localhost]/home/Harry# 

私はいくつかのサイトでこの違いを「説明」し、いくつかの異なる、やや混乱した答えを提供するのを見ましたが、それらのどれもスペースを回復するのに役立ちませんでした。

私はしばらく前にこれを見て巨大なtrashフォルダを「削除」し、rmそれが問題の一部かもしれないと思いました。

これに加えて、上記のような内容を作成してインターネットを検索した後、次のコマンドを使用しましたが、ncdu /run/media/Harry/CA6C321E6C32062B結果はでしたこの写真では。私もこれを試しました

[root@localhost]/home/Harry# baobab /run/media/Harry/CA6C321E6C32062B
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)

(baobab:15557): dconf-WARNING **: failed to commit changes to dconf: The connection is closed

...このイメージが作成されました。マウスポインタを内側のリングに移動するとラベルが作成されますが、Annals 171.8 GB画像には表示できません。

この写真

Annalsディレクトリが明確に占める余分なスペースを回復する方法はありますか?それがどこから出たのか分からない。この頃になると私を完全初心者にしてください。

答え1

annalsなぜディレクトリを削除しないのですか?

# rm -r /run/media/Harry/CA6C321E6C32062B/annals

注:ディレクトリがあるため、WindowsシステムにあるようですSystem Volume Information。これはおそらくNTFSという意味ですか?このような場合は、* nixに優しいファイルシステムでフォーマットする方が良いかもしれません。

もちろん、これは上記の項目のどれも維持したくないと仮定します。これを行うには、まずディスクからコピーしてからフォーマットしてください。

答え2

質問を正しく理解したら、問題はデータを誤って読み取って解釈していることです。 「ls」で表されるサイズはディレクトリのサイズです。チェックリスト、ディレクトリに含まれるすべてのファイルのサイズではありません。

この試み:

小さな箱を手に入れよう。数冊の本やその他の大きなものや重いものを中に入れてください。さて、小さな紙を持って、その上に「もの箱」と書いてください。それでは箱の重量を測定してみてください。その後、紙片の重量を個別に測定する。彼らは同じですか?非常に重い用紙を使用しない限り、ほとんど発生しません。紙の重量(箱自体ではなく箱の中に何が入っているかを示すテキストを含む)が小さすぎるため、天びんがそれを認識できない場合があります。

ディレクトリのリストはほぼ同じです。そうではないコンテンツカタログ、私はその中に何があるかを示すラベルです。これが "ls" が報告する内容です: 単にラベルのサイズです。一方、「du」コマンドはボックスにいくつのフラグメントがあるかを示します。そしてその中のすべて重い。

それではなぜ4.0Kですか?まあ、箱が多く、各箱のサイズが同じだと想像してみてください。多くの小さなアイテム(たとえば、別のボックスに入っているアイテムの紙のリスト)の場合は、複数のアイテムを1つのボックスに入れることができます。ただし、非常に大きなアイテム/アイテム自体の場合、保管には複数のボックスが必要になる場合があります。同様に、ファイルシステムも非常に似ています。ディスク全体を「チャンク」という小さな部分に分割します。非常に小さい品目の場合は、箱だけが必要です。非常に大きなアイテムの場合、2つ以上が必要な場合があります。この例では、ディスクのブロックサイズが4.0Kであることを示しています。したがって、すべてのファイルのリストが4.0K以内にある限り、他の「ボックス」/「チャンク」は使用されません。ファイルの実際の内容が正しいかどうかにかかわらず、リスト全体が1つのブロックに収まります。これは各チャンクに割り当てられる最小サイズなので、常に4.0kになります。同じか小さい4.0K。リストが4.0Kを超える場合は、合計サイズ8.0Kに別の4.0Kブロックを割り当てます。これで、合計サイズが8.0Kを超えるまで他のブロックは割り当てられません。など。

「ls」がディレクトリデータで使用されている全体のサイズをリストしない理由がわからない場合そしてここで、すべてのファイルの総数は単純です。 「ls」コマンドを実行するたびに、各項目のサイズを計算する必要があります。 "ls -al /"を実行したと想像してください。 「/」をリストしようとするたびに、1TBドライブ全体の合計サイズを計算する必要があります。ただし、それに応じて合計を調整するには、ファイルシステム内のすべてのファイルを調べて、どのファイルがシンボリックリンクかハードリンクかマウントポイントかを確認する必要があります。

たとえば、4 MBのドライブがある場合(たとえば、非常に小さい最新サイズ)4つの1MBパーティションに分けられます。パーティション 1 はルート "/"、パーティション 2 はスワップ領域、パーティション 3 は "/some/deep/nested/path" にインストールされ、パーティション 4 は "/home" です。 "ls -al /"は何を報告するべきですか? "/"パーティションの合計サイズ(1MB)ですか、それとも4つのパーティションすべての合計サイズ(4MB)ですか?ドライブ上のすべてのファイルを調べて、どのパーティションにあるのかを確認せずに、何が何であるかをどうやって知ることができますか? 4MBドライブの場合は時間がかかりませんが、ほとんどいっぱいの6TBドライブを想像してみてください。 "ls"がドライブ上のすべてのファイルをスキャンしている間、数時間待つことができます。

「du」は異なる方法で実行されますが、ファイルシステムが使用データを保持する方法に関するもう1つの非常に複雑で技術的なプロセスです。そういえば本当です。いいえ必要なデータを追跡します(ディレクトリごとの使用量)。サイズのみが記録されます。完全パーティションそしてどのくらいのスペースが使われているか完全パーティションしたがって、空きスペース=合計スペース - 使用されたスペースを計算できます。各ディレクトリに関する情報を追跡しようとし、変更するたびにそれを再計算する必要がある場合は、「ls」と同じ問題が発生します(6TBドライブで1バイトだけ変更した場合は数時間かかることがあります)。 )

答え3

ほとんどを維持/修復する場合は、最初のオプションは実際のWindowsボックスに接続してchkdsk /f /rそのドライブで実行することです。

警告する:この操作には数時間かかることがあります。
たとえば、確認してください。http://technet.microsoft.com/en-us/magazine/ee872425.aspx使用するため。

autorun.inf使用されているファイルシステムが指定されていないため、ファイルとフォルダが明確であるため、NTFSと想定してくださいSystem Volume Information
(ヒント:TOSHIBA STOR.E ALU 2SもNTFS用に事前フォーマットされています。)

質問の他の部分では、全体的なスペース使用量の違いは、破損​​したファイルシステムまたはオープンファイルハンドルで発生する可能性があります。後者はthedu -sm /run/media/Harry/CA6C321E6C32062B
df -m /run/media/Harry/CA6C321E6C32062B出力の違いで簡単に観察でき、dfとduの出力の使用スペースを比較すると非常に似ているはずです。

また、ドライブが30%以上使用されたという結論をどのように得たかを明記していませんか?

関連情報