거기에는 많은 단서가 있지만 전체 해트트릭을 포괄하는 단서는 없습니다. tar
2019-06-30(±760일)보다 최신인 디렉터리 트리의 모든 파일을 시도하고 있지만 이름이 붙은 파일은 무시하고 backup
수십 가지 옵션을 살펴보았는데 다음과 같습니다.
tar -cvzf newest-files.tar.gz --newer-mtime "760 days ago" client_images/ | grep -v 'backup'
이것은 올바른 필터링(날짜 및 무시)을 수행하지만 아무것도 압축하지 않습니다( empty archive
오류).
sudo find client_images/. -mtime -760 | grep -v 'backup'
어떻게 일어나는지 알 수 없습니다 tar
.
| tar -cvzf files.tar.gz
내가 무엇을 놓치고 있나요?
감사해요.
고쳐 쓰다:
이것은 내 시스템 관리자(익명을 유지하길 원하는)가 보낸 것입니다:
명령줄은 찾은 각 파일에 대해 tar 명령을 실행하고 해당 파일에 대한 새 tar 아카이브(항상 최신 파일.tar.gz라고 함)를 생성(-c)한 다음 파일을 tar로 변환하고 해당 tar 아카이브로 압축합니다. 따라서 결국에는 "find" 명령으로 찾은 마지막 파일을 포함하는 tar 아카이브가 남게 되며 이전의 모든 tar 아카이브는 덮어쓰기됩니다(항상 이름이 같기 때문입니다).
이를 방지하려면 생성(-c) tar 옵션 대신 추가(-r)를 사용해야 합니다. 안타깝게도 이는 하나의 명령으로 압축하는 경우에는 작동하지 않으므로 별도의 단계에서 수행해야 합니다. 압축이 필요하지 않으면 압축하면 됩니다. 그래서,
$ find client_images -type f -mtime -760 -exec tar -rvf newestfiles.tar
--exclude '*mcith'* {} \;
$ gzip newestfiles.tar
ベストアンサー1
노력하다
find client_images -type f -mtime -760 -print0 | tar cvzf files.tar.gz --files-from=- --null --exclude=\*backup\*
find
이는 디렉터리가 아닌 파일만 일치하고 lf로 구분된 이름 대신 NUL로 구분된 이름을 출력해야 함을 나타냅니다 (이상한 파일 이름을 안전하게 처리하기 위해). 그 이유는 tar
기회가 주어지면 디렉토리 자체로 재귀되기 때문입니다 .
tar
보관할 파일 목록을 표준 입력(--files-from=-)에서 읽고 NUL로 구분된(--null)로 처리되도록 하는 옵션이 추가되었습니다 . --exlude는 불필요한 파일을 보관하는 것을 방지합니다.
아, 그리고 저는 침대에서 아이패드로 타이핑을 하고 있기 때문에 이것은 모두 테스트되지 않았으며 작동하지 않을 수도 있습니다.