เป็นไปได้ที่จะรวมไฟล์ zip และ tar.gz เป็นไดเรกทอรีในระบบไฟล์


14

ฉันสงสัยว่ามีวิธีการรวม (มันแตกต่างจากการติดตั้งฉันคิดว่า) ไฟล์บีบอัดเป็นไดเรกทอรีในระบบไฟล์หรือไม่

เช่นหนึ่งสามารถดาวน์โหลดcompressed-file.tar.gzไปยังฮาร์ดไดรฟ์ในตัวของเขาจากนั้นทำcd compressed-file.tar.gzและเรียกใช้สคริปต์จากภายในโฟลเดอร์ที่บีบอัดหรือทำcp some-file ..เพื่อแยกไฟล์ใดไฟล์หนึ่ง

ฉันรู้ว่าBtrfsรองรับการบีบอัด แต่ฉันไม่ต้องการเปลี่ยนระบบไฟล์ที่ฉันมี (ext3) เพื่อรองรับคุณสมบัตินี้

คำตอบ:


20

คุณสามารถใช้คำสั่งในการติดตั้งที่เก็บเช่นarchivemount.tar.gz

$ ls
files.tgz    mnt/

$ archivemount files.tgz mnt

$ ls mnt
file1    file2

[... Perform desired read/write operations on the archive via mnt/ ...]

$ umount mnt

[... Any changes are saved to the archive ...]

ดูหน้าคนarchivemountสำหรับข้อมูลเพิ่มเติม บ่อยครั้งที่มันไม่ได้ติดตั้งดังนั้นคุณอาจต้องติดตั้งแพคเกจ archivemountมันเรียกว่ายัง ใน Fedora 19 ตัวอย่างเช่น:

$ sudo yum install archivemount

อ้างอิง


8

คุณกำลังพูดถึงFUSEระบบไฟล์(ระบบไฟล์ใน userspace - Linus เรียกพวกเขาว่าของเล่น )หรือเคอร์เนลที่คอมไพล์ที่กำหนดเองหรือsquashfs. Squashไม่ตรงตามที่คุณอธิบาย - คุณไม่สามารถเมาท์ tarball ได้เช่น - ไม่ใช่กับเคอร์เนลที่รองรับ VFS อย่างไรก็ตาม - คุณสามารถใส่mksquashไฟล์หรือไดเร็กตอรี่จำนวนเท่าใดก็ได้และติดตั้งไฟล์เก็บถาวรที่เป็นผลลัพธ์แบบอ่านอย่างเดียว คุณมีทางเลือกของการxz, lzma, or gzบีบอัด Squashมีการใช้งานตลอดเวลา - หากคุณเคยใช้โอกาสที่จะได้รับภาพสดลินุกซ์จะดีมากsquashed.

ฉันจะบอกคุณหนึ่งเคล็ดลับที่ผมใช้กับsquashfs.ผมชอบที่จะสร้างbtrfsไฟล์ภาพและการใช้งานbtrfstune -S 1จะทำให้มันเป็นไดรฟ์seed จากนั้นฉันก็ใส่ภาพนั้นลงในที่squashfsเก็บถาวร จากนั้นฉันสามารถและจากภายในที่ภาพ mount -o loopimage.sfsmount -o loopbtrfs

btrfs seedปริมาณแรกจะติดเป็นread-only- ซึ่งเป็นที่คาดหวังการพิจารณาว่ามันอยู่ภายในsquashedห่วงติด แต่ถ้าฉันทำแล้ว:

GB_tmp_loop=$(
    fallocate -l $((1024*1024*1024)) /tmp/1GB_tmp.img &&
    losetup -f --show $_
)
btrfs device add "$GB_tmp_loop" "${btrfs_seed=/path/to/btrfs_image_mount}"
umount "$btrfs_seed"
mount -o compress-force=lzo,autodefrag,rw "$GB_tmp_loop" "$btrfs_seed"

ทันใดนั้นฉันการใช้ประโยชน์จากbtrfsของcopy-on-writeฟังก์ชั่นและการบีบอัดการเขียนโดยอัตโนมัติและ squashfs s การบีบอัดที่เหนือกว่าทั้งหมดในแรมและในเคอร์เนล


ขอบคุณ mikeserv นี่เป็นคำตอบที่ดีและฉันได้เรียนรู้มากมายจากมัน แต่ฉันยอมรับคำตอบอื่น ๆ เพราะนั่นคือสิ่งที่มากกว่า
ฮีเลียม

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