実行しようとすると
find . -iname "*.gz" -mtime +7 -exec tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz {} \;
ファイルのリストを取得します
./corosync.log-20140620.gz
./corosync.log-20140618.gz
./rgmanager.log-20140620.gz
./fenced.log-20140620.gz
./rgmanager.log-20140618.gz
./qdiskd.log-20140618.gz
しかしアーカイブには最後のアイテムしか保存されない
tar -tvf all_gizip_$(date +%Y-%m-%d).tar.gz
-rw-r--r-- root/root 506 2014-06-18 03:21 ./qdiskd.log-20140618.gz
何が間違っているのでしょうか?
答え1
コマンドはtar
各ファイルに対して1回実行され、各呼び出しはtar
同じ名前の出力を作成し、以前の出力を上書きします。そのため、最後のファイルのみが残ります。次のようなものが必要です。
find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz
ファイルのリストがそれほど大きくない限り、これは問題なく動作するはずです。リストが大きい場合は、 の使用に切り替えて、最後にtar rvf
別の手順を実行することをお勧めします。gzip