運用でディレクトリ内のファイルを全て圧縮することってありますよね?
僕はありました。今日ありました。いきなり言われました。雪のせいだ。
そんな雪のせいな運用対応のメモです。
メモする程のことでもないけど
スポンサーリンク
こんな感じのディレクトリ構成でAAA〜CCC以下のファイルをまとめて圧縮したい場合
/home/user/data/
|--AAA
| |--aaa.txt
|--BBB
| |--aaa.txt
| |--bbb.txt
| |--vvv.txt
|--CCC
| |--aaa.txt
| |--bbb.txt
| |--ccc.txt
| |--ddd.txt
| |--eee.txt
| |--yyy.txt
こんな感じ ついでに消します。
files="/home/user/data/*" fileary=() dirary=() filedate=`date +%Y%m%d` for filepath in $files; do if [ -f $filepath ] ; then dirary+=("$filepath") fi done for i in ${dirary[@]}; do cd $i tar cf - *.txt | gzip -c > ${filedate}.tar.gz rm -f *.txt done
こんな感じになる
/home/user/data/
|--AAA
| |--20160118.tar.gz
|--BBB
| |--20160118.tar.gz
|--CCC
| |--20160118.tar.gz
ついでにこんな感じで7日経ったら消しています
rm -f `find /home/user/data/ -mtime +7 -name "*.*"`
このdataディレクトリは滅多に見ないけど、とりあえず残しておかないといけないので、圧縮しないとただの容量喰いなやつなのです。
ディレクトリによっては数GBとか喰われる。
とりあえずすっきりしました。