前の結果を並べ替えた結果、次のような結果の提案のみをdu
見ました。sort
du | sort
これはほとんどの目的に適していますが、ハードリンクを含む複数のディレクトリを一覧表示する場合は特に役立ちません。たとえば、増分バックアップがあります。
ハードリンクを2回計算すると、du
内容は次のようになります。
# du -hl --max-depth 1 /backup/saturn/ | sort -k 2
3.2G /backup/saturn/
456M /backup/saturn/2017-05-19
458M /backup/saturn/2017-05-20
461M /backup/saturn/2017-05-21
464M /backup/saturn/2017-05-22
462M /backup/saturn/2017-05-23
462M /backup/saturn/2017-05-24
465M /backup/saturn/2017-05-25
ただし、各古いディレクトリは他のディレクトリファイルへの多くのハードリンクを共有するため、これらの結果は正しくありません。これは増分バックアップです。
しかし、より意味のある結果は次のとおりです。
# du -h --max-depth 1 /backup/saturn/ | sort -k 2
666M /backup/saturn/
29M /backup/saturn/2017-05-19
53M /backup/saturn/2017-05-20
25M /backup/saturn/2017-05-21
40M /backup/saturn/2017-05-22
462M /backup/saturn/2017-05-23
14M /backup/saturn/2017-05-24
46M /backup/saturn/2017-05-25
これはランダムな順序でディレクトリを評価するので、ある日から次の日までどれだけ変更されたかについての意味のある情報をほとんど提供しないため、少し面白いです。
du
だから私はディレクトリが評価される順序を制御する方法を探しています。
答え1
拡張リギのコメント、最新バージョンでは、du
このオプションを使用してスキャンするファイルのリストを読み取ることができるので、--files0-from
次のことができます。
printf "%s\0" /backup/saturn/*/ | sort -z | du --files0-from=- -h --total
たとえば、
$ du -hxd1 foo
111M foo/2017-05-20
4.0K foo/2017-05-19
4.0K foo/2017-05-30
111M foo
そして:
$ printf "%s\0" foo/*/ | sort -z | du --files0-from=- -h --total
101M foo/2017-05-19/
11M foo/2017-05-20/
4.0K foo/2017-05-30/
111M total
find
あまりにも多くのファイルをglobする必要がある場合は使用できますが、printf
少し冗長です。
$ find foo -mindepth 1 -maxdepth 1 -type d -print0 | sort -z | du --files0-from=- -h --total
101M foo/2017-05-19
11M foo/2017-05-20
4.0K foo/2017-05-30
111M total