ทำไมฉันถึงต้องไฟล์เดียว?


101

ที่ บริษัท ของฉันเราดาวน์โหลดสแน็ปช็อตฐานข้อมูลการพัฒนาในท้องถิ่นเป็นdb.dump.tar.gzไฟล์ การบีบอัดเหมาะสม แต่ tarball มีเพียงไฟล์เดียว ( db.dump)

มีจุดใดที่จะเก็บถาวรไฟล์เดียวหรือเป็น.tar.gzเพียงสำนวนที่พบบ่อย? ทำไมไม่เพียง.gz?


5
เป็นเพียงเรื่องของการประชุมในความคิดของฉัน เมื่อคนเห็นไฟล์ที่มีนามสกุล GZ tar -zxvfคิดค่าเริ่มต้นของพวกเขาคือการใช้ แต่สำหรับผู้ที่ดูชื่อไฟล์และดูว่ามันไม่มี.tgzส่วนขยายมันก็ดีที่ gzip ไฟล์ db dump เนื่องจากฉันไม่ทราบรายละเอียดของอัลกอริทึมการบีบอัดฉันไม่แน่ใจว่า tar จะทำการบีบอัดไฟล์ใด ๆ เช่น sparse db หรือไม่ แต่สำหรับไฟล์ข้อความธรรมดา gzip โดยตรงของไฟล์มีข้อได้เปรียบขนาดเล็กมากในการดึงอันดับแรกและ gzip ing ไฟล์
MelBurslan

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

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

@Phap tarไม่ใช่อัลกอริทึมการบีบอัด แต่เป็นรูปแบบการเก็บถาวร
gardenhead

1
@gardenhead ดีที่จะอธิบายว่าทำไมมันไม่ได้ผลดีมาก
Pharap

คำตอบ:


163

ข้อดีของการใช้งาน.tar.gzแทน.gzว่าจะเป็นแบบไหน

  • tarร้านค้า meta ข้อมูลเพิ่มเติม (สิทธิ์ UNIX ฯลฯ ) gzipกว่า
  • การตั้งค่าสามารถขยายได้ง่ายขึ้นเพื่อจัดเก็บไฟล์หลาย ๆ ไฟล์
  • ไฟล์. tar.gz เป็นเรื่องที่พบได้บ่อยมากไฟล์ที่ gzipped เท่านั้นอาจไขปริศนาผู้ใช้บางคน ( เปรียบเทียบความคิดเห็น MelBurslans )

ค่าใช้จ่ายในการใช้tarยังน้อยมาก

หากไม่จำเป็นจริงๆฉันยังไม่แนะนำให้ tar ไฟล์เดียว มีเครื่องมือที่มีประโยชน์มากมายที่สามารถเข้าถึงไฟล์เดียวบีบอัดโดยตรง (เช่นzcat, zgrepฯลฯ - ยังมีอยู่bzip2และxz)


35
ฉันไม่ได้พิจารณาด้านเมตาดาต้า จุดที่ดีมาก
Gardenhead

5
ถ้าผมเห็นสัญชาตญาณครั้งแรกของฉันคือการ.gz tar -zxf foo.gzการจดจำว่า gzip เป็นคำสั่งที่ใช้เวลาอีกไม่กี่วินาที
bgStack15

2
@ bgStack15 FWIW คุณไม่จำเป็นต้องใช้z(หรือ-สำหรับเรื่องนั้น) tars สมัยใหม่ส่วนใหญ่จะตรวจจับไฟล์โดยอัตโนมัติว่าจำเป็นต้องคลายการบีบอัด
drewbenn

2
โดยค่าเริ่มต้นgzipจะเก็บชื่อไฟล์ต้นฉบับและการประทับเวลา คุณสามารถใช้-Nตัวเลือกเมื่อทำการคลายการบีบอัดเพื่อคืนค่า
Ross Ridge

@RossRidge ขอบคุณฉันลบข้อความเกี่ยวกับชื่อไฟล์เดิมอีกครั้ง
jofel

63

คุณกำลังถามคำถามเพียงครึ่งเดียวเท่านั้น อีกคำถามคือ "ทำไมฉันจะบีบอัดไฟล์ tar ด้วย gzip" และคำตอบไม่เพียง แต่gzipทำให้ไฟล์เล็กลง (ในกรณีส่วนใหญ่):

tar:

  • ชื่อไฟล์ร้านค้าและข้อมูลเมตาอื่น ๆ: โหมด, ID เจ้าของ, ID กลุ่ม, ขนาดไฟล์, เวลาการแก้ไข
  • เก็บ checksum (สำหรับส่วนหัวเท่านั้น)

gzip:

  • สามารถเก็บชื่อไฟล์ดั้งเดิมได้ แต่นั่นเป็นตัวเลือก
  • มีการตรวจสอบ CRC-32 มากกว่าข้อมูลต้นฉบับ
  • มันบีบอัดไฟล์

มีเพียงtarคุณเท่านั้นที่ไม่สามารถมั่นใจได้ว่าข้อมูลของคุณไม่เสียหาย มีเพียงgzipคุณเท่านั้นที่ไม่สามารถกู้คืน ID ผู้ใช้ / กลุ่มเวลาแก้ไขและชื่อไฟล์เดิมได้

การรวมกันมีประสิทธิภาพมากขึ้นกว่า commmands บุคคล / รูปแบบให้เพราะพวกเขาเติมเต็มคุณสมบัติของกันและกัน


ขอบคุณสำหรับการชี้แจงว่า! เมื่อฉันอ่านtarหน้าวิกิพีเดียฉันเข้าใจผิดว่าคำอธิบายหมายถึงการตรวจสอบสำหรับไฟล์ทั้งหมด
Gardenhead

นี่ทำให้ฉันรู้สึกเหมือนคำตอบที่ถูกต้อง ฉันยังเพิ่มเหตุผลอีกสองสามข้อซึ่งคุณอาจต้องการแก้ไขหากคุณเห็นด้วย 1) ไม่มีค่าใช้จ่ายเพิ่มเติมให้กับผู้ดูแลระบบสำหรับ. tgz มากกว่า. tar หรือ. gz เพียงอย่างเดียว: พวกเขาทั้งหมดมีเพียงคำสั่งเดียว 2) ผู้ดูแลระบบสำรองคัดลอกย้ายตำแหน่งย้ายไฟล์จำนวนมากด้วยเหตุผลที่แตกต่างกันมากมาย การสำรองฐานข้อมูลเป็นเพียงหนึ่งในจำนวนนี้ พวกเขาสามารถใช้เวิร์กโฟลว์เครื่องมือและคำสั่งเดียวกันได้ไม่ว่าจะสำรองไฟล์หนึ่งไฟล์หรือหลายไฟล์ เหตุใดจึงเลือกใช้เคสพิเศษโดยใช้ไวยากรณ์ของคำสั่ง gzip สำหรับกรณีที่มีหนึ่งไฟล์
Dewi Morgan

30

มีข้อได้เปรียบใหญ่มากทีเดียวที่จะใช้ไฟล์ข้อความเท่านั้น gzipped คือ - เนื้อหาที่สามารถเข้าถึงได้โดยตรงกับเครื่องมือบรรทัดคำสั่งเช่นless, ,zgrepzcat


ประเด็นที่น่าสนใจ แต่คำถามเกี่ยวกับสแนปชอตของฐานข้อมูลไม่น่าจะเป็นไฟล์ข้อความและไม่ใช่แค่ gzipped เท่านั้น
underscore_d

9
@underscore_d ฐานข้อมูลทั้งหมดของฉัน (ส่วนใหญ่เป็น mysql และ pgsql) เป็นข้อความทิ้งส่วนหนึ่งเป็นเพราะการกู้ได้มากขึ้นหากมีบางสิ่งบางอย่างเกิดขึ้นกับการถ่ายโอนข้อมูลเสียหายบางส่วนและอีกส่วนหนึ่งเพราะฉันสามารถประมวลผลการกู้คืนด้วยเครื่องมือปกติ , awk, perl ฯลฯ ) ถ้าต้องการ ie มีความน่าเชื่อถือและมีประโยชน์มากกว่าการทิ้งแบบไบนารี การแลกเปลี่ยนคือการทิ้งข้อความมีแนวโน้มที่จะมีขนาดใหญ่ขึ้น (ผู้ที่สนใจพื้นที่ดิสก์มีราคาถูกและเรามีการบีบอัดที่ดี) และการคืนค่าจะช้าลงอย่างมีนัยสำคัญ (แต่ถ้าน้อยกว่านั้น
cas

1
อะไรคือข้อได้เปรียบของเครื่องมือเหล่านี้ในการบีบอัดเอาต์พุตของตัวบีบอัดลงในเครื่องมือธรรมดา
CodesInChaos

21

ฉันจะบอกว่ามันเป็นไปได้ที่ผู้คนจะไม่ตระหนักว่าพวกเขาสามารถใช้ gzip / bzip2 / xzโดยไม่ต้องใช้ tar อาจเป็นเพราะพวกเขามาจากพื้นหลังของDOS / Windows ซึ่งเป็นเรื่องปกติสำหรับการบีบอัดและการเก็บถาวรที่จะรวมอยู่ในรูปแบบเดียว ( ZIP , RARและอื่น ๆ )

ในขณะที่อาจมีข้อได้เปรียบเล็กน้อยในการใช้ tar ในบางสถานการณ์เนื่องจากการจัดเก็บข้อมูลเมตาหรือความสามารถในการเพิ่มไฟล์พิเศษ แต่ก็มีข้อเสีย ด้วยไฟล์ gzip / bzip2 / xz แบบธรรมดาคุณสามารถแตกไฟล์และบีบอัดข้อมูลที่คลายบีบอัดไปยังเครื่องมืออื่น ๆ (เช่นฐานข้อมูลของคุณ) โดยไม่ต้องเก็บข้อมูลที่แตกเป็นไฟล์ลงบนดิสก์ ด้วย tarball สิ่งนี้ยากกว่า


2
ด้วย tar ของ GNU, มันใช้แค่ -O สลับไปยังเอาต์พุตเป็น stdout, ดังนั้นฉันจะไม่พูดว่ามันยากกว่านี้มาก !
hyde

5
ย่อหน้าแรกน่าเชื่อถือเพียงพอสำหรับไฟล์ที่ใช้tgzส่วนขยาย อย่างไรก็ตามกรณีของ OP ใช้tar.gz- และหากผู้ใช้ ex-Win / DOS สมมุติฐานเหล่านี้เป็นอย่างที่ฉันเป็นสิ่งแรกที่พวกเขาพูดเมื่อดูไฟล์ดังกล่าวคือ: 'ทำไมมันถึงมี 2 ส่วนขยาย' จากนั้นพวกเขาจะ google และได้รับคำตอบอย่างรวดเร็วซึ่งอธิบายว่าการtarบีบอัดและมีความแตกต่าง ;-)
underscore_d

17

มีความแตกต่างที่สำคัญที่สามารถทำให้การใช้งานที่tarสำคัญภายใต้สถานการณ์บางอย่าง: นอกจาก "metadata" ที่ @jofel พูดถึงในคำตอบของเขาแล้วให้tar บันทึกชื่อไฟล์ในที่เก็บถาวร เมื่อคุณแยกมันคุณจะได้รับชื่อไฟล์ดั้งเดิมโดยไม่คำนึงถึงสิ่งที่เรียกว่าการเก็บถาวร

ในกรณีของคุณไฟล์เก็บถาวร tar และไฟล์นั้นมีชื่อที่เกี่ยวข้องdb.dump.tar.gzและdb.tarแต่สมมติว่าคุณเปลี่ยนชื่อไฟล์ tar เป็น20-Apr-16.dump.tgzหรืออะไรก็ตาม Untar นี้กับและคุณได้รับtar xvfz db.dumpสำหรับการเปรียบเทียบให้เปิดเครื่องรูด20-Apr-16.dump.gzและคุณได้รับ20-Apr-16.dumpแล้ว (แก้ไข: ตามที่ระบุไว้ในความคิดเห็น gzip ยังสร้างบันทึกชื่อไฟล์ แต่โดยปกติจะไม่ใช้เมื่อทำการขยายไฟล์) tarเก็บยังสามารถมีชื่อพา ธ ญาติที่ทำให้แตกไฟล์ในไดเรกทอรีย่อย

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


6
gzip ยังบันทึกชื่อไฟล์ดั้งเดิม
psusi

8
ได้. ชื่อเป็นทางเลือกในส่วนหัว gzip - แน่นอนว่าจะไม่มีอีกถ้าคุณบีบอัดเอาต์พุตสตรีมมิ่งของคำสั่ง - และเครื่องมือส่วนใหญ่จะไม่กู้คืนโดยค่าเริ่มต้น (ตัวอย่างเช่นคุณต้องใช้gzip --nameอย่างชัดเจนเมื่อแตกไฟล์) แต่ คุณไม่จำเป็นต้องใช้ tar เพื่อรับความคงทนของชื่อไฟล์
ไมล์

ขอบคุณที่ชี้ให้เห็นว่าฉันไม่ทราบ แต่ถึงกระนั้นก็ไม่ใช่พฤติกรรมเริ่มต้นจุดยืน: กระจายไฟล์ในรูปแบบ tar รักษาชื่อไฟล์เดิม (และอาจเป็นเส้นทางญาติ) โดยไม่มีการแทรกแซงของผู้รับ การกระจายไฟล์ซิป (g) ไม่
alexis

8

นอกเหนือจากคำตอบอื่น ๆ ทั้งหมดแล้วฉันเพิ่งพบสถานการณ์การเขียนสคริปต์ที่คาดว่าจะมีเพียงหนึ่งไฟล์ แต่พนักงานคนก่อนหน้าเขียนสคริปต์ด้วยความเป็นไปได้ของการสร้างมากกว่าหนึ่งไฟล์ ดังนั้นไฟล์จึง tarred และ bzipped จากนั้นจึงโอนและขยาย

เมื่อกระบวนการเพิ่มขึ้นจนถึงจุดที่สร้างไฟล์ 4.3 GB มันจะทำการพลิกและสร้างไฟล์. dump.001 เพิ่มเติมจากไฟล์. dump สคริปต์ทั้งหมดเพิ่งทำงานต่อไป

นั่นคือความเกียจคร้านดูแลระบบเชิงรุกที่กำหนดไว้!


2

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

ไม่ว่าจะเป็น tar'd หรือไม่ก็ตามเป็นวิธีปฏิบัติมาตรฐานในการบีบอัดไฟล์เพื่อให้การดาวน์โหลดเร็วขึ้น - และหลีกเลี่ยงพื้นที่ดิสก์ที่ไม่เพียงพอ


-1

น้ำมันดินมีประโยชน์อย่างยิ่งสำหรับไฟล์หลายไฟล์ที่ไม่ได้เขียนไปยังระบบไฟล์ที่เป็นทางการ แต่ก็เป็นเช่นนั้นมาตลอด หากมีเหตุผลบางอย่างเกิดขึ้นมีเพียงไฟล์เดียวเท่านั้นที่จะเขียนมันไม่มีผลที่แท้จริง ฉันสามารถ. tar.gz ของฉันโดยตรงไปยัง / dev / sdx โดยไม่คำนึงถึงพาร์ติชันหรือระบบไฟล์ มันอาจจะเป็นเทป

โดยทั่วไปแล้วจะทำเพราะสคริปต์หรือกระบวนการได้รับการคัดลอกมาจากรหัสมรดก แน่นอนว่าไม่จำเป็นต้อง tar หากมีเพียงไฟล์เดียว แต่มันมีพื้นที่สำหรับเพิ่มประสิทธิภาพให้กับหลาย ๆ ไฟล์ ......

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