실행하려고 할 때
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