私のファイル/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 +1G
1GBを超えるすべてのファイルを探すxargs -L1 -I file zip file.zip file
すべてのファイルを圧縮
xargs
マルチコアシステムを使用している場合(おそらくそうです)、引数を指定して4つのzipコマンドを並列に実行できます-P4
。
より多くのスペースを節約したい場合は、zip
この-9
オプションを提供してください。
また、Unixの世界ではgzip
、bzip2
およびxz
/がZipよりも一般的である点に注目する価値があります。lzip
答え2
この例では、find -sizeオプション1Mを確認してください。
find . -size +1M --exec gzip {} \;
しかし、 /var/log フォルダーにある場合は、logrotate メソッドを使用してファイルの記録と自動圧縮を管理することをお勧めします。