サイズ9Tのディレクトリ(マウントポイント)があり、各ディレクトリ、特により多くのスペースを消費するディレクトリのサイズを取得したいと思います。これを行うには、次のコマンドを使用し、bashスクリプトの結果をtxtファイルにプッシュします。
du -hsx * | sort -rh | head -10
予想より時間がかかり、数時間経っても結果を何度も得ることができませんでした。
私はこれをWebとMobgar VPN接続で試しています。ここで改善できるものはありますか?
答え1
正確なディスク容量が必要な場合は、ディレクトリが大きいため時間がかかります。これを頻繁に実行する必要がある場合は、1日に1回実行され、このファイルを生成するcronジョブを設定することをお勧めしますdu
(または要件とこれらのディレクトリが更新される頻度に応じて頻度を選択します)。
これにより、以前のスナップショットでこのファイルのソート操作をすばやく実行できます。
答え2
あなたはそれを使用することができます:
ls -ldpShR
-l
長いバージョンの場合
-d
のみディレクトリを表示する
-p
ディレクトリ名の/使用サイズによるソート
-S
は、
-h
人間が読むことができることを意味し、再帰的である
-R
ことを意味します
答え3
du --max-depth=1 * | sort -nr | head -n 10
このコマンドは、最大から最小までのソートされたフォルダサイズを含むリストを生成し、最初の10行を取得します(du
GNU coreutilsが使用されていると仮定)。
答え4
更新されたバージョンです。
最初の読み出し速度とバッファとキャッシュサイズは、SSDとHDDによって異なります。
だから私はあなたがフォルダにアクセスできると仮定しています(参照「何度も結果が得られませんでした」、一部のフォルダではアクセス権が必要な場合があります。そうしないと、「du: '/direc/tori/ss' ディレクトリを読み込めません: 権限が拒否されました」というメッセージが表示されることがあります。
あなたの言葉によると
du -hsx * | sort -rh | head -10
h: print sizes in human readable format
s: --summarize you want the total size of directory,(you didn't ask for sub-directory, did you?)
x: you want to "skip directories on different file systems"
sort the result r: reverse and h: human numeric (you need h here because you use it there with du to distigush K,M,G)
head -10 : get the first top 10 of the sorted list
du以外の方法はありませんか?はい、その1つはncdu(duの呪いベースのバージョン)を使用しています。
説明する:
時間確認(現地)私のシステムパフォーマンスに基づいて
GNU Bash、バージョン5.1.4
正しいディレクトリを想定し、132Gデータを持つHDD 7200rpmの場合:
1- time du -hsx * | sort -rh | head -10
real 0m44.978s
user 0m2.432s
sys 0m13.183s
2-時間 du -B 1 --max-length=1|sort-rh|head-10
real 0m43.823s
user 0m2.269s
sys 0m12.879s
real:ユーザー経過時間、sys:CPU処理時間。
大きなファイル(isoファイルなど)がある場合は、最初のduに表示されますが、2番目のduにはディレクトリのみが表示されます。
ヘッダーを使用しない場合:使用されたサイズ。注文ファイルとフォルダ38G、22G、20G、11G、9.6G、6.9G、5.9G、3.2G、3.2G、2.7G、781M、590M、301M、132M、12M、6.9M 3.6M ,276K,224K,25K,4.0K,4.0K,4.0K,512,0
私が使うとき私のもの(ブロックをK、M、Gに変換した後) .9MiB、。 7MiB、3.6MiB、3.5MiB、276KiB、224KiB、100KiB、25KiB、512B
ファイルは表示されません。
SSDがHDDよりはるかに高速であることを証明する必要はないようです。
ncdu 1.15.1 並べ替えなし
real 0m43.550s
user 0m2.742s
sys 0m13.604s
さらに、ncduにはリモート接続用のSSHオプションもあります。
別のシェルを使用している場合は、読んだ回答とコメントに基づいて追加情報で質問を更新してください。
ついに2つのコマンド間の時間差はそれほど大きくないと思うので、一晩の結果をテキストファイルに保存して後で並べ替えることができます。