MTP 挂载设备位于文件系统中的什么位置?

bes*_*man 257 mountpoint mtp

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

有谁知道它在哪里?

Liv*_*eBT 198

正如您已经发现的,挂载点位于/run/user/$USER/gvfs/(或/var/run/user/$UID/gvfs)中,并以其使用的协议、连接类型和地址命名。这让事情变得更加困难,因为每次重新插入设备时连接地址都可能会改变,即使它是同一个端口。如果您使用相同的设备两次,情况会更糟。

您可以使用lsusb从终端显示所有连接的 USB 设备:

$ lsusb | grep Google   # Note: This is a Nexus 4, change accordingly
Bus 002 Device 025: ID 18d1:4ee2 Google Inc.
Run Code Online (Sandbox Code Playgroud)

正如您所注意到的,Nautilus 还通过工具提示提供此信息。你会发现编码形式的 eg mtp://[usb:002,025]in /run/user/$USER/gvfs(or /var/run/user/$UID/gvfs) asmtp:host=%5Busb%3A002%2C025%5D


Asker 的编辑:这似乎需要比 13.04 中默认可用的更新版本的 libmtp 和/或 gvfs。sudo add-apt-repository ppa:langdalepl/gvfs-mtp在做任何其他事情之前运行和更新。


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

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

  • 请注意,为了使所有这些工作正常进行,您需要安装 `gvfs-fuse` 软件包。并非所有版本/风格的 Ubuntu 默认都有它(例如 Ubuntu MATE 14.10 没有)。没有它,MTP 设备将不会作为本地路径安装,并且只能由支持 gvfs URI 的应用程序使用。 (8认同)
  • 我连接了 MTP 设备,但在 Ubuntu 22 上,“/run/user/$USER/gvfs/”和“/var/run/user/$UID/gvfs”都没有任何内容。 (4认同)
  • 18.04或19.10中没有`/run/user/$USER/gvfs/`目录,但有`/run/user/<uid>/gvfs`和`/var/run/user/<uid>/gvfs `。 (3认同)
  • 该路径只是一个示例,对于 Android 手机是不同的。手机还必须通过锁定屏幕解锁才能访问数据。 (2认同)
  • 我最终找到了 `gvfs/` 目录。然而,这台 PC 上的路径不是 $USER,而是:`/run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C003%5D` -- 对于其他人,我建议你随便看看,如果你不不要马上找到它。 (2认同)

小智 111

可以在以下位置访问我的 Nexus 设备的内存:

/run/user/$UID/gvfs/mtp*
Run Code Online (Sandbox Code Playgroud)

因此,如果您的 $UID 是1000,您可以通过以下任一方式找到它

$ cd /run/user/$UID/gvfs/mtp*
Run Code Online (Sandbox Code Playgroud)

或(对于假设您的 UID 为 1000 的示例中的确切位置),

$ cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
Run Code Online (Sandbox Code Playgroud)

  • _This_ 应该是公认的答案,因为它不需要安装任何其他软件。非常感谢user2529583! (4认同)
  • Ubuntu 16.04 和 Honor 9 Lite。连接手机后`/run/user/1000/gvfs`文件夹为空。 (2认同)

suh*_*lvs 28

MTP 安装的设备通常可以在以下位置找到: /run/user/1000/gvfs/


例如,如果您的 Nautilus 地址栏显示mtp://[usb:001,006]/,那么您可以通过以下方式访问:

/run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
Run Code Online (Sandbox Code Playgroud)

现在在终端上,您可以复制文件或文件夹:

  • cd 进入文件夹 -> cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
  • 然后将需要的文件夹复制到当前目录-> cp -r ~/videos/ .

  • 它的工作原理和你说的完全一样。但是当我制作 'ls -a' 时它是空的。 (3认同)
  • Ubuntu 20.04:“/run/user/$UID/gvfs/”无法访问,因为这些天“mtp://”设备是在文件系统之外处理的,这使得(命令行)病毒扫描程序无法访问它们等。干得好,Canonical ! (2认同)

小智 14

我有一部 LG2 手机,运行的是 Xubuntu 15.10。

这就是我将设备安装到用户下的 mnt 目录的方式。

  1. 首先确保您的系统中安装了以下软件包。

    sudo apt-get install jmtpfs mtp-tools
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将手机连接为 MTP 设备并在终端中键入以下命令。

    mtp-detect
    
    Run Code Online (Sandbox Code Playgroud)
  3. user_allow_other在文件中取消注释/etc/fuse.conf

  4. mnt在您的主目录中创建一个目录。

    mkdir mnt
    
    Run Code Online (Sandbox Code Playgroud)
  5. 安装设备。

    jmtpfs ~/mnt
    
    Run Code Online (Sandbox Code Playgroud)
  6. 就是这样。现在您的设备安装mnt步骤 4 中创建的目录下。

注意:可能有些步骤是不必要的。但是按照上述步骤对我有用。

参考:https : //wiki.archlinux.org/index.php/MTP

  • 在 Ubuntu 22 上,当我尝试运行 `mpt-detect` 时,我收到此错误: `libusb_claim_interface() reports device is busy, likely in use by GVFS or KDE MTP device HandlingalLIBMTP PANIC: Unable toinitial device ` (2认同)

wil*_*ill 11

这是与:

  • Linux 薄荷 17.3
  • 三星盖乐世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. 拔掉手机micro-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
Run Code Online (Sandbox Code Playgroud)
  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
Run Code Online (Sandbox Code Playgroud)

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

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

  • sudo mtpfs -h... 列出设备的选项。这似乎只在您安装设备之前有效。因此,也许首先检查一下。
  • mtp-detect... 展示了很多关于设备的东西(mtp-tools 的一部分)。

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

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

  • /媒体/将/ USB驱动器

因此,安装在您的用户名下而不是“mtp”存根下可能更有意义。另外,请查看帖子:“在 Ubuntu 上安装您的 MTP Androids SD 卡”,它有一些有用的建议和附加功能。

参考

我从这两个帖子中起带头作用:


wal*_*tor 10

键入mount。这将列出每个活动的文件系统。

  • 不,该设备未显示在输出中。 (18认同)

小智 9

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

截屏

  • 真实的屏幕截图(内部帧缓冲区的)比屏幕照片(使用外部摄像头)要好得多。 (3认同)
  • Ubuntu 20.04:MTP 设备不再“在终端中打开”。谢谢佳能! (2认同)

小智 6

这不是问题的直接答案,但仍然是解决方案。

在遇到 USB 连接不一致后,我绕过了 .gvfs 和 USB 系统。

我在 android 上安装了一个简单的 ftp 服务器,瞧!从 Nautilus/nemo/thunar 连接到服务器(无论是登录还是不登录的 ftp,取决于您的选择),然后就可以了。

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

而且通过无线的 FTP 比 USB 连接要快得多。


小智 5

MTP 是一种协议,很像 FTP 或 SSH。它在用户要求时获取文件。因此,计算机上没有挂载的文件系统。

使用 mtpfs 使其看起来像一个已安装的文件系统。

mtpfs <a_folder_to_mount>
Run Code Online (Sandbox Code Playgroud)

无需指定设备。如果您只连接了一台设备,则没有歧义。我还没有使用连接到我的计算机的多个设备对其进行测试。


归档时间:

查看次数:

224491 次

最近记录:

4 年,7 月 前