Apakah itu mungkin untuk mengintegrasikan file zip dan tar.gz sebagai direktori ke dalam sistem file

14

Saya bertanya-tanya apakah ada cara untuk mengintegrasikan (agak berbeda dari pemasangan, saya pikir) file terkompresi sebagai direktori ke dalam sistem file?

Misalnya, seseorang dapat mengunduh a compressed-file.tar.gzke hard drive lokalnya, lalu lakukan cd compressed-file.tar.gzdan jalankan skrip dari dalam folder yang dikompresi atau lakukan cp some-file ..untuk mengekstrak salah satu file.

Saya tahu bahwa Btrfs mendukung kompresi, tetapi saya tidak ingin mengubah sistem file yang saya miliki (ext3) untuk mendukung fitur ini.

Helium
sumber

Jawaban:

20

Anda dapat menggunakan perintah archivemountuntuk memasang arsip seperti .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 ...]

Lihat halaman manual archivemountuntuk informasi lebih lanjut. Ini sering kali tidak diinstal sehingga Anda mungkin perlu menginstal paket. Itu juga disebut archivemount. Pada Fedora 19, misalnya:

$ sudo yum install archivemount

Referensi

slm
sumber
8

Anda berbicara tentang FUSEsistem file (filesystem di userspace - Linus menyebutnya mainan ) atau kernel yang dikompilasi secara khusus ATAU squashfs. Squashtidak persis seperti yang Anda jelaskan - Anda tidak bisa memasang tarball misalnya - tidak dengan VFS yang didukung kernel, toh - tetapi Anda tentu dapat mksquashsejumlah file atau direktori dan me-mount arsip yang dihasilkan hanya-baca. Anda memiliki pilihan xz, lzma, or gzkompresi. Squashdigunakan sepanjang waktu - jika Anda pernah menggunakan gambar linux langsung peluangnya sangat bagussquashed.

Saya akan memberi tahu Anda satu trik yang saya gunakan dengan squashfs.saya suka membuat btrfsfile gambar dan gunakan btrfstune -S 1untuk membuatnya menjadi seedvolume . Saya kemudian memasukkan gambar itu ke dalam squashfsarsip. Dari sana saya dapat mount -o loopyang image.sfsdan dari dalam yang mount -o loopyang btrfsgambar.

The btrfs seedVolume awalnya akan me-mount sebagai read-only- yang diharapkan mengingat bahwa itu yang terkandung dalam squashedlingkaran gunung. Tetapi jika saya melakukannya:

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"

Tiba-tiba aku mengambil keuntungan dari btrfss copy-on-writefungsi dan kompresi tulis otomatis DAN squashfs s kompresi superior semua dalam RAM DAN in-kernel.

mikeserv
sumber
terima kasih mikeserv, ini adalah jawaban yang bagus dan saya belajar banyak dari itu, tetapi saya menerima jawaban yang lain karena yang satu lebih penting.
Helium
2
@Mohsen - Saya benar-benar mengerti dan saya mungkin akan melakukan hal yang sama - itu lebih tepatnya. Kadang-kadang jawaban yang kita minta bukan yang kita dapatkan - dan itu mungkin hal yang baik, karena kita yang pertama-tama harus bertanya. Bagaimanapun, saya sangat menghargai komentar itu.
mikeserv