特定の期間(たとえば、過去7日間)に作成されたファイル/ディレクトリがディスク使用量の増加に大きく貢献したかどうかを知りたいです。
出力は次のようになります。
du /root -ah --max-depth 2 --time
たとえば十分です。
$ show-disk-usage /root --since 2020-12-01 --till now --max-depth 2
1,1M 2020-12-01 03:41 /root/dir1/sub1
2,0M 2020-12-12 05:46 /root/dir1/sub2
3,2M 2020-12-09 17:01 /root/dir1/file
6,3M 2020-12-12 05:46 /root/dir1
1,1M 2020-12-01 03:41 /root/dir2/sub1
2,0M 2020-12-10 21:30 /root/dir2/sub2
3,2M 2020-12-09 17:01 /root/dir2/file
6,3M 2020-12-10 21:30 /root/dir2
12,6M 2020-12-12 05:46 /root
3つの列で
disk-usage-sum-of-modified-files last-modification-time file-or-directory-path
du
指定された時間範囲内のファイルのみを表示し、そのディレクトリに追加する必要がある合計とは異なります。たとえば、ファイルサイズを/root/dir1/file2
変更しても、上記の例の出力は変更しないでください。2020-08-01 12:01
9,8M
ボーナス:--threshold
このオプションは、du --threshold 1M
貢献したファイルのみをインポートするのに役立ちます。かなりただし、ディスク使用量を増やすために、このオプションはディレクトリの合計を変更しないでください。これは小さなファイルが蓄積され、大量のディスク容量を消費できるためです。
ボーナス2:修正時間ではなくファイル作成時間を使用する方が良いでしょう。大きなファイルへの小さな変更は、望むものではない可能性があるためです。オプション--created-since
、--created-till
および改善になります--modified-since
。--modified-till
注:ソリューションがコマンドラインアプリケーションである必要はありません。
答え1
find
結合しdu
てください。
find /home/vtrefny -type f -mmin -$((7 * 24 * 60)) -printf "%p\0" | du -h -t 1M --time --files0-from=-
find
議論
-mmin
- ファイルがX分前に最後に変更されました(作成/アクセス時にcmin
利用可能)。amin
-$((7 * 24 * 60))
- わずか数分で7日-printf "%p\0"
- NULバイトの後にファイルパスを印刷します(du
必須)。
du
議論
--time
- 最後の修正時間を印刷します(--time=<ctime/atime>
作成/アクセス時間に使用可能)。--files0-from=-
- 標準入力からファイルのリストを読みます(find
ここに提供されています)。