คุณจะตรวจสอบไฟล์เก็บถาวร tar ที่เขียนไปแล้วได้อย่างไร?


15

ฉันรู้ว่าคุณสามารถทำได้ -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)

คำตอบ:


8

คุณไม่สามารถใช้กับWt

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อยู่คนเดียวก็เพียงพอที่จะทดสอบที่เก็บถาวร


tเพียงอย่างเดียวก็แสดงรายการเนื้อหาของไฟล์เก็บถาวร ฉันต้องการตรวจสอบว่าไฟล์ใน tar มีเนื้อหาเหมือนกับต้นฉบับ (ยังอยู่ในระบบไฟล์) ซึ่งฉันคิดว่าWควรจะทำอย่างไร (ใช่ไหม)
cespinoza

1
W ทำเช่นนั้นเมื่อเขียนไฟล์เก็บถาวรเท่านั้น หากคุณต้องการให้แน่ใจว่าเนื้อหานั้นเป็นไบต์สำหรับการจับคู่ไบต์คุณจะต้องแยกมันออกจากที่ใดที่หนึ่งและกระจาย / รวมไฟล์
EightBitTony

ไม่ได้สำหรับฉัน: tar tvWf t.tar tar: --verify cannot be used with -t:tar (GNU tar) 1.27.1
ทอมเฮล

14

GNU tarมี--compareตัวเลือก ดูการเปรียบเทียบสมาชิกถาวรกับส่วนระบบไฟล์ของเอกสารประกอบสำหรับรายละเอียด


5
เช่นtar -df /path/to/archive.tar.bz2จะแสดงความแตกต่างระหว่างไฟล์ในไฟล์เก็บถาวรและระบบไฟล์แก้ไขเส้นทางสัมพัทธ์ในไฟล์เก็บถาวรเทียบกับไดเรกทอรีทำงานปัจจุบัน
Walf

3

Joerg Schillings starมีตัวเลือกdiffซึ่งสามารถเปรียบเทียบไฟล์ในไฟล์เก็บถาวร 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สามารถพบได้ที่SourceForge มันเป็นแบบพกพาสูงและรวบรวมอย่างไม่ลำบากในระบบ unixoid ส่วนใหญ่และ unixoid look-alikes


แหล่งที่มาล่าสุดอยู่ในschilytoolsแพคเกจแหล่งที่มา
schily
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.