วิธีแปลงไฟล์ TAR เป็นไฟล์ ISO


9

ฉันมีไฟล์ Linux TAR ที่ฉันต้องการแปลงเป็น ISO โดยตรง มีวิธีการทำเช่นนี้โดยเฉพาะอย่างยิ่งโดยไม่ต้องแยกเนื้อหาของไฟล์ก่อนหรือไม่

นี้จะคล้ายกับคำถามต่อไปนี้ ; อย่างไรก็ตามสิ่งนี้จะเน้นที่ไฟล์ tar ธรรมดาหรือแบบตรงและไม่เกี่ยวข้องกับ bzip หรือ tar bzipped

นี่เป็นสิ่งที่ฉันตั้งใจจะใช้ภายในสคริปต์และเหตุผลที่ฉันไม่ต้องการแยกมันออกมาก่อน


ในทางทฤษฎีมันสามารถทำได้โดยไม่ต้องแตกไฟล์แต่ละไฟล์ลงในดิสก์ (ต้องแยกไฟล์จากไฟล์เก็บถาวรเพื่อใส่ลงในภาพใหม่) แต่ฉันไม่รู้ว่ามันทำอะไร
Ignacio Vazquez-Abrams

ทำไมคุณต้องการทำเช่นนี้โดยไม่แตก tar?
นิลส์

ฉันสงสัยว่ามีวิธีการไพพ์ไปยังสิ่งที่ต้องการ stdin หรือไม่และไปป์ไปที่ไฟล์ iso หรือไม่?
จอห์น

ฉันไม่แน่ใจว่าสิ่งนี้จะได้ผลหรือไม่เนื่องจากฉันไม่ได้ 100% แน่นอนว่าคำสั่งนั้นกำลังทำอะไรอยู่ - tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
John

ตัวเลือก -stream-media-size ทำขึ้นเพื่อสิ่งนี้จริง ๆ ! :-) ดูหน้าคน genisoimageสำหรับข้อมูล - ขณะนี้มันกล่าวถึง tar ในเอกสารสำหรับตัวเลือกนี้ (และใช้มันในตัวอย่างสำหรับมัน)
Abbafei

คำตอบ:


6

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

mountavfs
cd ~/.avfs/path/to/archive.tar\#
genisoimage -o /path/to/iso .

@ Gilles - ขอบคุณสำหรับความคิด ดูเหมือนว่ามันอาจเป็นความคิดที่ยอดเยี่ยม อย่างไรก็ตามฉันใช้ CentOS 6 และพบปัญหาในการพยายามติดตั้ง AVFS
จอห์น

1

หากวัตถุประสงค์หลักของคุณคือการเร่งกระบวนการและเพื่อหลีกเลี่ยงการทำงานของดิสก์ที่ไม่จำเป็นสำหรับเหตุผลประสิทธิภาพและคุณมีความอุดมสมบูรณ์ของ RAM ญาติอะไหล่ขนาดของ tarball ของคุณคุณสามารถดึง .tar ลงใน RAM ใช้tmpfs ตัวเลือกนี้น่าจะเป็นวิธีที่เร็วที่สุดยกเว้นว่าคุณสามารถใช้วิธีไพพ์ของ @ bulleric ในการทำงานและคุณกำลังอ่านจากดิสก์หนึ่งแผ่นและเขียนไปยังอีกแผ่นหนึ่ง


0
archivemount /file.tar /media/ISO

หรือไม่บีบอัด. tarและ

genisoimage -o myfile.iso directory_src

( สามารถเป็นโฟลเดอร์ /media/ISO หรือจุดยึด /media/cdrom )


-2

คุณต้องแยกมัน แต่คุณไม่ต้องดึงมันลงในฮาร์ดไดรฟ์ของคุณคุณสามารถใช้ stdtout และไปป์กับ genisoimage หรือ mkisofs

tar --to-stdout xf tareddata.tar | genisoimage -o image.iso tareddata

ทดสอบมัน: mount -o loop image.iso /mnt

คุณสามารถเขียนสคริปต์ขนาดเล็กเพื่อทำให้ปัญหานี้เป็นไปโดยอัตโนมัติ

Greez Bull


แล้วมันจะบอกไฟล์หนึ่งไฟล์จากไฟล์ถัดไปได้อย่างไร?
Ignacio Vazquez-Abrams

เมื่อฉันรันสิ่งนี้ฉันจะได้รับข้อผิดพลาดชุดแรกคือ: tar: คุณต้องระบุหนึ่งใน-Acdtrux' or ตัวเลือก --test-label ' ข้อผิดพลาดถัดไปคือ: I: -input-charset ไม่ได้ระบุโดยใช้ utf-8 (ตรวจพบในการตั้งค่าโลแคล) ข้อผิดพลาดล่าสุดคือ: genisoimage: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว โหนดไม่ถูกต้อง - 'tareddata'
จอห์น

ปัญหาแรกที่ฉัน solvet ฉันมีตัวเลือกที่ผิดใน tar; หนึ่งในสอง hmm ในความคิดของฉันไดเรกทอรีแรกได้รับการแยกชื่อเดียวกันกับไดเรกทอรีที่ไม่สกัดเช่น tardata.tar tardata
bulleric

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