findで古いファイルを削除・移動・圧縮する方法
findとxargsを使用して、古いファイルを削除・移動・圧縮する方法を紹介します。個人的にはログファイル等をメンテナンス時によく使うコマンドです。
findで、n日より古いファイルを削除する
特定の日数以上のファイルを「-mtime」オプション使って対象としています。下記の場合は60日以上前のファイルとしています。その検索条件にHITしたファイルを「xargs」に渡して「rm」で削除しています
$ find /etc/httpd/log -type f -mtime +60 -name "*.log" | xargs rm -f
$ find /etc/httpd/log -type f -mtime +60 -name "*.log" | xargs rm -f
$ find /etc/httpd/log -type f -mtime +60 -name "*.log" | xargs rm -f
findで、n日より古いファイルを移動する
削除のときと同じように、「-mtime」を利用して古いファイルを検索して「xargs」に渡しています。削除とは違い「mv」コマンドで任意のディレクトリに移動しています
$ find /etc/httpd/log -type f -mtime +90 -name "*.log" | xargs mv --target-directory=/var/tmp/backup
$ find /etc/httpd/log -type f -mtime +90 -name "*.log" | xargs mv --target-directory=/var/tmp/backup
$ find /etc/httpd/log -type f -mtime +90 -name "*.log" | xargs mv --target-directory=/var/tmp/backup
findで、n日より古いファイルを圧縮する
削除のときと同じように、「-mtime」を利用して古いファイルを検索して「xargs」に渡しています。削除・移動とは違い「gzip」コマンドで任意のディレクトリに圧縮しています。
また、念のために「! -name “*.gz" 」で圧縮は対象外としています
$ find /etc/httpd/log -type f -mtime +30 -name "*.log*" ! -name "*.gz" | xargs gzip
$ find /etc/httpd/log -type f -mtime +30 -name "*.log*" ! -name "*.gz" | xargs gzip
$ find /etc/httpd/log -type f -mtime +30 -name "*.log*" ! -name "*.gz" | xargs gzip
ディスカッション
コメント一覧
まだ、コメントがありません