特定の時間範囲のディスク使用量を取得する

特定の時間範囲のディスク使用量を取得する

特定の期間(たとえば、過去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:019,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ここに提供されています)。

関連情報