อะไรคือความแตกต่างระหว่าง bsdtar และ GNU tar?


46

ฉันใช้ GNU tarเสมอ อย่างไรก็ตามการแจกแจง GNU / Linux ทั้งหมดที่ฉันเห็นมาbsdtarในที่เก็บของมัน ฉันเคยเห็นมันติดตั้งโดยค่าเริ่มต้นในบาง IIRC ฉันรู้ว่า Arch GNU / Linux ต้องการมันเป็นส่วนหนึ่งของbasedevel(อาจbaseแต่ฉันไม่แน่ใจ) ตามที่ฉันเห็นใน PKGBUILD

ทำไมคุณต้องการที่จะใช้bsdtarแทน GNU tar? ข้อดีคืออะไร

โปรดทราบว่าฉันเป็นคนที่ถามอะไรคือความแตกต่างที่สำคัญระหว่าง BSD และ GNU / Linux userland? .


คำตอบ:


29

อูบุนตูbsdtarนั้นเป็นการนำ tar มาพร้อมกับlibarchive; bsdtarและที่ควรจะแตกต่างจากคลาสสิก ตัวแปร BSD บางตัวใช้libarchiveสำหรับการนำ tar ไปใช้เช่น FreeBSD

GNUtarรองรับตัวแปร tar อื่น ๆและตรวจจับการบีบอัดอัตโนมัติ

ในขณะที่การสร้างภาพข้อมูลเกิดขึ้นจากอูบุนตูมีบางสิ่งที่เฉพาะเจาะจงสำหรับlibarchive:

  1. libarchiveเป็นคำจำกัดความของไลบรารีและแตกต่างจากทั้งแบบดั้งเดิมbsdtarและGNUtarแบบนั้น
  2. libarchive ไม่สามารถอ่าน GNU tar รูปแบบที่ไม่ชัดเจนบางรุ่นได้ส่วนใหญ่มีการเข้ารหัสส่วนหัวบางส่วนใน base64 ดังนั้นไฟล์ tar จะเป็น ASCII แบบสะอาด 7 บิต (นี่คือกรณีของ 1.13.6-1.13.11 และเปลี่ยนแปลงใน 1.13.12 รหัสนั้นเป็นทางการใน tar เพียง 2 สัปดาห์)
  3. libarchive's bsdtarจะอ่านไฟล์ที่ไม่น้ำมันดิน (เช่น zip, ISO9660, cpio) แต่ bsdtar คลาสสิกจะไม่

ตอนนี้ที่เราเคยออกมาจากวิธีการที่มันเป็นส่วนใหญ่ลงมาถึงสิ่งที่ได้รับการสนับสนุนในคลาสสิกlibarchivebsdtar

คุณสามารถดู manpages ได้ที่นี่:

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

GNUtar, libarchive's bsdtar, คลาสสิกbsdtar, starและBusyBox' s tarอย่างแน่นอนการใช้งาน tar ว่าคุณจะใช้เป็นส่วนใหญ่ของเวลา แต่ผมมั่นใจมีคนอื่น ๆ ออกมี (QNX ต้นตัวอย่าง) libarchive/ GNUtar/ starเป็นคุณสมบัติที่บรรจุมากที่สุด แต่ในหลาย ๆ ด้านพวกเขาเบี่ยงเบนจากมาตรฐานเดิมมานาน (อาจจะดีกว่า)


15

BSDTAR vs TAR บวกอีกมากมาย

นี่คือข้อดีอย่างหนึ่ง !!

ฉันจะไปใน 5 หัวข้อที่นี่ (และไปที่หัวข้อ แต่มันจะครอบคลุมสิ่งที่คุณต้องการเช่นกัน):

  1. bsdtar กับ tar
  2. ไฟล์กระจัดกระจาย vs ไม่
  3. ไฟล์ / lun หนาและบางที่มี btrfs
  4. ไฟล์ / lun ที่หนาและบางโดยไม่มี btrfs
  5. แตกต่างกันระหว่างความหนาและความบาง

bsdtarจัดการกับไฟล์ที่กระจัดกระจายได้ดีกว่าtarทั่วไป

  • bsdtar จะนำค่าศูนย์ทั้งหมดและเพียงแค่เมทาดาทาขึ้นมา
  • tar จริง ๆ แล้วจะประมวลผลทุกศูนย์

* ตัวอย่าง: ลองนึกภาพไฟล์ sparse 20 tb (เรียกว่า biglun) ที่มีข้อมูล 10 megs ตลอด sparsefile 20 tb (biglun) ... ตอนนี้เนื่องจากไฟล์นี้เป็นไฟล์ sparse มันจะใช้เวลาเพียง 10 megs บนไดรฟ์

วิธีสร้างไฟล์แบบเบาบาง:

ไฟล์กระจัดกระจาย - วิธีที่จะทำให้มัน - ตรวจสอบมัน - ทุกอย่าง ไฟล์กระจัดกระจายเป็นเหมือน "ผอม" luns (ถ้าคุณใช้มันเพื่อเป็นลูน) “ หนา” เป็นเรื่องแตกต่าง

* กลับไปที่หัวข้อ:

  • การเลี้ยง biglun จะทำให้ tar ผ่านไปทั้งหมด 10 megs พร้อมกับ zeroes ที่แย่กว่า ~ 20tb ที่แผ่กระจายไปทั่ว lun ... มันต้องใช้เวลาพอสมควรที่ฉันเข้าใจและไฟล์ tar จะค่อนข้างใหญ่ อีกอย่าง - การแตกไฟล์ - ฉันไม่เคยแยกไฟล์ tar ของไฟล์ sparse แต่อาจไม่สวย ฉันอาจจะผิดที่นี่

  • bsd ที่แสดง biglun จะประมวลผลข้อมูลเพียง 10 megs และสร้าง metadata ขนาดเล็กสำหรับศูนย์ ~ 20tb

ประโยชน์? มีพวกเขามากมาย ฉันเพิ่งเขียนบางอย่างข้างต้น

มันคล้ายกับ rsync vs cp

  • นอกจากนี้หากคุณซิงค์ไฟล์ sparse ขนาดใหญ่มันจะทำงานเหมือน tar
  • หากคุณ cp ไฟล์ขนาดใหญ่มันจะทำงานโดยอัตโนมัติเช่น bsdtar (คุณสามารถเปลี่ยนพฤติกรรมของ cp เพื่อข้าม zeroes หรือไม่ไปที่ zeroes)

โดยส่วนตัวแล้วฉันชอบจินตนาการไฟล์ที่กระจัดกระจายเช่น thin luns และไฟล์ปกติเช่น luns หนา ...

หัวข้อถัดไปคือBTRFS thin เทียบกับ luns แบบหนา:

  • ด้วยระบบไฟล์เช่นBTRFS , บาง luns เป็นไฟล์กระจัดกระจาย (ทำให้มันมีการตัดทอนเช่นใน wiki doc)

     truncate -s <size in kilobytes> filename
    

    เคล็ดลับ:สำรองข้อมูลด้วยbsdtarคัดลอกด้วยcp

  • thick luns เป็นไฟล์ปกติที่มีแอ็ตทริบิวต์ + C (+ C เพื่อให้ไม่มี COW, คัดลอกเมื่อเขียน, เพื่อให้การเขียนทั้งหมดติดอยู่รอบ ๆ ตำแหน่งที่จัดสรรและไม่มีการเขียนใหม่เกิดขึ้นสำหรับไฟล์นั้นเมื่อมีการเขียนทับ หรือลบ - วิจัยCOWและBTRFS ) แทนที่จะสร้างไฟล์ด้วยการตัดให้เป็น "fallocate -l"

    fallocate -l <size in kilobytes> filename
    chattr +C filename
    

    เคล็ดลับ:สำรองข้อมูลด้วย bsdtar หรือ tar คัดลอกด้วย rsync หรือ cp

หัวข้อถัดไปคือ EXT thin vs Lunun หนา:

  • ผอมเพรียวซึ่งเป็นเบาบาง

    truncate -s <size in kilobytes> filename
    

    เคล็ดลับ:สำรองข้อมูลด้วยbsdtarคัดลอกด้วยcp

  • thick luns เป็นไฟล์ปกติที่มีแอ็ตทริบิวต์ + C (+ C เพื่อให้ไม่มี COW, คัดลอกเมื่อเขียน, เพื่อให้การเขียนทั้งหมดติดอยู่รอบ ๆ ตำแหน่งที่จัดสรรและไม่มีการเขียนใหม่เกิดขึ้นสำหรับไฟล์นั้นเมื่อมีการเขียนทับ หรือลบ - วิจัยCOWและBTRFS ) แทนที่จะสร้างไฟล์ด้วยการตัดให้เป็น "fallocate -l"

    touch filename
    fallocate -l <size in kilobytes> filename
    

    เคล็ดลับ:สำรองข้อมูลด้วย bsdtar หรือ tar คัดลอกด้วย rsync หรือ cp

ไฟล์หนากับ thin คืออะไร

  • thick luns / files เติมข้อมูลจาก 0 ถึงขนาดที่กำหนด metadata จะแสร้งทำเป็นว่า 0s อยู่ที่ไหน เมื่อคุณกรอกข้อมูลข้อมูลจะเต็ม
  • thick luns / files: เติมข้อมูลของพวกเขาตั้งแต่เริ่มต้นด้วย 0 หรืออะไรก็ตาม (ขี้เกียจเป็นศูนย์หรือกระตือรือร้นเป็นศูนย์) - การจองที่ตั้งไว้เหล่านี้ (หรือ ZFS ต้องการเรียก refreservations)

บทความ VMWARE ที่นี่อธิบายถึงความขี้เกียจเทียบกับศูนย์กระตือรือร้นกับ luns / files หนา: https://communities.vmware.com/message/2199576

ปลาย

โปรดจำไว้ว่าหนาและบางไม่ใช่แค่ใช้กับ luns เท่านั้น แต่ยังสามารถใช้กับระบบไฟล์ zfs (share / volume / luns) และฉันแน่ใจว่าสิ่งอื่น ๆ (ดูที่ zfs)


1
ดีและทั่วถึง ยินดีต้อนรับสู่เว็บไซต์ ...
eyoung100

1
- กระจัดกระจายกับ tar ใด ๆ : เพียงแค่ส่ง -S ไปยังการใช้งาน tar ส่วนใหญ่พวกเขาได้รับการสนับสนุนมาเป็นเวลานาน - เบาบางกับ rsync: อีกครั้งผ่าน - เบาบางก็ใช้งานได้ ข้อเสียของการใช้การตรวจจับแบบเบาบางคือเครื่องมือต้องอ่านบล็อคจริงมากขึ้นซึ่งสามารถแนะนำ CPU จำนวนมาก (โดยเฉพาะในกรณีของการสลับการทำงานแบบ zero / non-zero)
robbat2

มันยังดีกว่าที่จะใช้ bsdtar แม้ว่า gnu tar สนับสนุน sparse flag เนื่องจาก bsdtar รู้วิธีที่จะข้ามหลุม sparse โดยไม่ต้องประมวลผล (เช่นถ้าคุณมีไฟล์ sparse 1 TB ที่มีข้อมูลเพียง 1k เท่านั้น bsdtar จะประมวลผล 1k ของ ข้อมูล Gnu tar จะประมวลผล 1TB
moveaway00

13

จากคำอธิบายแพ็คเกจของ Ubuntu ( http://packages.ubuntu.com/de/lucid/bsdtar )

"โปรแกรม bsdtar มีข้อได้เปรียบกว่าการติดตั้ง tar ครั้งก่อน:

  • ห้องสมุด. เนื่องจากฟังก์ชันการทำงานหลักอยู่ในไลบรารีจึงสามารถใช้เครื่องมืออื่นเช่น pkg_add
  • ตรวจจับรูปแบบอัตโนมัติ Libarchive จะตรวจจับการบีบอัดโดยอัตโนมัติ (ไม่มี / gzip / bzip2) และรูปแบบ (tar เก่า, ustar, gnutar, pax, cpio, iso9660, zip) เมื่ออ่านไฟล์เก็บถาวร มันทำเช่นนี้กับแหล่งข้อมูลใด ๆ
  • การสนับสนุนรูปแบบ Pax Interchange นี่เป็นส่วนขยาย POSIX / SUSv3 สำหรับรูปแบบ tar "ustar" รูปแบบเก่าที่เพิ่มแอททริบิวต์เพิ่มเติมให้กับแต่ละรายการ ทำทุกอย่างที่ GNU รูปแบบ tar ทำได้ดีกว่าเท่านั้น
  • จัดการกับแฟล็กไฟล์, ACL, ชื่อพา ธ โดยพลการเป็นต้นรูปแบบการแลกเปลี่ยน Pax รองรับแอตทริบิวต์คีย์ / ค่าโดยใช้เทคนิคที่ขยายได้ง่าย ชื่อพา ธ แบบสุ่มชื่อกลุ่มชื่อผู้ใช้ขนาดไฟล์เป็นส่วนหนึ่งของมาตรฐาน POSIX; libarchive ขยายสิ่งนี้ด้วยการสนับสนุนแฟล็กไฟล์ ACL และหมายเลขอุปกรณ์โดยพลการ
  • การสนับสนุน GNU tar Libarchive อ่านไฟล์เก็บถาวร GNU tar ส่วนใหญ่ หากมีความต้องการสิ่งนี้สามารถปรับปรุงได้อีก "

1

ต่อไปนี้มาจากการอ่านไม่ใช่ประสบการณ์ - ฉันเพิ่งเริ่มใช้ Freebsd ดังนั้นฉันจึงแทบไม่มีประสบการณ์จริง (ฉันมาจาก Linux ส่วนใหญ่) ฉันขอโทษ (และขอการแก้ไขอย่างถ่อมใจ) หากฉันพลาดสิ่งสำคัญและสิ่งที่ฉันพูดที่นี่คือขยะ ...

จากการอ่านหน้าคู่มือของฉัน (ล่าสุดเป็นหน้าอ้างอิงที่http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 ) ที่ Freebsd tar ขาด (-d, --diff , - เปรียบเทียบ) ความสามารถ สิ่งนี้ไม่น่าแปลกใจนักเขียนของ Freebsd dump / restore ดูเหมือนจะไม่ได้ให้อะไรเช่นนี้

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

ในความเห็นของฉันเองสิ่งนี้ทำให้ Gnu tar เป็นตัวเลือกเดียวที่ฉันพบจนถึงตอนนี้สำหรับการสร้างการสำรองข้อมูลจริงในระบบ Freebsd ในสต็อก

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


1
  • bsdtar สามารถอ่านและ tar สมาชิกที่มาจากไฟล์เก็บถาวรอื่นโดยใช้@archiveไวยากรณ์

  • GNU tar มี--deleteตัวเลือก - แต่เมื่อเร็ว ๆ นี้ฉันพบว่ามันอาจทำให้ไฟล์เก็บถาวรเสียหาย

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