Де у файловій системі розташовані пристрої, встановлені на MTP?


206

У мене телефон Android, який підключається до мого комп'ютера через MTP. Це прекрасно працює; Я можу бачити та передавати файли з Nautilus. Однак я часто хочу використовувати термінал для переміщення великої кількості файлів, і я не можу знайти пристрій де-небудь у дереві файлової системи. Nautilus повідомляє про місцезнаходження як mtp://[usb:003,007]/, але це не під /mediaабо /mnt.

Хтось знає, де це?


Відповіді:


153

Як ви вже з’ясували , точки монтажу знаходяться в /run/user/$USER/gvfs/(або /var/run/user/$UID/gvfs) і називаються за протоколом, типом з'єднання та адресою, яку вони використовують. Що ускладнює ситуацію, оскільки адреса з'єднання може змінюватися щоразу, коли ви підключаєте пристрій, навіть якщо це той самий порт. Якщо у вас один і той же пристрій двічі, це стає ще гірше.

Ви можете використовувати lsusbдля відображення всіх підключених USB-пристроїв з терміналу:

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

Як ви помітили, Nautilus також надає цю інформацію через підказки. Ви знайдете закодовану форму, наприклад, mtp://[usb:002,025]у /run/user/$USER/gvfs(або /var/run/user/$UID/gvfs) якmtp:host=%5Busb%3A002%2C025%5D


Редагування запитувача: Здається, для цього потрібна нова версія libmtp та / або gvfs, ніж доступна за замовчуванням у 13.04. Запустіть sudo add-apt-repository ppa:langdalepl/gvfs-mtpі оновіть, перш ніж робити щось інше.


Редагувати: PPA більше не потрібен у соковитих / 13.10 та новіших, імена файлів перераховані у терміналі, як вони є у Наутілусі.

Редагувати 11.01.2016: Я видалив сценарій, який раніше був включений у цю відповідь через брак часу на обслуговування та вдосконалення. Ви все ще можете знайти його в історії ревізій.


Спасибі за вашу відповідь. На жаль, це не працює, оскільки фактичні назви папок (наприклад, / DCIM / камера /) видно лише в Nautilus, а не в терміналі. Таким чином, $ Path / DCIM / камера не доступна за допомогою rsync.
бессмен

2
Шлях є лише прикладом і відрізняється для телефонів Android. Телефон також повинен бути розблокований через заблокований екран, щоб дозволити доступ до даних.
LiveWireBT

Шлях /DCIM/Camera/існує на моєму телефоні, але в терміналі він називається /2404/2407/. У цьому проблема. Якщо я cdвбігаю /2404/2407/і біжу nautilus ., то /DCIM/Camera/відкривається. Телефон розблокований, інакше я не зможу отримати доступ до нього через Nautilus, правда?
бессмен

5
Зауважте, що для того, щоб усе це працювало, вам потрібно встановити gvfs-fuseпакет. Не всі версії / аромати Ubuntu мають його за замовчуванням (наприклад, Ubuntu MATE 14.10 не має). Без нього MTP-пристрій не зможе встановитись як локальний шлях, і він буде доступний лише програмам, які підтримують UR-адреси gvfs.
користувач149408

2
gvfs/Зрештою я знайшов каталог. Однак замість $ USER шлях на цьому ПК: /run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C003%5D- Для інших я пропоную вам просто подумати, якщо ви не знайдете його відразу.
буде

94

До пам'яті мого Nexus можна отримати доступ:

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

Тож якщо ваш $ UID є 1000, ви можете його знайти, зробивши будь-яку роботу

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

або (для точного розташування в прикладі, припускаючи, що ваш UID - 1000),

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

2
Це має бути прийнятою відповіддю, оскільки не вимагає встановлення додаткового програмного забезпечення. Дякую користувачеві2529583!
NH.

Будь-яка ідея, чи mtp*можна ім'я файлу перейменувати для використання у програмах Wine? Naive mvдає мені mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory(зауважте, що ім’я файлу завершено)
Марк Єронімус

@Mark будь-який символ - це дійсне ім'я файлу в Linux. Подивіться, чи є спосіб перейменувати його без mv.
Бабкен Варданян

Дивовижно. Це прекрасно працює і врятувало мені багато "примірянь" на Raspbian Wheezy and Jessie
Zimano

1
Ubuntu 16.04 і Honor 9 Lite. Після підключення /run/user/1000/gvfsпапка телефону порожня.
LRDPRDX

25

MTP Пристосований пристрій зазвичай можна знайти в: /run/user/1000/gvfs/


наприклад, якщо відображається ваш адресний рядок Nautilus mtp://[usb:001,006]/, ви можете отримати доступ:

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

тепер на терміналі ви можете скопіювати файли чи папки:

  • CD в ​​папку -> cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
  • потім скопіюйте потрібні папки в поточний каталог -> cp -r ~/videos/ .

2
Це працює точно так, як ви кажете. Але коли я роблю 'ls -a', він порожній.
ycc_swe

10

Тип mount. Це список усіх активних файлових систем.


14
Ні, пристрій не відображається на виході.
LiveWireBT

1
Хм. Такий працював. Я знайшов його під / run / user / myusername / gvfs /. Однак усі імена папок - це лише цифри замість власне імен, які я бачу в Nautilus. Як таке, це насправді не вирішує мою проблему, оскільки я все ще не можу легко використовувати термінал для переміщення файлів на пристрій.
бессман

Коли Nautilus має відкритий MTP-пристрій, використовуйте команди, lsof -c nautilus | lessщоб перелічити всі файли файлів, які Nautilus відкрив.
waltinator

1
Це вирішило для мене :)
marlar

10

Це працює з:

  • Linux Mint 17.3
  • Samsung Galaxy S5

спробуйте це:

  1. apt-get install mtpfs
  2. apt-get install mtp-tools
    • #так, може бути один рядок (це необов'язково )
  3. sudo mkdir -p /media/mtp/phone
  4. sudo chmod 775 /media/mtp/phone
    • #Особисто я обмежую дозволи на NO-eXecute
    • #На даний момент я не впевнений, що достатньо для монтажу.
  5. Відключіть мікро-USB та підключення телефону, а потім ...
  6. sudo mtpfs -o allow_other /media/mtp/phone
  7. ls -lt /media/mtp/phone

вихід:

 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

вихід:

 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

Доступ до списку SD-карти на моєму телефоні Android. " Списки відтворення " - це віртуальний каталог під назвою "/ Playlists", який містить ваші списки відтворення у форматі .m3u. (за man mtpfs)

Це, здається, робить трюк. Корисні команди для запам'ятовування ...

  • sudo mtpfs -h... перелічує параметри пристрою. Здається, це працює лише до того, як ви змонтували пристрій. Тож перевірте спочатку, можливо.
  • mtp-detect... показує багато матеріалів про пристрій (частина mtp-інструментів).

Також я думаю, що вам потрібен телефон / пристрій " увімкнено ", відкрийте заставку, якщо у вас є, щоб пристрій міг підключитися.

Я помітив, що моє кріплення USB як:

  • / медіа / буде / usbdrive

Тому може бути більше сенсу монтувати під своїм іменем користувача замість заглушки "mtp". Також ознайомтеся з публікацією: " Встановлення вашої SD-картки MTP Androids на Ubuntu ", у ній є кілька корисних пропозицій та додаткових додатків

посилання:

Я взяв на себе керівництво з цих двох постів:


Привіт, хоча це працює, я все ще вважаю, що MTP занадто повільний, і часто це буває так, ніби мій ПК з Linux заблокований. Я підтримую подальші коментарі щодо використання FTP. Я кілька копав і рекомендую додаток sshelper . Це дуже корисно, з відкритим джерелом та зрілим. Працюватиме з Windows, Linux та Mac - або з усім, що підтримує SSH. Простота у використанні теж. Спробуй.
буде

8

У мене є телефон LG2, і я працюю на Xubuntu 15.10.

Ось так я монтував пристрій у каталог mnt під своїм користувачем.

  1. Спочатку переконайтеся, що у вашій системі встановлені наступні пакети.

    sudo apt-get install jmtpfs mtp-tools
    
  2. Підключіть телефон як MTP-пристрій і введіть у свій термінал наступну команду.

    mtp-detect
    
  3. Відлучення user_allow_otherу файлі /etc/fuse.conf.

  4. Створіть mntв домашньому каталозі каталог.

    mkdir mnt
    
  5. Монтуйте пристрій.

    jmtpfs ~/mnt
    
  6. Це воно. Тепер ваш пристрій встановлено під mntкаталогом, створеним на кроці 4 .

Примітка. Можуть бути непотрібні кроки. Але слідуючи вищезазначеним крокам, працювали для мене.

Довідка: https://wiki.archlinux.org/index.php/MTP


6

Це не пряма відповідь на проблему, але все-таки рішення.

Випробувавши невідповідність USB-з'єднанню, я обійшов усі файли .gvfs та USB.

Я встановив простий ftp-сервер на android і voila! Підключіться до сервера (або ftp з логіном або без, залежно від способу вибору) від Nautilus / nemo / thunar і далеко ви їдете.

Синхронізація папок обробляється через OwnCloud та / або BitTorrentSync.

А FTP через бездротовий зв'язок швидше, ніж USB-з'єднання.


5

MTP - це протокол, подібно до FTP або SSH. Він отримує файли, коли користувач запитує про це. Таким чином, на комп'ютері немає змонтованої файлової системи.

Використовуйте mtpfs для того, щоб він виглядав як змонтована файлова система.

mtpfs <a_folder_to_mount>

Не потрібно вказувати пристрій. Якщо у вас підключений лише один пристрій, неоднозначності немає. Я не тестував це на кількох пристроях, підключених до мого комп'ютера.


4

Я не знаю точно проїхати до MTP-місця через термінал. Однак я з’ясував, що ми можемо клацнути правою кнопкою миші на внутрішній накопичувач / SD-карту та обрати опцію «Відкрити в терміналі». У цьому випадку місцезнаходження безпосередньо відкривається в Терміналі.


2
Справжній знімок екрана (внутрішнього фреймбуфера) був би набагато кращим, ніж фотографія екрану (із зовнішньою камерою).
Девід Фоерстер

1

Я можу керувати файлами на MTP підключений Android пристрої з допомогою gvfs-*команд (наприклад gvfs-cp, gvfs-move...) , які також згадуються в наступній статті Вікіпедії : GVFS .

Я написав просту утиліту CLI для синхронізації файлів на / з пристрою Android: https://github.com/DusanMadar/PySyncDroid


1
Просто перейдіть до каталогу та скористайтесь rsync
Еван Керролл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.