क्या ls
पहले बढ़ते बिना डिवाइस पर चलना संभव है ?
कुछ इस तरह:
# ls /dev/sda1
ls
।
क्या ls
पहले बढ़ते बिना डिवाइस पर चलना संभव है ?
कुछ इस तरह:
# ls /dev/sda1
ls
।
जवाबों:
आप e2fsprogs के debugfs
प्रोग्राम का उपयोग कर सकते हैं । अपने ऐतिहासिक नाम के बावजूद, यह ext2 / 3/4 फाइल सिस्टम पर काम करेगा। उपयोग सरल है:
# debugfs -R "ls -l" /dev/sda6
2 40755 (2) 1001 1001 4096 17-Sep-2013 04:03 .
2 40755 (2) 1001 1001 4096 17-Sep-2013 04:03 ..
16 100644 (1) 1001 1001 9085 17-Sep-2013 04:03 avserver.conf
17 100644 (1) 1001 1001 2177 17-Sep-2013 04:03 bash.bashrc
26 100644 (1) 1001 1001 722 17-Sep-2013 04:03 crontab
…
जहाँ "ls -l" एक debugfs
विशिष्ट कमांड है जो अधिकतर कार्य करता है ls -l
; आप वहां किसी भी मनमाने ढंग से शेल कमांड का उपयोग नहीं कर सकते। डिफ़ॉल्ट रूप से, डिबगफ़ ने रीड-ओनली मोड में एक ड्राइव खोली है, इसलिए यह अपेक्षाकृत सुरक्षित है; उदाहरण के लिए एक गैर ext2 / 3/4 विभाजन पर यह कोशिश करना एक निदान देता है:
# debugfs -R "ls -l" /dev/sda2
/dev/sda2: Bad magic number in super-block while opening filesystem
ls: Filesystem not open
मैं यह नहीं कह सकता कि मैं इस व्यावहारिक अभ्यास पर विचार कर सकता हूं, लेकिन यह वही करेगा जो आप पूछते हैं।
किसी फ़ाइल सिस्टम को माउंट करने का पूरा बिंदु इसकी फ़ाइलों तक पहुंचना है। तो नहीं, सामान्य तौर पर, आप किसी फाइल सिस्टम की फाइलों को बिना माउंट किए एक्सेस नहीं कर सकते।
कुछ उपयोगिताओं हैं जो बढ़ते हुए बिना सीधे फ़ाइल तक पहुंचते हैं , जैसे कि ext2 / ext3 / ext4 filesystems के लिए डिबगफ़ेट्स और FAT फाइल सिस्टम के लिए mtools ।
एक ext2 / ext3 / ext4 के लिए, खतरनाक और प्रोग्राम का उपयोग करने के लिए आमंत्रित करने के बजाय debugfs
, आप इसके अंतिम स्थान को सूचीबद्ध कर सकते हैं:
tune2fs -l /dev/sda1 | grep 'Last mounted'
हालांकि यह केवल तभी उपयोगी है जब अंतिम माउंट स्थान दर्ज किया गया हो।
अधिकांश फाइलसिस्टम प्रकार फाइल सिस्टम लेबल (जैसे tune2fs -L foo
) का समर्थन करते हैं । तो अपने सभी फाइलसिस्टम को एक अनूठा लेबल दें। तब लेबल द्वारा फाइल सिस्टम को माउंट करें:
mount /dev/disks/by-label/foo /media/foo
या
mount LABEL=foo /media/foo
सरल उत्तर: आप नहीं कर सकते। ls
मानक लिबास रूटीन का उपयोग करता है जो फ़ाइल सिस्टम ड्राइवर द्वारा दी जाने वाली सिस्टम कॉल में अनुवाद करता है, इसलिए ls
फ़ाइल सिस्टम को माउंट किए बिना (या उस मामले के लिए उन सिस्टम कॉल का उपयोग करके कुछ भी) का उपयोग करना संभव नहीं है ।
आप एक उपयोगिता लिख सकते हैं जो फाइल सिस्टम ड्राइवर के कुछ हिस्सों की अपनी प्रति होने से इसे रोक देगा (ऐसी बात मौजूद है जैसे कि विंडोज से एक्सट्रीम 2 फाइल सिस्टम पढ़ने के लिए), लेकिन यह काफी अव्यवहारिक है।
यदि आपकी समस्या बस विभाजनों की पहचान कर रही है, तो आपको संभवतः GPT का उपयोग करना शुरू करना चाहिए जिसमें विभाजन नाम (विभाजन प्रति 72 बाइट्स) के लिए स्थान है। कुछ अतिव्यापी समाधान (उदाहरण के लिए लिनक्स एमडी या एलवीएम) नामकरण की भी अनुमति देते हैं।
जैसा कि पहले बताया गया है, डीबगफ़ अच्छी तरह से काम करता है।
debugfs -R "ls -l" /dev/sda1
NTFS के लिए, ntfs-3G से ntfsls है।
ntfsls /dev/sda2
FAT के लिए, mtools से mdir है।
mdir -i /dev/sdc1
एक्सफ़ैट के लिए मुझे हालांकि यकीन नहीं है। लगता है कि एक्सफ़ैट-बर्तनों में ऊपर वर्णित लोगों के समान कोई उपकरण शामिल नहीं है। हालांकि डंपएक्सफ़ैट है, लेकिन मुझे नहीं लगता कि यह मांगी गई जानकारी प्रदान करेगा।
संलग्न ड्राइव के बारे में अधिक जानकारी प्राप्त करने के लिए, lsblk है।
lsblk
व्यक्तिगत रूप से मैं इसे पसंद करता हूं, और इसके लिए एक उपनाम निर्धारित किया है:
alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"