Sanal / sdcard / konumunun birçok konumu tarafından karışık


46

Bazı cihazlarda (Nexus 4 gibi) bir SD Kart için harici bir yuva yoktur. Bunun yerine, /sdcard/aynı şekilde ele alınan bir kök klasör var . Ama aynı dosyalara işaret eden başka yollar da buldum - devam eden bazı yönlendirmeler olmalı (bence Linux'ta sembolik bağlantılar denir ).

Tüm bu yollar aynı dosyaları içeriyor:

/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/

Hangi yol "gerçek" olan? Peki ya diğer yollar? Ne için kullanılıyorlar, neden varlar?

Yanıtlar:


38

Önerilen ders: Neden / sdcard / / sdcard / 0 / 'ya 4.2 ile dönüştü? .

Kısacası: Jelly Bean ile tanıtılan çok kullanıcılı işlevsellik ile ilgilidir:

  • /storage/emulated/0/: bildiğim kadarıyla, bu "öykünmüş MMC" ("sahiplik bölümü") anlamına gelir. Genellikle bu iç olandır. "0" burada kullanıcı anlamına gelir; "0" ilk kullanıcı aka cihaz sahibine aittir. Ek kullanıcılar oluşturursanız, bu numara her biri için artırılır.
  • /storage/emulated/legacy/önceden olduğu gibi, ancak şu anda çalışan kullanıcının bir kısmına işaret ederek (mal sahibi için bu bir bağlantı olacaktır /storage/emulated/0/). Bu yüzden bu yol her kullanıcıyı “kısmına” getirmelidir.
  • /sdcard/: Shywim'in bir yorumuna göre , bu bir ...
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0+)
  • /storage/sdcard0/: Burada legacykolye bulunmadığı için (aşağıdaki yorumlara bakınız), bu durumda "0", cihazın (kartın) kendisini tanımlar. Sonunda biri bir kart okuyucuyu OTG üzerinden başka bir SDCard ile bağlayabilir ve bu daha sonra olur /storage/sdcard1(bunun kanıtı yok, sadece bir tahmin - ama iyi bir tane söyleyebilirim)

Her ne kadar sonuca varmak mümkün olsa /storage/sdcard/legacyda, bir de olmalı , (yorumlara bakınız) - buradaki sayıları kullanıcı ile ilgili değil, daha çok muhtemel çoklu kartlarla ilgili olarak kabul ediyorum ile tamamen mantıklı geliyor: " 0 "her zaman cihazın kart yuvasında olanlar olacaktır, bu nedenle burada" eski bir sembolik bağlantı "gerekmez.


Teşekkürler! Ve hayır, /storage/sdcard/legacyyol yok .
Torben Gundtofte-Bruun,

2
Garip. Ancak, bunun gerçek bir sd kart üzerinde izinlerinin neredeyse hiç olmadığı gerçeğiyle ilgili olabilir (FAT dosya sistemi onları desteklemediği için). Fark (kaydeden /sdcard0/karşı /emulated/0), "0" Burada daha sonra bir kart okuyucu ve USB ana modu yoluyla durum için bir ataşeliğini birden SDCards amaçlanan olabilir. Sadece bir tahmin, zor bir gerçek değil - ama iyi bir tane söyleyebilirim.
Izzy

Cevap buna göre güncellendi :)
Izzy

2
/sdcard/sadece bir sembolik link için /storage/sdcard0/. 4.0.0'dan daha eski sürümlerde ise öyle /mnt/sdcard/.
Matthieu Harlé

Ve sanıyorum, Android 4.0+ 'da /mnt/sdcard/, bir bağlantı mı /storage/sdcard0/? Her ikisi de Nexus
4'ümde

2

Evet, biraz kafa karıştırıcı ama bunlar hafıza düzeni için alternatif yollar.

/ mnt / sdcard0 / (Dahili Sanal SD Kart)

ve eğer daha fazla cihaz bağlıysa doğru izlemelisin, ancak adlandırma, cihaza bağlı olarak farklı olabilir.

ex. / mnt / sdcard1 / (SD yuvasındaki fiziksel SD Kart)

ancak, bir USB flash sürücü gibi diğer cihazların bir adaptöre bağlanması

/ mnt / media_rw / usbdisk (android kitkat 4.4 ve üzeri?) veya / mnt / usbdisk (jellybean 4.1 - 4.2)


1
Evet, adlandırma cihaza / üreticiye / ROM'a bağlı olabilir. Ancak, genellikle, /mnt/*tüm bu durumlarda sadece bir sembolik bağdır - aşağıda "gerçek bağlar" da bulunur /storage:)
Izzy

Benim de mnt'nin altında bir kabuk klasörüm var . Aygıt ROM'unu sık sık değiştiriyorum ve bu nedenle, harici SD kartı varsayılan bellek olarak yapan bu romlar için, kabuk klasörü dahili belleğim gibi davranıyor ve sdcard'ı dahili bellek olarak değiştirmeyen diğer rom'lar için kabuk gelmiyor Resmin içine. Tüm veriler bozulmadan klasörde kalır, ancak yerel dosya yöneticisi tarafından erişilebilir değildir. Tam olarak ne olduğunu bilmek istedim.
Ali_Waris
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.