मैं अन्य उत्तरों के विफल होने के बाद एक खरगोश-छेद के नीचे चला गया, और यह पता लगाने में कामयाब रहा कि मेरे संस्करण का टार (1.27.1 ओपनसेउस से 42.3 ओएसएस रेपो) pax
डिफ़ॉल्ट रूप से गैर-नियतात्मक अभिलेखीय प्रारूप का उपयोग कर रहा था , जो कि यहां तक कि संपीड़न के बिना, (और यहां तक कि स्पष्ट रूप से माइम सेट करना) समान फ़ाइलों से टार के साथ बनाए गए अभिलेख अलग होंगे:
$ echo hi > test.file
$ tar --create --to-stdout test.file # long form of `tar cO test.file`
./PaxHeaders.13067/test.file0000644000000000000000000000013213427447703012603 xustar0030 mtime=1549684675.835011178
30 atime=1549684726.410510251
30 ctime=1549684675.835011178
test.file0000644000175000001440000000000313427447703013057 0ustar00hartusers00000000000000hi
$ tar --create --to-stdout test.file
./PaxHeaders.13096/test.file0000644000000000000000000000013213427447703012605 xustar0030 mtime=1549684675.835011178
30 atime=1549684726.410510251
30 ctime=1549684675.835011178
test.file0000644000175000001440000000000313427447703013057 0ustar00hartusers00000000000000hi
ध्यान दें कि ऊपर दिए गए आउटपुट में भिन्नता है, भले ही कोई संपीड़न उपयोग नहीं किया जा रहा हो ; असम्पीडित पुरालेख सामग्री (एक ही सामग्री पर दो बार टार चलाकर उत्पन्न) अलग-अलग हैं, इसलिए GZIP=-n
अन्य सुझाव के अनुसार उपयोग करते समय संपीड़ित सामग्री भी भिन्न होगी
इसे प्राप्त करने के लिए, आप यह निर्दिष्ट कर सकते हैं --format gnu
:
$ tar --create --format gnu --to-stdout test.file
test.file0000644000175000001440000000000313427447703011557 0ustar hartusershi
$ tar --create --format gnu --to-stdout test.file
test.file0000644000175000001440000000000313427447703011557 0ustar hartusershi
यह ऊपर gzip के सुझाव के साथ काम करता है:
# gzip refuses to write to stdout, so we'll use the `-f` option to create a file
$ GZIP=-n tar --format gnu -czf test.file.tgz test.file && md5sum test.file.tgz
0d8c7b3bdbe8066b516e3d3af60ade75 test.file.tgz
$ GZIP=-n tar --format gnu -czf test.file.tgz test.file && md5sum test.file.tgz
0d8c7b3bdbe8066b516e3d3af60ade75 test.file.tgz
# without GZIP=-n we see a different hash
$ tar --format gnu -czf test.file.tgz test.file && md5sum test.file.tgz
682ce0c8267b90f4103b4c29903c5a8d test.file.tgz
हालाँकि, gzip के लिए बेहतर संपीड़न प्रारूपों को प्राथमिकता देने के लिए मान्य कारणों के अलावा , आप इसके बजाय xz का उपयोग करने पर विचार करना चाह सकते हैं (जो टार के बजाय --xz
या -J
झंडे का भी समर्थन करता है -z
), क्योंकि यह आपको यहाँ एक कदम बचाता है; का डिफ़ॉल्ट व्यवहार xz
समान संपीड़ित आउटपुट उत्पन्न करने के लिए है जब असम्पीडित सामग्री समान होती है, इसलिए जैसे विकल्प को निर्दिष्ट करने की कोई आवश्यकता नहीं है GZIP=-n
:
$ tar --format gnu --xz -cf test.file.txz test.file && md5sum test.file.txz
dea99037d4b0ee4565b3639e93ac0930 test.file.txz
$ tar --format gnu --xz -cf test.file.txz test.file && md5sum test.file.txz
dea99037d4b0ee4565b3639e93ac0930 test.file.txz
touch filename
जो एक फ़ाइल के संशोधित समय को बदलता है वह चेकसम को बदलने के लिए पर्याप्त है।