受信した複数zipファイルを補完・利用するシェルスクリプト

Bigdataというbuzzwordが流行るなかですが、各機器のログを1箇所に集約するとして。例えばですが、zip圧縮されて届くファイルを展開して保存・利用する場合。

受信したzipファイルはtmp/ディレクトリに配置されるとして、受信中のファイルを展開しないために1分前より前が最終更新日のファイルのみを対象として展開する。(スクリプト1)

展開してファイル作成中に、アプリケーション(なんらかのログ利用アプリケーションを想定)がファイルリードしてしまうといけないので、ここでも最終更新日から1分以上たったものを対象にして、指定のディレクトリ(/dst)に配置する。※cpよりmv推奨(スクリプト2)

これらをcrontabに設定。

スクリプト1
#!/bin/bash
# 1. find received zip file from tmp/ then
# 2. extract it to extract/ and
# 3. rename it to bak/
#find tmp -type f -mmin +1 | xargs -n 1 unzip -d to
path=/hoge/fuga
for i in $(find ${path}/tmp -type f -mmin +1); do
    unzip ${i} -d ${path}/extract
    mv -f ${i} ${path}/bak
done
 
・スクリプト2
#!/bin/bash
# mv log from extract/ to dst/
path=/hoge/fuga
for i in $(find ${path}/to -type f -mmin +1); do
    mv -f ${i} ${path}/dst
done