आप एक टार संग्रह को कैसे सत्यापित करते हैं जो पहले से लिखा गया है?


15

मुझे पता है कि आप एक संग्रह बनाते समय -W कर सकते हैं, लेकिन आप कैसे संग्रह और पहले से निर्मित संग्रह को सत्यापित करते हैं? tvWf का कहना है कि यह एक वैध टार संग्रह नहीं है?

$ 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

एक ही बात दोनों टार १.१५ के साथ होती है (जो कि सेंटो ५ पर सिस्टम डिफॉल्ट है) और १.२६ (जो कि गनु से सबसे नया संस्करण है)।

जवाबों:


8

आप के 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है कि पुरालेख का परीक्षण करने के लिए अकेला पर्याप्त है।


tअकेले ही पुरालेख की सामग्री को सूचीबद्ध करता है। मैं यह सत्यापित करना चाहता हूं कि टार में फाइलों में मूल (अभी भी फाइल सिस्टम पर) के समान सामग्री है, जो मुझे लगा कि क्या Wकरना चाहिए (दाएं?)।
सेस्पिनोज़ा

1
डब्ल्यू केवल संग्रह लिखने के दौरान ऐसा करता है । यदि आप यह सुनिश्चित करना चाहते हैं कि सामग्री बाइट मैच के लिए एक बाइट है, तो आपको इसे कहीं और निकालना होगा और फ़ाइलों को अलग करना / योग करना होगा।
आठबेटटोनी

मेरे लिए नहीं tar tvWf t.tar tar: --verify cannot be used with -t::tar (GNU tar) 1.27.1
टॉम हेल

14

जीएनयू के tarपास एक --compareविकल्प है। देखें फाइल सिस्टम के साथ तुलना आर्काइव सदस्य जानकारी के लिए प्रलेखन की धारा।


5
उदाहरण के लिए tar -df /path/to/archive.tar.bz2, पुरालेख और फाइलसिस्टम में फाइलों के बीच अंतर दिखाएगा, जो कि वर्तमान कार्यशील निर्देशिका के खिलाफ संग्रह में सापेक्ष पथों को हल कर रहा है।
वाल्फ

3

जोर्ज स्किलिंग्स starएक अलग विकल्प के रूप में खेलता है, जो अपने मूल के साथ एक टार संग्रह में फ़ाइलों की तुलना करने में सक्षम है। आप बता सकते हैं कि अंतर के रूप में क्या पहचाना जाना चाहिए।

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 । यह अत्यधिक पोर्टेबल है, और अधिकांश यूनिक्सड सिस्टम और यूनिक्सॉइड लुक-अलाइक पर दर्द रहित रूप से संकलित करता है।


हाल के schilytoolsस्रोत स्रोत पैकेज में हैं।
विद्वान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.