날짜 이후 mtime 및 grep을 사용하여 파일 압축

날짜 이후 mtime 및 grep을 사용하여 파일 압축

거기에는 많은 단서가 있지만 전체 해트트릭을 포괄하는 단서는 없습니다. tar2019-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는 불필요한 파일을 보관하는 것을 방지합니다.

아, 그리고 저는 침대에서 아이패드로 타이핑을 하고 있기 때문에 이것은 모두 테스트되지 않았으며 작동하지 않을 수도 있습니다.

おすすめ記事