나에게 문제가 있는 것 같다. 현재 디렉토리에 몇 가지 다른 파일 형식이 있는데,타르그만큼.png파일. 나는 이것으로 시작했습니다 :
find -name "*.png" | tar -cvf backupp.tar
어떤 파일을 지정하지 않았기 때문에 작동하지 않으므로 다른 사람들이 어떻게 했는지 살펴보고 xargs를 추가했습니다.
find -name "*.png" | xargs tar -cvf backupp.tar
이번에는 성공했고, backupp.tar 파일이 생성됐는데, 여기에 문제가 있습니다. 추출이 안되는 것 같네요. 내가 입력할 때마다:
tar -xvf backupp.tar
아무 일도 일어나지 않습니다. chmod와 sudo를 변경해 보았지만 아무 것도 제공되지 않았습니다.
그렇다면 내가 완전히 잘못된 명령을 입력했습니까, 아니면 방금 놓친 것이 있습니까?
답변1
두 가지 접근 방식은 모두 거의 작동했지만 각각 뚜렷한 문제가 있었습니다.
첫 번째 접근 방식에서는 파일 목록을 tar
. 표준 입력에서 파일 목록을 읽으 려면 / 및 옵션을 tar
사용해야 합니다 . 예:-T
--files-from
-
find -name '*.png' -print0 | tar -cvf backup.tar --null -T -
자세한 내용은 공식 문서를 참조하세요.
메모:-print0
및 플래그를 사용하면 --null
공백이 포함된 파일 이름도 처리할 수 있습니다.
tar
두 번째 접근 방식에서는 via 실행을 시도 xargs
하지만 "만들기" 옵션( --create
/ -c
)을 사용하고 있습니다. for-loop 와 함께 또는 for 루프에서 "create" 옵션을 사용하면 xargs
매 반복 후에 아카이브를 덮어씁니다. 대신 "추가" 옵션( -a
/ --append
) 또는 "업데이트" 옵션( -u
/ --update
)을 사용해 보세요. 예:
find -name "*.png" -exec tar -uvf backupp.tar {} \;
이렇게 하면 파일을 덮어쓰는 대신 각 반복 후에 아카이브에 파일이 추가됩니다.
어느 쪽이든 작업이 완료되면 "목록" 옵션( --list
/ -t
)을 사용하여 아카이브의 내용을 보고 모든 것이 예상대로 작동하는지 확인할 수 있습니다.
tar tf backupp.tar
답변2
간단히 와일드카드를 사용할 수 있습니다.
tar -cvf backup.tar *.png
또는 사용하여find
find -name "*.png" | tar -cvf backup.tar -T -
이 -T
옵션은 FILE에서 파일 이름을 가져옵니다. 이 경우 stdin입니다.-