एक संकुचित डिस्क छवि कैसे माउंट करें?


12

अगर मैं एक डिस्क छवि बनाता हूं और इसे gzip / xz / etc से संपीड़ित करता हूं तो क्या इसे सीधे बिना पहले से सीधा किए माउंट करने का कोई तरीका है?

कहो मैंने उपयोग किया है

sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz

मैं पहली बार एक असम्पीडित प्रतिलिपि बनाए बिना मूल छवि को कैसे माउंट कर सकता हूं?

या मैंने उपयोग किया है

sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz

और डिस्क में कई विभाजन हैं, जो इसे और कठिन बना देगा?

एक पूरी डिस्क की असम्पीडित छवि के साथ फिर इसके झंडे kpartxके losetupसाथ नए संस्करणों का उपयोग करके -Pप्रत्येक विभाजन के लिए एक लूप बनाना चाहिए।

लेकिन क्या संकुचित छवि को माउंट / लॉसेटअप / पढ़ने का एक तरीका है?

अगर यह gzip / xz के लिए काम नहीं करेगा, तो क्या इसके लिए कोई संपीड़न विधि होगी?


डुप्लिकेट क्यू पर ध्यान दें

वर्तमान में डुप्लिकेट का सुझाव दिया

इसका उपयोग नहीं करता है , और एक डुप्लिकेट नहीं है

mount अपने आप संकुचित छवि को माउंट नहीं करेगा।


मैं आपको बता सकता हूं कि यह निश्चित रूप से संभव है। लेकिन मैं आपको यह नहीं बता सकता कि एटीएम कैसे है क्योंकि निर्देश 2 बाहरी एचडीडी पर हैं और अभी मेरे पास न तो पहुंच है, लेकिन मैं आपको बताना चाहता हूं कि यह काम करता है। मैं एक उत्तर के साथ वापस आऊंगा जब मेरे पास एक (और तब तक किसी और ने एक पोस्ट नहीं किया)।
UTF-8


1
@ UTF-8 यह उत्साहजनक है, धन्यवाद। FYI करें, मूल लक्ष्य एक ड्राइव / विभाजन का एक छोटा बैकअप बनाना है जो लगभग खाली है या बहुत आसानी से संकुचित होने योग्य डेटा है, और इसे निकालने के लिए बहुत सारे अतिरिक्त डेटा लिखने या मुफ्त स्थान की एक टन की आवश्यकता के बिना इसे पढ़ने में सक्षम है
Xen2050

यह भी देखें प्रमुख .io
पैंथर

2
@ bodhi.zazen क्षमा? शायद मुझे स्पष्ट करना चाहिए, माउंट स्वचालित रूप से छवियों को अनसुना नहीं करता है , इसलिए यह क्यू Askubuntu.com/questions/69363 का डुप्लिकेट नहीं है (हो सकता है कि मैं मजाक में चूक गया, उम्मीद है कि
असुविधाजनक

जवाबों:


10

आप squashfsडिस्क छवियों को संपीड़ित करने और फिर उन्हें माउंट करने के लिए उपयोग कर सकते हैं।

डिस्क छवि बनाएँ

यदि आपको डिस्क छवि नहीं मिली है तो अभी तक ddएक बनाने के लिए उपयोग करें:

dd if=/dev/sda1 of=/tmp/sda1.img bs=4M

स्क्वैश के साथ छवि को संपीड़ित करें

स्थापित करें squashfs:

apt-get install squashfs-tools

छवि को संपीड़ित करें:

mksquashfs /tmp/sda1.img /tmp/sda1.squash.img

या संपीड़न स्ट्रीम करें (एक अस्थायी dd फ़ाइल की आवश्यकता नहीं है)

mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'

करने के लिए तारीफ UbuntuForums.org पर terminator14 । परिभाषाएँ / स्पष्टीकरण:

  • empty-dir- "स्रोत" डीआईआर। मूल रूप से हमारे मामले में, mksquashfs के इनपुट arg प्रारूप को संतुष्ट करने के लिए सिर्फ एक खाली डायर है
  • squash.img - आउटपुट स्क्वैश की फ़ाइल का गंतव्य और फ़ाइल नाम
  • sda_backup.img - dd बैकअप का नाम स्क्वाशफ फाइल को INSIDE करें
  • f - निर्दिष्ट करता है कि sda_backup.img एक नियमित फ़ाइल है (निर्देशिका, ब्लॉक डिवाइस या चार डिवाइस के विपरीत)
  • 444 - स्क्वैश की छवि के अंदर sda_backup.img फ़ाइल की अनुमति
  • root root- स्क्वैश छवि के अंदर sda_backup.img फ़ाइल के लिए UID और GID। दशमलव संख्या या नाम से निर्दिष्ट किया जा सकता है
  • dd if=/dev/sda bs=4M - जिस dd कमांड को हम चाहते हैं उस डिवाइस को पढ़ने के लिए उपयोग किया जाता है

छवि माउंट करें

पहले squashfsचित्र को माउंट करें :

mkdir /mnt/squash
mount /tmp/sda1.squash.img /mnt/squash

यह आपके लिए माउंट करने के लिए संयुक्त राष्ट्र-संकुचित डिस्क छवि प्रस्तुत करेगा:

mkdir /mnt/sda1
mount /mnt/squash/sda1.img /mnt/sda1

या अगर यह एक पूर्ण ड्राइव छवि (विभाजित) है, तो आप losetupdd छवि को लूप डिवाइस (संभवतः वैकल्पिक) में संलग्न करने के लिए उपयोग कर सकते हैं और फिर विभाजनों को अलग करने के लिए विभाजनों को खोजने kpartx -aया partprobeअलग करने के लिए, या यहां तक ​​कि vgscan/ vgchange -ayअगर LVM है।


2
मैंने कुछ ऑन-द-फ़्लाई स्क्वैशफ़ॉफ़ जानकारी जोड़ी, ताकि एक अस्थायी सादे dd फ़ाइल की जरूरत न पड़े। स्क्वैश के साथ शानदार जवाब, बस अधिक पाइप-फ्रेंडली xz / gz फॉरमेट नहीं करता
Xen2050

क्या यह किसी तरह एक पूर्ण डिस्क छवि के साथ कई विभाजन के साथ भी काम करेगा?
फ्राइडेरब्लुमेले

पूर्ण डिस्क के लिए यहां देखें: unix.stackexchange.com/questions/31669/…
HackerBoss

फाइलसिस्टम प्रकार के आधार पर, बढ़ते को ro,noloadविकल्पों की आवश्यकता हो सकती है , जैसे:mount -o ro,noload /mnt/squash/sda1.img /mnt/sda1
हैकरबॉस

7

मैं एक .gz या .xz फ़ाइल के अन-कम्प्रेस्ड संस्करण को "सर्व" करने के लिए एक NBD सर्वर प्राप्त करने में सक्षम था। मुझे यकीन नहीं है कि यह पूरी तरह से संपीड़ित फ़ाइल को बहुत बार पढ़ना है (केवल राम में अब तक छोटी फ़ाइलों के साथ परीक्षण किया गया है), लेकिन कम से कम यह पूरी संयुक्त राष्ट्र-संकुचित प्रतिलिपि निकालने के बिना काम करता है।

एक gz / xz संपीड़ित dd छवि "ऑन-द-फ्लाई" देखना

  1. Nbdkit और ग्राहक स्थापित करें

    apt install nbdkit nbd-client
    
  2. डेमो "dd" स्टाइल फ़ाइल बनाएँ - एक खाली 50M फाइल जिसमें एक्सट्रीम फाइल सिस्टम है और इसे ज़िप करें (केवल परीक्षण के लिए वैकल्पिक)

    fallocate -l 50M 50m
    mkfs.ext3 -v 50m
    

    फिर या तो gzip या xz के साथ सेक करें

    gzip -vk9 50m
    xz -v9k 50m
    

    नोट: एक xzविकल्प --block-size=16MiBको बेहतर यादृच्छिक अभिगम प्रदर्शन देना चाहिए, लेकिन कम संपीड़न (शायद 1%?) की कीमत पर। देखें nbdkit के XZ प्लगइन विवरण

  3. COMPRESSED छवि पर सर्वर चलाएँ

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-gzip-plugin.so file=~/Downloads/50m.gz
    

    या xz के लिए

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-xz-plugin.so file=~/Downloads/50m.xz
    

    --no-forkसर्वर बताता है "भूमि में फॉर्क नहीं है" संभावित त्रुटि संदेशों को देखने और CTRL-C के साथ मारे गए तो थोड़ा आसान है।

    -v विशेष रूप से पढ़ते समय कई स्थिति संदेश दिखा सकते हैं।

  4. क्लाइंट चलाएं (दूसरे टर्मिनल / विंडो में)

    sudo nbd-client -nofork 127.0.0.1 10809 /dev/nbd0
    

    -noforkके समान है -no-forkऊपर है, लेकिन मैं कर सकता नहीं CTRL-C के साथ ग्राहक को मारने, kill <pid>या sudo kill <pid>। सर्वर को CTRL-C के साथ समाप्त करने से सर्वर और क्लाइंट दोनों बंद हो गए।

  5. निरीक्षण करें कि /dev/nbd0अब UN-COMPRESSED छवि के समान है

    $ sudo diff -s /dev/nbd0 ~/Downloads/50m
    Files /dev/nbd0 and /home/user/Downloads/50m are identical
    

    /dev/nbd0अब असम्पीडित छवि की तरह ही इस्तेमाल किया जा सकता है; घुड़सवार, पढ़ने / साथ नकल dd, या उपयोग kpartx, partprobe, vgscan/ vgchange, आदि!

यूनिक्स और लिनक्स पर क्रिस्टियन सियुपिटु के लिए धन्यवाद , हालांकि यह प्लगइन खोजने और सब कुछ एक साथ मिलने के लिए थोड़ी अधिक खुदाई हुई।


फेडोरा 31 nbdkit -v --no-fork -i 127.0.0.1 --filter=xz file ~/Downloads/50m.xzमें एक ही क्लाइंट कमांड के साथ महान काम किया
EkriirkE

Ubuntu xenial 16.04 LTS पर nbdkit 1.1.11 पुराने NBD प्रोटोकॉल का उपयोग किया जाता है, जो नए NBD प्रोटोकॉल से भिन्न होता है, जिसका उपयोग किया जाता है nbd-client 3.13, लेकिन आप 3.10 से पहले nbd-client 3.8 from Ubuntu precise 12.04 old LTS
nbd-

0

यहाँ यह करने का मेरा तरीका है, हालांकि इस के बराबर सांत्वना पता नहीं है,

  • फ़ोल्डर को एक आईएसओ में संपीड़ित करें। यहाँ छवि विवरण दर्ज करें
  • .isoफ़ाइल को माउंट करें Disk Image Mounterयहाँ छवि विवरण दर्ज करें
  • टाडा I इसे बिना खोल के संपीडित आइसो को खोलता है। यहाँ छवि विवरण दर्ज करें

4
क्या यह विधि वास्तव में डेटा को संपीड़ित करती है? ऐसा लगता है कि यह एक सादे iso9660 छवि (फ़ाइल-रोलर के माध्यम से?) का उपयोग करता है, जो संपीड़न का उपयोग नहीं करता है। मैंने इसे सभी शून्य ( dd if=/dev/zeroऔर फ़ाइल-रोलर) की 100 एमबी फ़ाइल पर आज़माया और यह वास्तव में 362k डेटा (इसो ओवरहेड मैं मान लेता हूं) को जोड़ता है। धन्यवाद, हालांकि, विचार सही रास्ते पर है
Xen2050 12

क्षमा करें, लेकिन मुझे संपीड़न तकनीकों पर कोई विचार नहीं है, लेकिन यदि आप किसी अन्य संपीड़न प्रारूप को आज़माते हैं, तो मुझे यकीन है कि आप इसे फ़ाइल-रोलर के साथ भी सूचीबद्ध कर सकते हैं, लेकिन यदि आप उस फ़ाइल को पढ़ना चाहते हैं, तो आपको केवल उस विशिष्ट फ़ाइल को निकालने की आवश्यकता है।
१३
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.