फ़ाइल सिस्टम में निर्देशिका के रूप में ज़िप और टारगेज फ़ाइलों को एकीकृत करना संभव है


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। उदाहरण के लिए फेडोरा 19 पर:

$ sudo yum install archivemount

संदर्भ


8

आप या तो एक FUSEफाइलसिस्टम के बारे में बात कर रहे हैं (यूजर्सस्पेस में फाइल सिस्टम - लाइनस उन्हें खिलौने कहता है ) या एक कस्टम संकलित कर्नेल या squashfs. Squashजैसा कि आप वर्णन करते हैं वैसा नहीं है - आप उदाहरण के लिए बस एक टारबॉल माउंट नहीं कर सकते हैं - कर्नेल समर्थित 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 रैम और इन-कर्नेल सभी में बेहतर संपीड़न ।


धन्यवाद mikeserv, यह एक अच्छा जवाब है और मैंने इससे बहुत कुछ सीखा है, लेकिन मैंने दूसरे जवाब को स्वीकार कर लिया क्योंकि यह एक बिंदु पर अधिक है।
हीलियम

2
@ मोहनसेन - मैं पूरी तरह से समझता हूं और मैंने शायद ऐसा ही किया होगा - यह बात और थी। कभी-कभी हम जो उत्तर पूछते हैं, वे हम नहीं होते हैं - और यह शायद एक अच्छी बात है, क्योंकि हम वही हैं जो पहली जगह में पूछने की आवश्यकता है। किसी भी मामले में, मैं टिप्पणी की बहुत सराहना करता हूं।
mikeserv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.