tar 아카이브가 작성되었는지 확인하는 방법은 무엇입니까?

tar 아카이브가 작성되었는지 확인하는 방법은 무엇입니까?

아카이브를 생성할 때 사용할 수 있다는 것을 알고 있지만 -W아카이브가 생성되었는지 어떻게 확인합니까? tvWf이것이 유효한 tar 아카이브가 아니라고 말합니까?

$ mkdir tmp
$ echo asdkfjh > tmp/a
$ echo qweroiu > tmp/b
$ ls
tmp
$ tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b
$ tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: VERIFY FAILURE: 1 invalid header detected
tar: Error exit delayed from previous errors

tar 1.15(centos 5의 시스템 기본값) 및 1.26(gnu 최신 버전)에서도 동일한 일이 발생합니다.

답변1

GNU 에는 옵션이 tar있습니다 --compare. 보다아카이브 멤버를 파일 시스템과 비교자세한 내용은 문서 섹션을 참조하세요.

답변2

W와 함께 사용할 수 없습니다 t.

mkdir tmp
echo bdb > tmp/a
echo bdb > tmp/b

tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b

ls -l archive.tar
-rw-r--r-- 1 tony tony 10240 Jun 23 05:57 archive.tar

tar tvf archive.tar
drwxr-sr-x tony/tony         0 2011-06-23 05:57 tmp/
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/a
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/b

tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

t나는 이것만으로도 프로필을 테스트하기에 충분하다고 생각합니다 .

답변3

star요르그 실링스차이점tar 아카이브의 파일을 원본 파일과 비교하는 옵션입니다. 차이점으로 간주되어야 하는 사항을 명시할 수 있습니다.

0 1 newt pts/1 ~ 17> :> tmp/testfile
0 1 newt pts/1 ~ 19> star -cz tmp > tmp.tar
0 1 newt pts/1 ~ 19> echo bla > tmp/testfile
0 1 newt pts/1 ~ 20> star -z -diff diffopts=not,times < tmp.tar
diffopts=perm,symperm,type,nlink,uid,gid,uname,gname,size,data,rdev,hardlink,symlink,sympath,sparse,dir,acl,xattr,fflags
tmp/testfile: different size,data
star: 115 blocks + 0 bytes (total of 1177600 bytes = 1150.00k).

testfile다양한 크기와 데이터가 언급되어 있습니다 . 시간(액세스 시간 포함!)을 제외하지 않으면 액세스 시간도 표시되며 시간을 확인하여 시간이 변경된 모든 파일도 나열됩니다.

BerliOS가 종료된 이후 다음 위치 star에서 찾을 수 있습니다.소스 포지. 이식성이 뛰어나며 대부분의 유닉스 시스템 및 유사한 유닉스 시스템에서 쉽게 컴파일됩니다.

답변4

유효성 검사 옵션은 생성 이후가 아닌 생성 중에 사용해야 합니다. 또한 나중에 압축이 추가될 예정입니다.

%> tar -cvpWlf  test.tar sh.save
sh.save/
sh.save/test.tar
sh.save/Downloads/
sh.save/mount.sh
sh.save/Documents/
sh.save/skip_dirs_in_find.sh
Verify sh.save/
Verify sh.save/test.tar
Verify sh.save/Downloads/
Verify sh.save/mount.sh
Verify sh.save/Documents/
Verify sh.save/skip_dirs_in_find.sh

tar는 "--compare" 옵션을 제공하지만.

man tar:

-d, --diff, --compare
아카이브와 파일 시스템 간의 차이점을 찾습니다. 인수는 선택 사항이며 비교할 아카이브 멤버를 지정합니다. 지정하지 않으면 현재 작업 디렉터리로 가정됩니다.

관련 정보