.tar.xz
다음 명령을 사용하여 디렉터리를 아카이브 형식으로 압축했습니다.
tar --create --verbose --file myArchive.tar.xz /path/to/my/dir
그런 다음 다음 명령을 사용하여 생성된 아카이브의 상태를 확인하려고 했습니다.
tar --compare --file myArchive.tar.xz /path/to/my/dir
이 오류 줄이 있습니다.
tar: /path/to/my/dir: Not found in archive
tar: Exiting with failure status due to previous error
다시 시도했지만 같은 결과를 얻었습니다. 문제는 무엇이며 어떻게 해결합니까?
답변1
절대 경로 이름을 사용해야 하는 경우 및 명령을 -P
모두 사용하는 것을 고려해야 합니다 .--create
--compare
-P, --absolute-names
Don't strip leading slashes from file names when creating archives.
예:
$ tar -cvPf a.tar /home/user/test_file
/home/user/test_file
$ tar -dvPf a.tar /home/user/test_file
/home/user/test_file
또는 -C
비교하기 전에 디렉토리를 변경하여 사용할 수도 있습니다.
-C, --directory=DIR
Change to DIR before performing any operations. This option is
order-sensitive, i.e. it affects all options that follow.
예:
tar -cvf a.tar /home/user/test_file
tar: Removing leading `/' from member names
/home/user/test_file
tar -dvf a.tar -C/ home/user/test_file
home/user/test_file
답변2
선행 항목이 /
제거되어 아카이브에서 경로 이름을 찾을 수 없습니다.
표준 GNU를 사용 tar
하고 파일을 추가 하면 /absolute/path/file.ext
선행이 /
제거되고 파일 이름이 absolute/path/file.ext
아카이브 내에서 지정됩니다.
일반적으로 이는 파일을 보관할 때 stderr에 기록됩니다. 출력을 확인하면 다음 예와 같을 수 있습니다.
# tar -cvf test.tar /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd
# tar -tf test.tar
etc/passwd
그러니 달리기를 해보세요
tar --compare --file myArchive.tar.xz path/to/my/dir
path가이면 경로의 첫 번째 문자가 생략됩니다 /
.