find...exec tar czvf를 실행하면 하나의 파일만 보관됩니다...모든 파일이 필요합니다

find...exec tar czvf를 실행하면 하나의 파일만 보관됩니다...모든 파일이 필요합니다

실행하려고 할 때

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각 파일에 대해 한 번 실행되며 각 호출은 tar동일한 이름의 출력을 생성하므로 이전 출력을 덮어씁니다. 따라서 마지막 파일만 남게 됩니다. 당신은 다음과 같은 것이 필요합니다

find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz

파일 목록이 크지 않은 한 이것은 잘 작동합니다. 그렇다면 마지막에 tar rvf별도의 단계를 사용하고 수행하는 것으로 전환하고 싶을 것입니다.gzip

관련 정보