1GB以上のディレクトリにあるすべてのファイルを圧縮するシェルスクリプト

1GB以上のディレクトリにあるすべてのファイルを圧縮するシェルスクリプト

私のファイル/var/logs/*.logでは、サイズが1 GBを超えるすべてのファイルを圧縮するスクリプトを生成する必要があります/var/logs/*.zip。たとえば、サイズが1024 MBを超えるaccess_log.log場合です。access_log.zip

答え1

これは機能することができます(実行中/var/log):

find *.log -type f -size +1G |xargs -L1 -I file zip file.zip file

説明する

  • find *.log -type f -size +1G1GBを超えるすべてのファイルを探す
  • xargs -L1 -I file zip file.zip fileすべてのファイルを圧縮

xargsマルチコアシステムを使用している場合(おそらくそうです)、引数を指定して4つのzipコマンドを並列に実行できます-P4

より多くのスペースを節約したい場合は、zipこの-9オプションを提供してください。

また、Unixの世界ではgzipbzip2およびxz/がZipよりも一般的である点に注目する価値があります。lzip

答え2

この例では、find -sizeオプション1Mを確認してください。

find . -size +1M --exec gzip {} \;

しかし、 /var/log フォルダーにある場合は、logrotate メソッドを使用してファイルの記録と自動圧縮を管理することをお勧めします。

関連情報