受信した複数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