생성된 아카이브를 확인할 때 "tar:/path/to/my/dir: 아카이브에서 찾을 수 없음" 오류 발생

생성된 아카이브를 확인할 때 "tar:/path/to/my/dir: 아카이브에서 찾을 수 없음" 오류 발생

.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가이면 경로의 첫 번째 문자가 생략됩니다 /.

관련 정보