Cihaz monte edilmeden cihazda


9

lsBir cihazı ilk önce monte etmeden çalıştırmak mümkün müdür ?
Bunun gibi bir şey:

# ls /dev/sda1

Hangi amaçla?
dawud

Ben öyle düşünmüyorum. Ayrıca kesinlikle bir araca ihtiyacınız olacak ls.
13'te strugee

Hayır. Neyi başarmaya çalıştığınızı neden bize söylemiyorsunuz?
jasonwryan

1
o zamanlar için bazı cihaz monte etmek istiyorum ama onun sda1 / 2/3/4/5/6 vb olup olmadığını hatırlamıyorum. arıyor
lampoon

Bu arada: bir diskin (bölüm değil) görüntünüz varsa, komutu komut satırında ilk parametre olarak bir görüntü dosyası yolu ile testdiskçalıştırarak dosyalarını görebilirsiniz testdisk.
Abbafei

Yanıtlar:


11

E2fsprogsdebugfs programını kullanabilirsiniz . Tarihsel adına rağmen ext2 / 3/4 dosya sistemleri üzerinde çalışacaktır. Kullanımı basit:

# 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
 …   

burada "ls -l" debugfsçoğunlukla gibi davranan özel bir komuttur ls -l; orada rastgele bir kabuk komutu kullanamazsınız. Varsayılan olarak, debugfs bir sürücüyü salt okunur modda açar, böylece bu nispeten güvenlidir; örneğin bunu ext2 / 3/4 olmayan bir bölümde denemek yalnızca bir tanılama sağlar:

# debugfs -R "ls -l" /dev/sda2
/dev/sda2: Bad magic number in super-block while opening filesystem
ls: Filesystem not open

Bu tavsiye edilen uygulamayı düşündüğümü söyleyemem, ama istediğini yapacak.


3

Bir dosya sistemini kurmanın asıl amacı dosyalarına erişmektir. Bu nedenle, hayır, genel olarak, bir dosya sisteminin dosyalarına bağlamadan erişemezsiniz.

Ext2 / ext3 / ext4 dosya sistemleri için debugfs ve FAT dosya sistemleri için mtools gibi bir dosyaya doğrudan bağlanmadan erişen birkaç yardımcı program vardır .

Bir ext2 / ext3 / ext4 için, tehlikeli ve kullanımı zor programı çağırmak yerine debugfs, son bağlama konumunu listeleyebilirsiniz:

tune2fs -l /dev/sda1 | grep 'Last mounted'

Ancak bu yalnızca son bağlama yeri kaydedilmişse yararlıdır.

Çoğu dosya sistemi türü, dosya sistemi etiketlerinin verilmesini destekler (örn. tune2fs -L foo). Böylece tüm dosya sistemlerinize benzersiz bir etiket verin. Ardından dosya sistemini etikete göre bağlayın:

mount /dev/disks/by-label/foo /media/foo

veya

mount LABEL=foo /media/foo

2

Basit cevap: yapamazsınız. lsdosya sistemi sürücüsü tarafından sunulan sistem çağrılarına dönüşen standart libc yordamlarını kullanır, bu nedenle lsdosya sistemini monte etmeden kullanmak (veya bu sistem çağrılarını kullanan herhangi bir şey) kullanmak mümkün değildir .

Dosya sistemi sürücüsünün bazı bölümlerinin kendi kopyasına sahip olarak bu sorunu ortadan kaldıracak bir yardımcı program yazabilirsiniz (böyle bir şey, örneğin Windows'tan Ext2 dosya sistemlerini okumak için vardır), ancak bu oldukça pratik değildir.

Sorununuz sadece bölümleri tanımlıyorsa, büyük olasılıkla bölüm adları için alan (bölüm başına 72 bayt) olan GPT'yi kullanmaya başlamalısınız . Bazı temel çözümler (örneğin Linux MD veya LVM) adlandırmaya da izin verir.


1

Daha önce açıklandığı gibi, debugfs iyi çalışıyor.

debugfs -R "ls -l" /dev/sda1

NTFS için, ntfs-3g'den ntfsls var.

ntfsls /dev/sda2

FAT için mtools'tan mdir var.

mdir -i /dev/sdc1

ExFAT için emin değilim. Exfat-utils, yukarıda açıklananlara benzer herhangi bir araç içermiyor gibi görünüyor. Yine de dumpexfat var, ama istenen bilgileri sağlayacağını sanmıyorum.

Bağlı sürücüler hakkında daha fazla bilgi edinmek için lsblk var.

lsblk

Şahsen ben bunu tercih ediyorum ve bunun için bir takma ad belirledim:

alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"
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.