MTP安装的设备在文件系统中的哪里?


206

我有一个通过MTP与计算机连接的Android手机。这很好用;我可以使用Nautilus查看和传输文件。但是,我经常想使用终端来移动大量文件,而且似乎无法在文件系统树中的任何位置找到该设备。Nautilus将该位置报告为mtp://[usb:003,007]/,但不在/media或下/mnt

有人知道它在哪里吗?


Answers:


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


Asker的编辑:这似乎需要比13.04中的默认默认版本更高的libmtp和/或gvfs版本。sudo add-apt-repository ppa:langdalepl/gvfs-mtp在执行其他操作之前,请运行并更新。


编辑:saucy / 13.10和更高版本中不再需要PPA,因为在Nautilus中,文件名在终端中列出。

编辑2016年1月11日:由于缺乏维护和改进的时间,我删除了此答案中先前包含的脚本。您仍然可以在修订历史记录中找到它。


谢谢您的回答。不幸的是,它不起作用,因为实际的文件夹名称(例如/ DCIM / Camera /)仅在Nautilus中可见,而在终端中不可见。因此,rsync无法访问$ Path / DCIM / Camera。
bessman 2013年

2
该路径仅是示例,对于Android手机而言则不同。还必须通过锁定屏幕将手机解锁,以允许访问数据。
LiveWireBT 2013年

该路径/DCIM/Camera/存在于我的手机上,但在终端中称为/2404/2407/。那就是问题所在。如果我cd进入/2404/2407/运行nautilus .,则/DCIM/Camera/打开。手机已解锁,否则我将无法通过Nautilus访问手机,对吗?
bessman

5
请注意,为了使所有这些正常工作,您需要gvfs-fuse安装该软件包。默认情况下,并非所有版本的Ubuntu都具有它(例如,Ubuntu MATE 14.10没有)。没有它,MTP设备将不会作为本地路径挂载,并且只能由支持gvfs URI的应用程序使用。
user149408 2014年

2
gvfs/终于找到了目录。但是,在此PC上的路径不是$ 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
是可以接受的答案,因为它不需要安装任何其他软件。非常感谢user2529583!
NH。

是否mtp*可以重命名文件名以在Wine应用程序中使用?天真mv给我mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory(请注意文件名是制表符完成的)
Mark Jeronimus

@Mark任何字符在Linux中都是有效的文件名。看看是否有一种方法可以在不使用mv的情况下重命名它。
巴本·瓦尔丹扬

太棒了 它运行得非常好,在Raspbian Wheezy和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 2013年

1
嗯 这种工作。我在/ run / user / myusername / gvfs /下找到了它。但是,所有文件夹名称都只是数字,而不是我在Nautilus中看到的实际名称。这样,它并不能真正解决我的问题,因为我仍然无法轻松地使用终端将文件移至设备。
bessman

当Nautilus打开MTP设备时,使用命令lsof -c nautilus | less列出Nautilus打开的所有文件文件。
waltinator 2014年

1
为我解决了问题:)
marlar 2015年

10

这适用于:

  • Linux Mint 17.3
  • 三星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

列出对我的Android手机上的SD卡的访问权限。“ 播放列表 ”是一个名为“ / Playlists”的虚拟目录,其中包含您的播放列表为.m3u文件。(每个man mtpfs

这似乎可以解决问题。有用的命令要记住...

  • sudo mtpfs -h...列出设备的选项。这似乎仅在安装设备之前起作用。因此,也许先检查一下。
  • mtp-detect...显示了有关该设备的许多内容(mtp-tools的一部分)。

另外,我认为您需要手机“ /” 处于打开状态,如果有,请打开屏幕保护程序,以便设备可以连接。

我注意到我的USB-s挂载为:

  • / media / will / usbdrive

因此,将其挂载在您的用户名下而不是“ mtp”存根可能更有意义。此外,还查看了帖子:“ 在Ubuntu上安装你的机器人会MTP SD卡 ”,它有一些有用的建议和临时演员。

参考资料:

我从这两篇文章中担任领导:


嗨,尽管这行得通,但我仍然发现MTP太慢,并且经常好像我的Linux PC已锁定。我支持有关使用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系统。

我在android和voila上安装了一个简单的ftp服务器!从Nautilus / nemo / thunar连接到服务器(使用登录名的ftp或不使用ftp,取决于您选择的方式),然后离开。

文件夹的同步通过OwnCloud和/或BitTorrentSync处理。

而且无线FTP的速度比USB连接要快。


5

MTP是一种协议,非常类似于FTP或SSH。当用户要求时,它将获取文件。因此,计算机上没有安装的文件系统。

使用mtpfs使其看起来像已挂载的文件系统。

mtpfs <a_folder_to_mount>

无需指定设备。如果仅连接一台设备,则没有歧义。我尚未在连接到计算机的多个设备上进行过测试。


4

我不知道要通过终端遍历到MTP位置。但是,我发现我们可以右键单击内部存储/ SD卡,然后选择“在终端中打开”选项。这样做可以在终端中直接打开该位置。


2
(内部帧缓冲区的)真实屏幕截图比屏幕(使用外部相机)的照片要好得多。
David Foerster '18

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.