質問: CentOS6 を利用しています。 サーバログを抽出のうえzip化し保管する方法を考えています。 たとえば、下記のように2016年のファイルのみを抽出し、ディレクトリに移動をし、最後にzipコマンドで圧縮します。 ``` # ls -1 /var/log/yum.log-20* | grep -v "2013\|2014\|2015" | xargs -i cp -p {} /home/user/SERVERLOG # ls -1 /var/log/spooler-20* | grep -v "2013\|2014\|2015" | xargs -i cp -p {} /home/user/SERVERLOG ・ ・ ・ # zip -r SERVERLOG.zip SERVERLOG ``` しかし、対象のファイルがひとつのサーバにつき、30ファイルほどあります。 1回ずつコマンドをコピーペーストすることを非効率と思う場合は、やはりシェルスクリプトを作成するしかないでしょうか? シェルスクリプトを作成した経験がないため、書き方や考え方につき教えていただきたく思います。 宜しくお願いいたします。
回答: ``` # ls -1 /var/log/yum.log-20* | grep -v "2013\|2014\|2015" | xargs -i cp -p {} /home/user/SERVERLOG # ls -1 /var/log/spooler-20* | grep -v "2013\|2014\|2015" | xargs -i cp -p {} /home/user/SERVERLOG ・ ・ ・ # zip -r SERVERLOG.zip SERVERLOG ``` が問題なく動いてると仮定して、 * archive.sh ``` #!/bin/bash ls -1 /var/log/yum.log-20* | grep -v "2013\|2014\|2015" | xargs -i cp -p {} /home/user/SERVERLOG ls -1 /var/log/spooler-20* | grep -v "2013\|2014\|2015" | xargs -i cp -p {} /home/user/SERVERLOG ・ ・ ・ zip -r SERVERLOG.zip SERVERLOG ``` で行けるんじゃないかと思います。 実行権限を与えるのをお忘れなく。 ``` chmod +x archive.sh ``` です。