Zip ve tar.gz dosyalarını dizin olarak dosya sistemine entegre etmek mümkün mü


14

Sıkıştırılmış dosyaları dosya sistemine dizinler olarak entegre etmenin bir yolu var mı (montajdan biraz farklı, sanırım)?

Örneğin, compressed-file.tar.gzyerel sabit sürücüsüne bir dosya indirebilir , ardından cd compressed-file.tar.gzsıkıştırılmış klasörden bir komut dosyası yapabilir ve çalıştırabilir veya cp some-file ..dosyalardan birini ayıklayabilirsiniz.

Btrfs sıkıştırmayı desteklediğini biliyorum , ancak bu özelliği desteklemek için (ext3) sahip olduğum dosya sistemini değiştirmek istemiyorum.

Yanıtlar:


20

Gibi archivemountarşivleri bağlamak için bu komutu kullanabilirsiniz .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 ...]

Daha archivemountfazla bilgi için kılavuz sayfasına bakınız . Genellikle yüklenmez, bu nedenle paketi yüklemeniz gerekecektir. Buna da denir archivemount. Örneğin Fedora 19'da:

$ sudo yum install archivemount

Referanslar


8

Ya bir FUSEdosya sisteminden bahsediyorsunuz (kullanıcı alanındaki dosya sistemi - Linus onlara oyuncak diyor ) ya da özel bir derlenmiş çekirdek VEYA squashfs. Squashtam olarak tanımladığınız gibi değil - neyse, çekirdek destekli VFS ile değil, sadece bir tarball monte edemezsiniz - ama kesinlikle mksquashistediğiniz sayıda dosya ya da dizin oluşturabilir ve elde edilen arşivi salt okunur olarak bağlayabilirsiniz. xz, lzma, or gzSıkıştırma seçeneğiniz var . Squashher zaman kullanılır - eğer canlı bir linux görüntü şansı kullandıysanız çok iyiydisquashed.

Size birlikte kullandığım bir numara söyleyeceğim, squashfs.bir btrfsgörüntü dosyası oluşturmak ve btrfstune -S 1onu bir seedbirim yapmak için kullanmak istiyorum . Sonra bu görüntüyü bir squashfsarşive koydum . Orada elimden itibaren ve içinden görüntünün. mount -o loopimage.sfsmount -o loopbtrfs

btrfs seedHacim başlangıçta olduğu gibi monte edecek read-onlybir içinde bulunan var olduğunu göz önünde bulundurarak beklenebilir ki - squasheddöngü monte. Ama o zaman yaparsam:

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"

Aniden yararlanarak ediyorum btrfslar copy-on-writeişlevsellik ve otomatik yazma sıkıştırma VE squashfs tüm RAM üstün sıkıştırma s VE çekirdekteki.


teşekkür ederim mikeserv, bu güzel bir cevap ve ondan çok şey öğrendim, ama diğer yanıtı kabul ettim çünkü bu daha önemli.
Helyum

2
@Mohsen - Tamamen anlıyorum ve muhtemelen aynı şeyi yapardım - daha önemliydi. Bazen istediğimiz cevaplar aldığımız cevaplar değildir - ve bu muhtemelen iyi bir şeydir, çünkü biz en başta sormamız gereken cevaplarız. Her durumda, yorumu çok takdir ediyorum.
mikeserv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.