Gdzie w systemie plików znajdują się zamontowane urządzenia MTP?

206

Mam telefon z Androidem, który łączy się z moim komputerem przez MTP. To działa dobrze; Widzę i przesyłam pliki za pomocą Nautilus. Jednak często chcę używać terminala do przenoszenia dużej liczby plików i nie mogę znaleźć urządzenia w dowolnym miejscu w drzewie systemu plików. Nautilus zgłasza lokalizację jako mtp://[usb:003,007]/, ale nie znajduje się pod /medialub /mnt.

Czy ktoś wie gdzie to jest?

bessman
źródło

Odpowiedzi:

153

Jak już się dowiedziałeś , punkty montowania znajdują się w /run/user/$USER/gvfs/(lub /var/run/user/$UID/gvfs) i są nazwane na podstawie protokołu, typu połączenia i adresu, którego używają. Co sprawia, że ​​jest trudniej, ponieważ adres połączenia może się zmieniać za każdym razem, gdy ponownie uruchamiasz urządzenie, nawet jeśli jest to ten sam port. Jeśli masz to samo urządzenie dwa razy, staje się jeszcze gorzej.

Możesz użyć lsusbdo wyświetlenia wszystkich podłączonych urządzeń USB z terminala:

$ lsusb | grep Google                       # Note: This is a Nexus 4
Bus 002 Device 025: ID 18d1:4ee2 Google Inc.

Jak zauważyłeś, Nautilus podaje również te informacje za pomocą podpowiedzi. Znajdziesz zakodowaną formę np. mtp://[usb:002,025]W /run/user/$USER/gvfs(lub /var/run/user/$UID/gvfs) asmtp:host=%5Busb%3A002%2C025%5D


Edycja pytającego: Wydaje się, że wymaga to nowszej wersji libmtp i / lub gvfs niż domyślnie dostępna w 13.04. Uruchom sudo add-apt-repository ppa:langdalepl/gvfs-mtpi zaktualizuj, zanim zrobisz cokolwiek innego.


Edycja: PPA nie jest już potrzebne w saucy / 13.10 i nowszych, nazwy plików są wymienione w terminalu, tak jak w Nautilusie.

Edytuj 2016-01-11: Usunąłem skrypt, który był wcześniej zawarty w tej odpowiedzi z powodu braku czasu na konserwację i ulepszenia. Nadal można go znaleźć w historii zmian.

LiveWireBT
źródło
Dziękuję za Twoją odpowiedź. Niestety nie działa, ponieważ rzeczywiste nazwy folderów (np. / DCIM / Camera /) są widoczne tylko w Nautilusie, a nie w terminalu. Zatem $ Path / DCIM / Camera nie jest dostępny w rsync.
bessman
2
Ścieżka jest tylko przykładem i jest inna dla telefonów z Androidem. Telefon musi być również odblokowany za pomocą ekranu blokady, aby umożliwić dostęp do danych.
LiveWireBT
Ścieżka /DCIM/Camera/istnieje w moim telefonie, ale nazywa się w terminalu /2404/2407/. To jest problem. Jeśli cdwejdę /2404/2407/i ucieknę nautilus ., to /DCIM/Camera/zostanie otwarty. Telefon jest odblokowany, inaczej nie byłbym w stanie uzyskać do niego dostępu za pomocą Nautilusa, prawda?
bessman
5
Pamiętaj, że aby wszystko to działało, musisz mieć gvfs-fusezainstalowany pakiet. Nie wszystkie wersje / smaki Ubuntu mają to domyślnie (np. Ubuntu MATE 14.10 nie ma). Bez niego urządzenie MTP nie zostanie zamontowane jako ścieżka lokalna i będą mogły być używane tylko przez aplikacje obsługujące identyfikatory URI gvfs.
user149408,
2
W końcu znalazłem gvfs/katalog. Jednak zamiast $ USER, ścieżka na tym komputerze to: /run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C003%5D- Dla innych sugeruję, abyś po prostu się wyśmiewał, jeśli nie znajdziesz go od razu.
będzie
94

Dostęp do pamięci mojego urządzenia Nexus można uzyskać pod adresem:

/run/user/$UID/gvfs/mtp*

Jeśli więc masz $ UID 1000, możesz go znaleźć, wykonując jedno z tych działań

$ cd /run/user/$UID/gvfs/mtp*

lub (dla dokładnej lokalizacji w przykładzie przy założeniu, że UID to 1000),

$ cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
Babken Vardanyan
źródło
2
To powinna być zaakceptowana odpowiedź, ponieważ nie wymaga instalowania dodatkowego oprogramowania. Wielkie dzięki, użytkownik2529583!
NH.
Masz pomysł, czy mtp*nazwa pliku może zostać zmieniona w celu użycia w aplikacjach Wine? Naiwny mvdaje mi mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory(pamiętaj, że nazwa pliku jest uzupełniona tabulatorami)
Mark Jeronimus
@ Zaznaczyć dowolny znak jest prawidłową nazwą pliku w systemie Linux. Sprawdź, czy istnieje sposób na zmianę nazwy bez mv.
Babken Vardanyan
Niesamowite. Działa idealnie dobrze i zaoszczędził mi dużo „próbowania” na Raspbian Wheezy i Jessie
Zimano
1
Ubuntu 16.04 i Honor 9 Lite. Po podłączeniu /run/user/1000/gvfsfolder telefonu jest pusty.
LRDPRDX
25

MTP zamontowane urządzenie zwykle można znaleźć w: /run/user/1000/gvfs/


na przykład jeśli wyświetla się pasek adresu Nautilus mtp://[usb:001,006]/, możesz uzyskać dostęp poprzez:

/run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/

teraz na terminalu możesz kopiować pliki lub foldery:

  • cd do folderu -> cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
  • następnie skopiuj wymagane foldery do bieżącego katalogu -> cp -r ~/videos/ .
suhailvs
źródło
2
Działa dokładnie tak, jak mówisz. Ale kiedy zrobię „ls -a”, jest puste.
ycc_swe
10

Typ mount. Spowoduje to wyświetlenie listy każdego aktywnego systemu plików.

waltinator
źródło
14
Nie, urządzenie nie pojawia się na wyjściu.
LiveWireBT,
1
Hmm Ten rodzaj zadziałał. Znalazłem go pod / run / user / myusername / gvfs /. Jednak wszystkie nazwy folderów to tylko liczby zamiast rzeczywistych nazw, które widzę w Nautilusie. W związku z tym tak naprawdę nie rozwiązuje mojego problemu, ponieważ nadal nie mogę łatwo używać terminala do przenoszenia plików na urządzenie.
bessman
Gdy Nautilus ma otwarte urządzenie MTP, użyj poleceń, lsof -c nautilus | lessaby wyświetlić listę wszystkich plików plików otwartych przez Nautilus.
waltinator
1
To dla mnie rozwiązało :)
marlar
10

Działa to z:

  • Linux Mint 17.3
  • Samsung Galaxy S5

Spróbuj tego:

  1. apt-get install mtpfs
  2. apt-get install mtp-tools
    • #tak może być jedna linia (jest to opcjonalne )
  3. sudo mkdir -p /media/mtp/phone
  4. sudo chmod 775 /media/mtp/phone
    • #Osobiście ograniczyłem uprawnienia do NO-eXecute
    • #W tym momencie nie jestem pewien, co wystarczy do zamontowania.
  5. Odłącz telefon micro-USB i wtyczkę, a następnie ...
  6. sudo mtpfs -o allow_other /media/mtp/phone
  7. ls -lt /media/mtp/phone

wynik:

 total 0
 drwxrwxrwx 2 will will 0 Jan  1  1970 Card
 drwxrwxrwx 2 will will 0 Jan  1  1970 Phone
 drwxrwxrwx 2 will will 0 Jan  1  1970 Playlists
  1. ls -lt /media/mtp/phone/Card

wynik:

 total 0
 drwxrwxrwx 2 will will 0 Jan  1  1970 Android
 drwxrwxrwx 2 will will 0 Jan  1  1970 DCIM
 drwxrwxrwx 2 will will 0 Jan  1  1970 LOST.DIR
 drwxrwxrwx 2 will will 0 Jan  1  1970 Music

Dostęp do karty SD na moim telefonie z Androidem. „ Listy odtwarzania ” to wirtualny katalog o nazwie „/ Listy odtwarzania”, który zawiera listy odtwarzania w postaci plików .m3u. (za man mtpfs)

To wydaje się załatwić sprawę. Przydatne polecenia do zapamiętania ...

  • sudo mtpfs -h... wyświetla opcje urządzenia. Wydaje się, że działa to tylko przed zamontowaniem urządzenia. Więc sprawdź najpierw.
  • mtp-detect... pokazuje wiele rzeczy na temat urządzenia (część narzędzi mtp).

Myślę też, że potrzebujesz włączonego telefonu / urządzenia , otwórz wygaszacz ekranu, jeśli taki masz, aby urządzenie mogło się połączyć.

Zauważyłem, że mój uchwyt USB-s jako:

  • / media / will / usbdrive

Dlatego może być bardziej sensowne montowanie pod nazwą użytkownika zamiast kodu pośredniczącego „mtp”. Przeczytaj także post: „ Montowanie karty SD z Androidem MTP na Ubuntu ”, zawiera kilka przydatnych sugestii i dodatków.

Bibliografia:

Objąłem prowadzenie z tych dwóch postów:

będzie
źródło
Cześć, chociaż to działa, wciąż uważam, że MTP jest zbyt wolny i często jest tak, jakby mój komputer z systemem Linux został zablokowany. Popieram dalsze komentarze na temat korzystania z FTP. Zrobiłem trochę kopania i polecam aplikację sshelper . Jest bardzo przydatny, otwarty i dojrzały. Działa z systemami Windows, Linux i Mac - lub cokolwiek, co obsługuje SSH. Łatwy w użyciu. Dać mu szansę.
będzie
8

Mam telefon LG2 i korzystam z Xubuntu 15.10.

W ten sposób podłączyłem urządzenie do katalogu mnt pod moim użytkownikiem.

  1. Najpierw upewnij się, że masz zainstalowane następujące pakiety w systemie.

    sudo apt-get install jmtpfs mtp-tools
    
  2. Podłącz telefon jako urządzenie MTP i wpisz następujące polecenie w swoim terminalu.

    mtp-detect
    
  3. Odkomentowanie user_allow_otherw pliku /etc/fuse.conf.

  4. Utwórz katalog mntw swoim katalogu domowym.

    mkdir mnt
    
  5. Zamontuj urządzenie.

    jmtpfs ~/mnt
    
  6. Otóż ​​to. Teraz urządzenie jest zamontowane w mntkatalogu utworzonym w kroku 4 .

Uwaga: niektóre kroki mogą być niepotrzebne. Ale wykonanie powyższych kroków działało dla mnie.

Odniesienie: https://wiki.archlinux.org/index.php/MTP

Żelazne serce
źródło
6

To nie jest bezpośrednia odpowiedź na problem, ale rozwiązanie.

Po doświadczeniu niespójności z łącznością USB, ominąłem wszystkie .gvfs i system USB.

Zainstalowałem prosty serwer ftp na Androida i voila! Połącz się z serwerem (ftp z loginem lub bez, w zależności od wyboru) z Nautilus / nemo / thunar i gotowe.

Synchronizacja folderów jest obsługiwana przez OwnCloud i / lub BitTorrentSync.

A FTP przez sieć bezprzewodową jest znacznie szybszy niż połączenie USB.

Nick Heywood
źródło
5

MTP jest protokołem, podobnie jak FTP lub SSH. Pobiera pliki, gdy użytkownik o to poprosi. Dlatego na komputerze nie ma zamontowanego systemu plików.

Użyj mtpfs, aby wyglądał jak podłączony system plików.

mtpfs <a_folder_to_mount>

Nie trzeba określać urządzenia. Jeśli masz podłączone tylko jedno urządzenie, nie ma dwuznaczności. Nie testowałem tego z wieloma urządzeniami podłączonymi do mojego komputera.

Krishnendu
źródło
4

Nie wiem dokładnie, jak przechodzić do lokalizacji MTP przez terminal. Dowiedziałem się jednak, że możemy kliknąć prawym przyciskiem myszy kartę Pamięć wewnętrzna / SD i wybrać opcję „Otwórz w terminalu”. W ten sposób lokalizacja zostanie otwarta bezpośrednio w terminalu.

Vikas Mohan
źródło
2
Prawdziwy zrzut ekranu (wewnętrznego bufora ramki) byłby o wiele lepszy niż zdjęcie ekranu (z zewnętrznym aparatem).
David Foerster,
1

Jestem w stanie zarządzać plikami na MTP podłączone urządzenia z systemem Android przy użyciu gvfs-*poleceń (np gvfs-cp, gvfs-move...), które są również wymienione w poniższym artykule Wikipedia : Gvfs .

Napisałem proste narzędzie CLI do synchronizacji plików do / z urządzenia z systemem Android: https://github.com/DusanMadar/PySyncDroid

Dušan Maďar
źródło
1
Wystarczy wejść do katalogu i użyć rsync
Evan Carroll