ทำไมคนถึงใช้ทาร์บอล?


91

ในฐานะนักพัฒนา Windows เป็นหลักบางทีฉันอาจพลาดบางสิ่งบางอย่างทางวัฒนธรรมในชุมชน Linux แต่มันทำให้ฉันสับสนอยู่เสมอ

เมื่อดาวน์โหลดสิ่งที่ไฟล์จะถูกครั้งแรกที่ใส่ลงไป.tarเก็บแล้วซิป ทำไมต้องใช้กระบวนการสองขั้นตอน? การบีบอัดไม่บรรลุการจัดกลุ่มไฟล์หรือไม่? มีประโยชน์อื่น ๆ อีกไหมที่ฉันไม่ทราบ?


3
โดยปกติคุณจะรวมการบีบอัดและการจัดกลุ่มไฟล์เป็นคำสั่งเดียว tar -zcf file.tar.gz บางชื่อไฟล์
Juha Syrjälä

1
ไม่มีใครพูดถึงว่าการโอนไฟล์ 1000000 ไฟล์ที่มีขนาด 1 ไบต์นั้นแพงกว่าการโอนไฟล์ 1 ไฟล์ที่มีขนาด 1000000 ไบต์
Milo LaMar

คำตอบ:


137

bzipและgzipทำงานกับไฟล์เดียวไม่ใช่กลุ่มไฟล์ เก่าธรรมดาzip(และpkzip) ทำงานกับกลุ่มของไฟล์และมีแนวคิดของไฟล์เก็บถาวรในตัว

ปรัชญา * nix เป็นหนึ่งในเครื่องมือขนาดเล็กที่ทำงานเฉพาะได้เป็นอย่างดีและสามารถผูกมัดกันได้ นั่นเป็นเหตุผลว่าทำไมจึงมีเครื่องมือสองอย่างที่มีงานเฉพาะและได้รับการออกแบบมาให้เข้ากันได้ดี นอกจากนี้ยังหมายความว่าคุณสามารถใช้ tar ไปยังแฟ้มกลุ่มและจากนั้นคุณมีทางเลือกของเครื่องมือการบีบอัดที่ ( bzip, gzipฯลฯ )


2
ตอบเร็วกว่าและดีกว่านิดหน่อย - เดาว่าจะกลับไปทำงาน!
Harper Shelby

9
ฉันเอาชนะคุณไป 4 นาทีและนั่นคือความชั่วนิรันดร์ในเวลาที่ล้น :-)
Stewart Johnson

1
เป็นที่น่าสังเกตว่าทั้ง tar และ gzip มีประโยชน์ในตัวเองซึ่งเป็นสาเหตุที่ทำให้พวกมันแยกออกจากกัน ด้วยการใช้ไปป์อย่างชาญฉลาดครั้งหนึ่งฉันเคยย้ายโฟลเดอร์จากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งโดยการลากเส้นซิปและวางท่อบน SSH จากนั้นคลายซิปและไม่เกี่ยวข้องกับปลายทาง คำสั่งเดียวไม่มีไฟล์ชั่วคราว
rmeador

1
คุณยังสามารถพูดได้ว่าพวกเขายึดติดกับสิ่งที่ได้รับการพิสูจน์แล้วว่าใช้งานได้ดีแทนที่จะเปลี่ยนสิ่งต่างๆและทำลายความเข้ากันได้ .tar.gz สามารถทำได้ในขั้นตอนเดียวโดยไม่คำนึงถึงเครื่องมือและเทคนิคสมัยใหม่ที่เรียกว่า (กรุณาลงทะเบียน WinZip)
JeeBee

2
ฉันไม่สามารถเชื่อว่าไม่มีใครได้แก้ไขทั้งคำถามซ้ายหรือแสดงความคิดเห็นการกล่าวขวัญ (IMO) จุดทั้งหมดของการใช้tarข้อมูลที่เก็บ: สนับสนุนลินุกซ์ระบบแฟ้มได้รับอนุญาต จะเกิดอะไรขึ้นหากคุณดาวน์โหลดแพ็คเกจ Debian ตัวจัดการแพ็คเกจของคุณติดตั้ง แต่ไม่มีไฟล์ปฏิบัติการใดที่สามารถเรียกใช้งานได้ นั่นคือเหตุผลที่แท้จริงว่าทำไมทุกคนถึงใช้ tarballs ... ;)
JamesTheAwesomeDude

29

ความแตกต่างที่สำคัญคือในลักษณะของจดหมายเหตุสองประเภท

ไฟล์ TAR เป็นมากกว่าการต่อเนื้อหาไฟล์ที่มีส่วนหัวบางส่วนในขณะที่ gzip และ bzip2 เป็นตัวบีบอัดสตรีมที่ใน tarball ถูกนำไปใช้กับการเชื่อมต่อทั้งหมด

ไฟล์ ZIP คือการต่อไฟล์บีบอัดทีละไฟล์โดยมีส่วนหัวบางส่วน ที่จริงแล้วอัลกอริทึม DEFLATE ถูกใช้โดยทั้ง zip และ gzip และด้วยการปรับไบนารีที่เหมาะสมคุณสามารถรับน้ำหนักบรรทุกของสตรีม gzip และวางไว้ในไฟล์ zip ที่มีส่วนหัวและรายการพจนานุกรมที่เหมาะสม

ซึ่งหมายความว่าไฟล์เก็บถาวรทั้งสองประเภทมีการแลกเปลี่ยนที่แตกต่างกัน สำหรับไฟล์ขนาดเล็กจำนวนมาก TAR ตามด้วยสตรีมคอมเพรสเซอร์โดยปกติจะส่งผลให้อัตราส่วนการบีบอัดสูงกว่า ZIP เนื่องจากสตรีมคอมเพรสเซอร์จะมีข้อมูลมากขึ้นในการสร้างความถี่พจนานุกรมจากนั้นจึงสามารถบีบข้อมูลที่ซ้ำซ้อนออกไปได้มากขึ้น ในทางกลับกันข้อผิดพลาด (การสงวนความยาวไฟล์) ในไฟล์ ZIP จะทำให้ไฟล์เหล่านั้นเสียหายเฉพาะไฟล์ที่ข้อมูลบีบอัดได้รับผล โดยปกติแล้วเครื่องบีบอัดสตรีมไม่สามารถกู้คืนจากข้อผิดพลาดกลางสตรีมได้อย่างมีความหมาย ดังนั้นไฟล์ ZIP จึงมีความยืดหยุ่นต่อความเสียหายมากกว่าเนื่องจากส่วนหนึ่งของไฟล์เก็บถาวรจะยังคงสามารถเข้าถึงได้


ขอบคุณสำหรับความแตกต่างระหว่าง zip และ tar + gzip!
Luke

1
+1 สำหรับความแตกต่างระหว่าง "การบีบอัดไฟล์รวม" และ "การรวมไฟล์บีบอัด"
Jesse Chisholm

เหตุผลที่ทาร์ให้อัตราส่วนการบีบอัดที่ดีขึ้นและซิปมีความยืดหยุ่นมากขึ้นในทางกลับกันอธิบายได้จากข้อเท็จจริงที่ว่าน้ำมันดินเป็นชนิดของการบีบอัดที่มั่นคงในขณะที่ซิปไม่แข็ง
พูดไม่ออก

@ แบร์รี่สรุปแล้วใครชนะ? (สมมติว่าเราใช้ระบบปฏิบัติการสมัยใหม่)
Pacerier

@Pacerier ฉันไม่คิดว่าจะมีใครชนะ Zips นั้นดีกว่าสำหรับการเข้าถึงแบบสุ่มและสำหรับผู้ที่ใช้ Windows Tarballs มีความเข้ากันได้นอกกรอบสูงกว่าบน Linux และ Unix Tarballs มีการบีบอัดที่สูงขึ้นเล็กน้อย แต่คุณต้องคลายการบีบอัดข้อมูลทั้งหมดเพื่อเข้าถึงทุกสิ่ง ทั้งสองสนับสนุนอัลกอริธึมการบีบอัดโดยพลการ แต่สามารถผสมและจับคู่กับ tarball ได้ง่ายกว่า อาจดีกว่าขึ้นอยู่กับเป้าหมาย
Barry Kelly

26

เป็นเรื่องแปลกที่ไม่มีใครพูดถึง GNU เวอร์ชันใหม่ที่อนุญาตtarให้คุณบีบอัดขณะที่คุณรวมกลุ่ม:

tar -czf output.tar.gz directory1 ...

tar -cjf output.tar.bz2 directory2 ...

คุณยังสามารถใช้คอมเพรสเซอร์ที่คุณเลือกได้หากรองรับตัวเลือก ' -c' (ถึง stdout หรือจาก stdin) และ ' -d' (คลายการบีบอัด):

tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...

สิ่งนี้จะช่วยให้คุณระบุคอมเพรสเซอร์ทางเลือกอื่น ๆ

[ เพิ่ม : หากคุณกำลังแยกgzipหรือbzip2บีบอัดไฟล์ GNU tarจะตรวจจับสิ่งเหล่านี้โดยอัตโนมัติและเรียกใช้โปรแกรมที่เหมาะสม นั่นคือคุณสามารถใช้:

tar -xf output.tar.gz
tar -xf output.tgz        # A synonym for the .tar.gz extension
tar -xf output.tar.bz2

และสิ่งเหล่านี้จะได้รับการจัดการอย่างเหมาะสม หากคุณใช้คอมเพรสเซอร์ที่ไม่ได้มาตรฐานคุณจะต้องระบุว่าเมื่อคุณทำการสกัด]

เหตุผลในการแยกก็เช่นเดียวกับในคำตอบที่เลือกคือการแยกหน้าที่ เหนือสิ่งอื่นใดนั่นหมายความว่าผู้คนสามารถใช้cpioโปรแกรม '' เพื่อบรรจุไฟล์ (แทนtar) จากนั้นใช้คอมเพรสเซอร์ที่เลือก (กาลครั้งหนึ่งคอมเพรสเซอร์ที่ต้องการคือpackในภายหลังcompress(ซึ่งมีประสิทธิภาพมากกว่าpack) แล้วgzipซึ่งวิ่งแหวนรอบทั้งก่อนหน้าและมีการแข่งขันกันอย่างสิ้นเชิงกับzip(ซึ่งได้รับการแจ้งความกับ Unix แต่ไม่พื้นเมืองที่นั่น) และตอนนี้ซึ่งในประสบการณ์ของผมมักจะมีข้อได้เปรียบกว่าbzip2 10-20%gzip

[ เพิ่ม : มีคนสังเกตในคำตอบของพวกเขาว่าcpioมีการประชุมที่ตลก นั่นเป็นความจริง แต่จนกว่า GNU จะtarมีตัวเลือกที่เกี่ยวข้อง (' -T -') cpioเป็นคำสั่งที่ดีกว่าเมื่อคุณไม่ต้องการเก็บถาวรทุกสิ่งที่อยู่ภายใต้ไดเร็กทอรีที่กำหนด - คุณสามารถเลือกไฟล์ที่ถูกเก็บถาวรได้ ข้อเสียของการcpioคือการที่คุณไม่เพียง แต่สามารถเลือกไฟล์ - คุณมีให้เลือกพวกเขา ยังมีที่เดียวที่cpioให้คะแนน มันสามารถทำสำเนาในแหล่งกำเนิดจากลำดับชั้นของไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีหนึ่งโดยไม่ต้องจัดเก็บข้อมูลระดับกลาง:

cd /old/location; find . -depth -print | cpio -pvdumB /new/place

อนึ่งการเปิด-depthตัวเลือก '' findมีความสำคัญในบริบทนี้โดยจะคัดลอกเนื้อหาของไดเรกทอรีก่อนที่จะตั้งค่าสิทธิ์ในไดเรกทอรีนั้นเอง เมื่อฉันตรวจสอบคำสั่งก่อนที่จะป้อนส่วนเพิ่มเติมของคำตอบนี้ฉันคัดลอกไดเรกทอรีแบบอ่านอย่างเดียว (สิทธิ์ 555) เมื่อฉันไปลบสำเนาฉันต้องผ่อนคลายสิทธิ์ในไดเรกทอรีก่อนที่ ' rm -fr /new/place' จะเสร็จสิ้น หากไม่มี-depthตัวเลือกcpioคำสั่งจะล้มเหลว ฉันจำสิ่งนี้ได้อีกครั้งเมื่อฉันไปทำการล้างข้อมูล - สูตรที่ยกมานั้นเป็นไปโดยอัตโนมัติสำหรับฉัน (ส่วนใหญ่เกิดจากการทำซ้ำหลายครั้งในช่วงหลายปี) ]


รูปแบบ ZIP ที่ขยายออกสามารถรองรับตัวบีบอัดสตรีมปลั๊กอินได้มากพอ ๆ กับ TAR แต่หากไม่มีโปรโตคอล IPC ที่เหมาะสมก็น่าจะช้าลงเนื่องจากการดำเนินการของกระบวนการย่อยมากเกินไป
Barry Kelly

คำสั่ง goto ของฉัน: tar -xfvz tarpkg.tar.gz (แทนที่ z ด้วย aj สำหรับไฟล์บีบอัด bz2)
Bryan Rehbein

1
@Redbeard: tar ตรวจจับ gzip และ bzip2 โดยอัตโนมัติในการแยก - สำหรับการสร้างคุณต้องบอกว่าต้องทำอย่างไร แต่ฉันใช้ -xf (หรือ -xvf) และชื่อไฟล์ tar
Jonathan Leffler

15

สิ่งที่ตลกคือคุณจะได้รับพฤติกรรมที่ผู้สร้างtarและผู้สร้างไม่คาดgzipคิด ตัวอย่างเช่นคุณไม่เพียง แต่สามารถ gzip ไฟล์ tar เท่านั้นคุณยังสามารถ tar ไฟล์ gzipped เพื่อสร้าง a files.gz.tar(ในทางเทคนิคจะใกล้เคียงกับวิธีการpkzipทำงานมากขึ้น) หรือคุณสามารถใส่โปรแกรมอื่นลงในไปป์ไลน์ตัวอย่างเช่นการเข้ารหัสและคุณสามารถเลือกลำดับของ tarring, gzipping และการเข้ารหัสโดยพลการ ใครก็ตามที่เขียนโปรแกรมการเข้ารหัสไม่จำเป็นต้องมีความคิดแม้แต่น้อยว่าจะใช้โปรแกรมของเขาอย่างไรสิ่งที่เขาต้องทำคืออ่านจากอินพุตมาตรฐานและเขียนไปยังเอาต์พุตมาตรฐาน


เมื่อสร้างไฟล์อย่าลืมเข้ารหัสหลังจากบีบอัดไม่ใช่ก่อนหน้านี้เนื่องจากผลลัพธ์ของการเข้ารหัสมีลักษณะสุ่มและบีบอัดได้ยาก
Jonathan Leffler

8

ในโลก Unix แอพพลิเคชั่นส่วนใหญ่ได้รับการออกแบบมาเพื่อทำสิ่งเดียวและทำได้ดี ยูทิลิตี้ zip ที่ได้รับความนิยมมากที่สุดใน Unix, gzip และ bzip2 จะบีบอัดไฟล์เท่านั้น tar ทำการต่อไฟล์ การวางเอาต์พุตของ tar ลงในยูทิลิตี้การบีบอัดจะทำสิ่งที่จำเป็นโดยไม่ต้องเพิ่มความซับซ้อนมากเกินไปให้กับซอฟต์แวร์ทั้งสองชิ้น


7

อีกเหตุผลหนึ่งที่แพร่หลายมากคือ tar และ gzip อยู่บนฐานการติดตั้ง * NIX เกือบทั้งหมด ฉันเชื่อว่านี่อาจเป็นเหตุผลเดียวที่ใหญ่ที่สุด นอกจากนี้ยังเป็นสาเหตุที่ไฟล์ zip เป็นที่แพร่หลายอย่างมากใน Windows เนื่องจากมีการสนับสนุนในตัวโดยไม่คำนึงถึงกิจวัตรที่เหนือกว่าใน RAR หรือ 7z

GNU tar ยังช่วยให้คุณสร้าง / แตกไฟล์เหล่านี้จากคำสั่งเดียว (ขั้นตอนเดียว):

  • สร้างที่เก็บถาวร:
  • tar -cfvj destination.tar.bz2 *.files
  • tar -cfvz destination.tar.gz *.files

  • แตกไฟล์เก็บถาวร: (ส่วน -C เป็นทางเลือกซึ่งมีค่าเริ่มต้นเป็นไดเร็กทอรีปัจจุบัน)

  • tar -xfvj archive.tar.bz2 -C destination_path
  • tar -xfvz archive.tar.gz -C destination_path

นี่คือสิ่งที่ฉันยึดมั่นกับความทรงจำตลอดหลายปีที่ผ่านมาบน Linux และเมื่อเร็ว ๆ นี้บน Nexenta (OpenSolaris)


3
จริงๆแล้วมันเป็นอีกทางหนึ่ง: zip ถูกสร้างขึ้นใน Windows แล้วเนื่องจากเป็นที่แพร่หลายใน DOS และ Windows รุ่นแรก ๆ
Christian Lescuyer

ฉันชอบใช้ RAR บน Windows, tar.bz2 บน Linux
Osama Al-Maadeed

คุณอาจสังเกตว่าตัวเลือกแปลก ๆ (ไม่เข้ากันได้กับ getopt ()) ในการแยกวิเคราะห์และเส้นประเป็นทางเลือกเนื่องจาก tar กำหนดไว้ล่วงหน้าตามแบบแผนมาตรฐานของตัวเลือกคำสั่ง Unix
Jonathan Leffler

5

ฉันคิดว่าคุณกำลังมองหาบริบททางประวัติศาสตร์เพิ่มเติมเกี่ยวกับเรื่องนี้ zip เดิมมีไว้สำหรับไฟล์เดียว Tar ใช้เพื่อวางไฟล์หลายไฟล์ให้เป็นไฟล์เดียว ดังนั้น tarring และ zip จึงเป็นกระบวนการสองขั้นตอน ทำไมวันนี้ถึงยังคงโดดเด่นอยู่เสมอ

จากวิกิพีเดียสำหรับTar_ (file_format)

ในการคำนวณ tar (มาจากเทปเก็บถาวร) เป็นทั้งรูปแบบไฟล์ (ในรูปแบบของบิตสตรีมที่เก็บถาวร) และชื่อของโปรแกรมที่ใช้จัดการไฟล์ดังกล่าว รูปแบบเป็นมาตรฐานโดย POSIX.1-1988 และใหม่กว่า POSIX.1-2001 ในขั้นต้นได้รับการพัฒนาเป็นรูปแบบดิบซึ่งใช้สำหรับการสำรองข้อมูลเทปและอุปกรณ์การเข้าถึงตามลำดับอื่น ๆ เพื่อวัตถุประสงค์ในการสำรองข้อมูลปัจจุบันนิยมใช้เพื่อจัดเรียงคอลเล็กชันไฟล์ให้เป็นไฟล์ขนาดใหญ่กว่าไฟล์เดียวสำหรับการแจกจ่ายหรือเก็บถาวรในขณะที่รักษาข้อมูลระบบไฟล์เช่นผู้ใช้และกลุ่ม สิทธิ์วันที่และโครงสร้างไดเร็กทอรี


4

tar คือ UNIX เนื่องจาก UNIX เป็น tar

ในความคิดของฉันเหตุผลที่ยังคงใช้tarอยู่ในปัจจุบันก็คือมันเป็นหนึ่งในกรณี (อาจจะหายาก) ที่วิธีการของ UNIX ทำให้มันสมบูรณ์แบบตั้งแต่เริ่มต้น

เมื่อพิจารณาถึงขั้นตอนที่เกี่ยวข้องกับการสร้างที่เก็บถาวรฉันหวังว่าคุณจะยอมรับว่าวิธีการแยกงานที่แตกต่างกันเกิดขึ้นที่นี่เป็นปรัชญาของ UNIXที่ดีที่สุด:

  • หนึ่งเครื่องมือ ( tarที่จะให้มันชื่อที่นี่) ผู้เชี่ยวชาญในการปรับเปลี่ยนใด ๆการเลือกไฟล์ไดเรกทอรีและการเชื่อมโยงสัญลักษณ์รวมทุกข้อมูลที่เกี่ยวข้องเช่นเมตา timestamps เจ้าของและสิทธิ์เข้าสู่กระแสหนึ่งไบต์

  • และเพียงแค่อีกหนึ่งเครื่องมือที่ใช้แทนกันได้โดยพลการ ( gzip bz2 xzชื่อเพียงไม่กี่ตัวเลือก) ที่แปลงใด ๆสตรีมใส่ไบต์เข้าไปอีก (หวังว่า) กระแสออกขนาดเล็ก

การใช้และแนวทางดังกล่าวให้ประโยชน์ทั้งแก่ผู้ใช้และผู้พัฒนา:

  • ความสามารถในการขยาย อนุญาตให้จับคู่tarกับอัลกอริทึมการบีบอัดใด ๆที่มีอยู่แล้วหรืออัลกอริทึมการบีบอัดใด ๆ ที่ยังคงได้รับการพัฒนาโดยไม่ต้องเปลี่ยนแปลงอะไรในการทำงานภายในtarเลย

    ทันทีที่ทุกยี่ห้อใหม่ "ไฮเปอร์ซิป Utra" หรือโปรแกรมบีบอัด whater tarออกมาจากคุณอยู่แล้วพร้อมที่จะใช้กอดคนรับใช้ใหม่ของคุณด้วยพลังทั้งหมดของ

  • ความเสถียร tarถูกใช้งานอย่างหนักตั้งแต่ช่วงต้นทศวรรษที่ 80 และได้รับการทดสอบบนระบบปฏิบัติการและเครื่องจักรจำนวนมาก

    การป้องกันความจำเป็นในการสร้างวงล้อใหม่ในการใช้การจัดเก็บการเป็นเจ้าของสิทธิ์การประทับเวลาและสิ่งที่คล้ายกันซ้ำแล้วซ้ำอีกสำหรับเครื่องมือเก็บถาวรใหม่ทุกตัวไม่เพียงช่วยประหยัดเวลาในการพัฒนาจำนวนมาก (มิฉะนั้นใช้โดยไม่จำเป็น) แต่ยังรับประกันความน่าเชื่อถือเหมือนกันสำหรับทุกๆ โปรแกรมใหม่

  • ความสม่ำเสมออินเทอร์เฟซผู้ใช้ยังคงเหมือนเดิมตลอดเวลา

    ไม่จำเป็นต้องจำไว้ว่าการกู้คืนสิทธิ์โดยใช้เครื่องมือ A คุณต้องผ่านตัวเลือก--i-hope-you-rember-this-oneและใช้เครื่องมือ B ที่คุณต้องใช้--this-time-its-another-one ในขณะที่ใช้เครื่องมือ C นั่นคือ `--hope-you-didnt-try-with-tool-as-switch

    ในขณะที่ในการใช้เครื่องมือที่ดีที่คุณจะได้จริงๆ messed --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-nowขึ้นได้ถ้าคุณไม่ได้ใช้


3

น้ำมันดินเป็นที่นิยมส่วนใหญ่ด้วยเหตุผลทางประวัติศาสตร์ มีทางเลือกมากมายที่พร้อมใช้งาน บางคนมีความยาวเกือบเท่าน้ำมันดิน แต่ไม่สามารถเหนือกว่าน้ำมันดินในความนิยมได้ด้วยเหตุผลหลายประการ

  • cpio (ไวยากรณ์ของมนุษย์ต่างดาวในทางทฤษฎีมีความสอดคล้องกันมากขึ้น แต่ผู้คนชอบสิ่งที่พวกเขารู้ว่า tar มีชัย)
  • ar (เป็นที่นิยมเมื่อนานมาแล้วปัจจุบันใช้สำหรับบรรจุไฟล์ไลบรารี)
  • shar (การแยกเชลล์สคริปต์ด้วยตนเองมีปัญหาทุกประเภทเคยเป็นที่นิยมไม่น้อยไปกว่ากัน)
  • zip (เนื่องจากปัญหาการออกใบอนุญาตจึงไม่พร้อมใช้งานในหลาย ๆ หน่วยงาน)

ข้อได้เปรียบที่สำคัญ (และข้อเสีย) ของ tar คือไม่มีทั้งส่วนหัวของไฟล์หรือไดเร็กทอรีกลางของเนื้อหา หลายปีที่ผ่านมาจึงไม่เคยได้รับความเดือดร้อนจากข้อ จำกัด ด้านขนาดไฟล์ (จนถึงทศวรรษนี้ที่ขีด จำกัด 8 Gb ของไฟล์ในไฟล์เก็บถาวรกลายเป็นปัญหาแก้ไขเมื่อหลายปีก่อน)

ข้อเสียอย่างหนึ่งของ tar.gz (หรือ ar.Z สำหรับเรื่องนั้น) นั่นคือคุณต้องคลายการบีบอัดไฟล์เก็บถาวรทั้งหมดเพื่อแยกไฟล์เดียวและแสดงรายการเนื้อหาที่เก็บถาวรอย่าทำร้ายผู้คนมากพอที่จะทำให้พวกเขามีข้อบกพร่องจาก tar ในจำนวนที่มีนัยสำคัญ .


tar เวอร์ชันเก่าไม่มีข้อมูลส่วนหัว ใหม่ (เข้ากันได้กับ POSIX, USTAR) เวอร์ชัน tar (เช่น GNU tar) ทำ คำสั่ง 'file' เข้าใจสิ่งนี้
Jonathan Leffler

2

gzip และ bzip2 เป็นเพียงคอมเพรสเซอร์ไม่ใช่ซอฟต์แวร์ archiver ดังนั้นการรวมกัน คุณต้องใช้ซอฟต์แวร์ tar เพื่อรวมไฟล์ทั้งหมด

ZIP เองและ RAR เช่นกันเป็นการรวมกันของสองกระบวนการ


2

โดยปกติในโลก * nux บันเดิลของไฟล์จะถูกแจกจ่ายเป็น tarball จากนั้นเลือก gzipped Gzip เป็นโปรแกรมบีบอัดไฟล์แบบธรรมดาที่ไม่รวมไฟล์ที่ tar หรือ zip ไว้

ครั้งหนึ่ง zip ไม่ได้จัดการบางอย่างที่ระบบไฟล์ Unix tar และ unix ถือว่าเป็นเรื่องปกติเช่น symlinks ไฟล์เคสแบบผสม ฯลฯ ฉันไม่รู้ว่ามีการเปลี่ยนแปลงหรือไม่ แต่นั่นเป็นเหตุผลที่เราใช้ tar


1
* nux - Linux, Unux, Solarnux?
mackenir

1
@mackenir - อย่าลืม POSUX :-)
Paul Tomblin

1
@mackenir - หรือว่าควรจะเป็น POSNUX?
Paul Tomblin

1

Tar = จัดกลุ่มไฟล์ใน 1 ไฟล์

GZip = บีบอัดไฟล์

พวกเขาแยกกระบวนการออกเป็น 2 แค่นั้นแหละ

ในสภาพแวดล้อมของ Windows คุณอาจคุ้นเคยกับการใช้ WinZip หรือ WinRar ที่ทำ Zip มากขึ้น กระบวนการ Zip ของซอฟต์แวร์เหล่านี้จะจัดกลุ่มไฟล์และการบีบอัด แต่คุณไม่เห็นกระบวนการนั้น


3
ไม่ใช่คำอธิบายที่ดีที่สุดเนื่องจากไฟล์ "zip" ที่ OP ใช้ใน Windows รวมการจัดกลุ่มไว้แล้ว
Gareth

1

ด้วยเหตุผลเดียวกันว่าทำไมผู้ใช้ mac ถึงชอบดิสก์อิมเมจ: พวกเขาเป็นวิธีที่สะดวกมากในการเก็บถาวรสิ่งต่างๆแล้วส่งต่ออัปโหลด / ดาวน์โหลดหรือส่งอีเมลเป็นต้น

และใช้งานง่ายกว่าและพกพาสะดวกกว่าซิป IMHO


1

ในวัน Altos-XENIX ของฉัน (1982) เราเริ่มใช้ tar (ตัวเก็บเทป) เพื่อแยกไฟล์จาก 5 1/4 ฟลอปปี้หรือเทปสตรีมมิ่งและคัดลอกไปยังสื่อเหล่านี้ ฟังก์ชั่นนี้คล้ายกับคำสั่ง BACKUP.EXE และ RESTORE.EXE ใน DOS 5.0 และ 6.22 เป็นอาหารเสริมช่วยให้คุณสามารถขยายสื่อหลาย ๆ สื่อได้หากไม่สามารถใส่ได้เพียงรายการเดียว ข้อเสียเปรียบก็คือหากสื่อหลายสื่อมีปัญหาสิ่งทั้งหมดก็ไร้ค่า tar และ dd มาจาก UNIX SYstem III และยังคงเป็นยูทิลิตี้รีลีสมาตรฐานที่มีระบบปฏิบัติการคล้าย UNIX ซึ่งอาจเป็นเพราะเหตุผลด้านความเข้ากันได้แบบย้อนหลัง


0

Tar ไม่เพียง แต่เป็นรูปแบบไฟล์เท่านั้น แต่เป็นรูปแบบเทป เทปจัดเก็บข้อมูลทีละบิต การใช้งานพื้นที่จัดเก็บแต่ละครั้งเป็นแบบกำหนดเอง Tar เป็นวิธีการที่คุณสามารถนำข้อมูลออกจากดิสก์และจัดเก็บลงในเทปในลักษณะที่ผู้อื่นสามารถดึงข้อมูลได้โดยไม่ต้องใช้โปรแกรมที่คุณกำหนดเอง

ต่อมาโปรแกรมบีบอัดก็มาและ * nix ยังคงมีเพียงวิธีเดียวในการสร้างไฟล์เดียวที่มีหลายไฟล์

ฉันเชื่อว่ามันเป็นเพียงความเฉื่อยที่ยังคงดำเนินต่อไปกับเทรนด์ tar.gz Pkzip เริ่มต้นด้วยการบีบอัดและการจัดเก็บถาวรในคราวเดียว แต่ระบบ DOS มักไม่ได้ติดเทปไดรฟ์!

จากวิกิพีเดียสำหรับ Tar_ (file_format)

ในการคำนวณ tar (มาจากเทปเก็บถาวร) เป็นทั้งรูปแบบไฟล์ (ในรูปแบบของบิตสตรีมที่เก็บถาวร) และชื่อของโปรแกรมที่ใช้จัดการไฟล์ดังกล่าว รูปแบบเป็นมาตรฐานโดย POSIX.1-1988 และใหม่กว่า POSIX.1-2001 ในขั้นต้นได้รับการพัฒนาเป็นรูปแบบดิบซึ่งใช้สำหรับการสำรองข้อมูลเทปและอุปกรณ์การเข้าถึงตามลำดับอื่น ๆ เพื่อวัตถุประสงค์ในการสำรองข้อมูลปัจจุบันนิยมใช้เพื่อจัดเรียงคอลเล็กชันไฟล์ให้เป็นไฟล์ขนาดใหญ่กว่าไฟล์เดียวสำหรับการแจกจ่ายหรือเก็บถาวรในขณะที่รักษาข้อมูลระบบไฟล์เช่นผู้ใช้และกลุ่ม สิทธิ์วันที่และโครงสร้างไดเร็กทอรี


การพูด tar อย่างเคร่งครัดคือรูปแบบไฟล์ - ในเทปยูนิกซ์เป็นเพียงไฟล์อื่น
Martin Beckett

จริงๆแล้ว tar ไม่ใช่รูปแบบไฟล์ที่จะเริ่มต้นด้วย เทปไม่มีระบบไฟล์ดังนั้น tar จึงถูกสร้างขึ้นเป็นแพตช์สำหรับไม่มีระบบไฟล์
Kieveli

0

ในฐานะที่เป็นนักพัฒนาของ Windows เป็นที่เข้าใจว่าtarballsดูแปลก คำนี้tarย่อมาจาก Tape Archive ลองนึกถึงเครื่องบันทึกเทปแบบม้วนต่อม้วน

ในโปรแกรม Windows world โดยทั่วไปจะมีการติดตั้งsetup.exeหรือใช้install.exeงานวิซาร์ดรีทุกชนิดในรีจิสทรีสร้างไดเร็กทอรีและติดตั้งไฟล์.dll(ไดนามิกลิงก์ไลบรารี)

ในลินุกซ์อูบุนตูโดยเฉพาะอย่างยิ่งจากประสบการณ์ของตัวเองผู้จัดการแพคเกจดูแลการสมัครและติดตั้งมากที่สุดของเวลา ใน Ubuntu ผู้พัฒนาจะสร้างแพ็คเกจที่ลงท้ายด้วย.deb(Debian ซึ่ง Ubuntu ใช้) ไวยากรณ์พื้นฐานในการติดตั้ง.debคือ:

sudo apt install <package_name>

แม้ว่าสิ่งนี้จะค่อนข้างตรงไปตรงมาสำหรับผู้ใช้ แต่ก็เป็นงานที่ดีสำหรับนักพัฒนาในการสร้าง.debแพ็คเกจและเชื่อมโยง PPA

วิธีที่ง่ายกว่าสำหรับนักพัฒนาคือการสร้าง tarball จากนั้นภาระในการติดตั้งจะถูกแบ่งปันโดยผู้ใช้ปลายทาง พวกเขาต้อง:

  • ดาวน์โหลด tarball (มักจะลงท้ายด้วย.tar.gz)
  • ขยายซอร์สโค้ดไปยังไดเร็กทอรี
  • รวบรวมซอร์สโค้ด (ไม่เคยมีมาก่อนใน Windows for Profit world)
  • หวังว่าจะเขียนสิ่งที่พวกเขาทำไว้เผื่อว่าจะต้องทำซ้ำในอนาคตเพราะไม่มีaptฐานข้อมูล (คิดว่ารายการโปรแกรมที่ติดตั้ง Windows) ที่สามารถสำรองข้อมูลได้

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

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