#! /bin/sh -e thisyear=$(date +%Y) last=nil flush () { case $last in nil) return ;; esac (cd tmp/rollup/all && tar cfz - .) >tmp/rollup/$last-all.tgz mv tmp/rollup/$last-all.tgz archive/ rm -f archive/$last-??-??T??:??:??Z.tgz rm -rf tmp/rollup/all } rm -rf tmp/rollup; mkdir -p tmp/rollup for i in archive/????-??-??T??:??:??Z.tgz; do base=${i##*/} year=${base%%-*} case $year in $thisyear) break ;; $last) ;; *) flush; mkdir tmp/rollup/all; last=$year ;; esac mkdir tmp/rollup/cur (cd tmp/rollup/cur && tar xfz -) <$i mv tmp/rollup/cur/cert.* tmp/rollup/all/ for j in tmp/rollup/cur/*; do base=${j##*/} case $base in cert.*) mv tmp/rollup/cur/$base tmp/rollup/all/ ;; *) cat tmp/rollup/cur/$base >>tmp/rollup/all/$base; rm tmp/rollup/cur/$base ;; esac done rmdir tmp/rollup/cur done flush rmdir tmp/rollup