使用这款 Linux 实用工具备份您的手机存储

尽情拍摄吧;gphoto2 让从您的设备向 Linux 电脑传输照片变得快速而简单。
77 位读者喜欢这篇文章。
How to turn a Raspberry Pi into an eBook server

Opensource.com

移动设备的一大缺陷是,将数据从设备传输到电脑可能非常困难。移动设备在这方面由来已久。早期的移动设备,如 Pilot 和 Handspring PDA 设备,需要特殊的同步软件(您必须虔诚地执行同步,以免设备电池耗尽并永远丢失所有数据)。旧的 iPod 需要特定于平台的界面。现代移动设备默认将您的数据发送到在线帐户,以便您可以在电脑上再次下载。

好消息——如果您正在运行 Linux,您可能可以使用 gphoto2 命令与您的移动设备交互。gphoto2 最初是作为一种与数码相机通信的方式开发的,那时数码相机还只是相机,现在它可以与许多不同类型的移动设备通信。也不要被名称所迷惑。它可以处理所有类型的文件,而不仅仅是照片。更好的是,它是可脚本化的、灵活的,并且比大多数 GUI 界面强大得多。

如果您曾经苦苦寻找一种舒适的方式来同步电脑和移动设备之间的数据,请了解一下 gphoto2

安装 gPhoto2

您的 Linux 系统很可能已经安装了 libgphoto2,因为它是与移动设备交互的关键库。但是,您可能需要安装 gphoto2 命令,这可能在您的存储库中可用。

在 Fedora 或 RHEL 上

$ sudo dnf install gphoto2

在 Debian 或 Ubuntu 上

$ sudo apt install gphoto2

验证兼容性

要验证您的移动设备是否受支持,请使用 --list-cameras 并通过 less 管道传输

$ gPhoto2 --list-cameras | less 

或者,您可以通过 grep 管道传输它来搜索术语。例如,如果您有 Samsung Galaxy,则使用 grep 并使用 -i 开关关闭大小写敏感性

$ gphoto2 --list-cameras | grep -i galaxy
  "Samsung Galaxy models (MTP)"
  "Samsung Galaxy models (MTP+ADB)"
  "Samsung Galaxy models Kies mode"

这证实 Samsung Galaxy 设备通过 MTP 和 MTP with ADB 得到支持。

如果您找不到列出的设备,您仍然可以尝试使用 gphoto2,以防您的设备实际上是列表中的某个设备,伪装成不同的品牌。

查找您的移动设备

要使用 gPhoto2,您首先必须将移动设备插入电脑,设置为 MTP 模式,并且您可能需要授予您的电脑与其交互的权限。这通常需要与您的设备进行物理交互,特别是按下 UI 中的一个按钮,以允许刚刚连接到它的电脑访问其文件系统。

Screenshot of allow access message

如果您不授予电脑访问您移动设备的权限,那么 gPhoto2 会检测到您的设备,但无法与其交互。

为了确保您的电脑检测到您连接的设备,请使用 --auto-detect 选项

$ gphoto2 --auto-detect
Model                       Port
---------------------------------------
Samsung Galaxy models (MTP) usb:002,010

如果未检测到您的设备,请首先检查您的电缆,然后检查您的设备是否配置为通过 MTP 或 ADB 或 gPhoto2 为您的设备支持的任何协议进行接口,如 --list-cameras 的输出所示。

查询您的设备的功能

对于现代设备,通常有很多潜在的功能,但并非所有功能都受支持。您可以使用 --abilities 选项来确定,我发现这非常直观。

$ gphoto2 --abilities
Abilities for camera            : Samsung Galaxy models (MTP)
Serial port support             : no
USB support                     : yes
Capture choices                 : Capture not supported by driver
Configuration support           : no
Delete selected files on camera : yes
Delete all files on camera      : no
File preview (thumbnail) support: no
File upload support             : yes

只要您只连接了一个设备,就无需指定您要查询的设备。但是,如果您连接了多个 gPhoto2 可以与之交互的设备,则可以通过端口、相机型号或 usbid 指定设备。

与您的设备交互

如果您的设备支持捕获,那么您可以从电脑通过相机抓取媒体。例如,要捕获图像

$ gphoto2 --capture-image

要捕获图像并立即将其传输到您正在使用的电脑

$ gphoto2 --capture-image-and-download

您还可以捕获视频和声音。如果您连接了多个相机,则可以通过端口、相机型号或 usbid 指定要使用的设备

$ gphoto2 --camera "Samsung Galaxy models (MTP)" \
--capture-image-and-download

文件和文件夹

要智能地与设备上的文件交互,您需要了解暴露给 gPhoto2 的文件系统的结构。

您可以使用 --get-folders 选项查看可用的文件夹

$ gphoto2 --list-folders
There are 2 folders in folder '/'.                                             
 - store_00010001
 - store_00020002
There are 0 folders in folder '/store_00010001'.
There are 0 folders in folder '/store_00020002'.

这些文件夹中的每一个都代表设备上的一个存储目标。在本例中,store_00010001 是内部存储,store_00020002 是 SD 卡。您的设备结构可能有所不同。

获取文件

现在您已经了解了设备的文件布局,您可以从设备摄取照片。根据您要从设备获取的内容,您可以使用许多不同的选项。

您可以获取特定文件,前提是您知道完整路径

$ gphoto2 --get-file IMG_0001.jpg --folder /store_00010001/myphotos

您可以一次获取所有文件

$ gphoto2 --get-all-files --folder /store_00010001/myfiles

您可以仅获取音频文件

gphoto2 --get-all-audio-data --folder /store_00010001/mysounds

还有其他选项,其中大多数选项取决于您的设备以及您正在使用的协议的支持。

上传文件

现在您已经知道了潜在的目标文件夹,您可以将电脑上的文件上传到您的设备。例如,假设您的当前目录中有一个名为 example.epub 的文件,您可以使用 --upload-file 选项与 --folder 选项结合使用将文件发送到您的设备,以指定您要上传到的存储位置

$ gphoto2 --upload file example.epub \
--folder store_00010001

如果您希望将多个文件上传到统一的位置,则可以在您的设备上创建一个目录

$ gphoto2 --mkdir books \
--folder store_00010001
$ gphoto2 --upload-file *.epub \
--folder store_00010001/books

列出文件

要查看上传到您设备的文件,请使用 --list-files 选项

$ gphoto2 --list-files --folder /store_00010001
There is 1 file in folder '/store_00010001'
#1     example.epub 17713 KB application/x-unknown
$ gphoto2 --list-files --folder /store_00010001/books
There is 1 file in folder '/store_00010001'
#1    example0.epub 17713 KB application/x-unknown
#2    example1.epub 12264 KB application/x-unknown
[...]

探索您的选项

gPhoto2 的大部分功能取决于您的设备,因此您的体验将与任何其他人不同。gphoto2 --help 中列出了许多操作供您探索。使用 gPhoto2,永远不再为将文件从您的设备传输到电脑而烦恼!

接下来阅读什么
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,而且经常同时从事这两个行业。

6 条评论

我使用 nextcloud 的相同功能

Nextcloud 是一个很棒的解决方案。我正在寻找更直接的东西,这就是我选择本地命令的原因,但 Nextcloud - 特别是如果您在本地或至少在本地网络上运行它,是摄取和整理照片的好方法,而且当然是开源的。

回复 ,作者:Geh Kah (未验证)

在我的系统上不起作用,我只能推测是 "usb_storage" 模块,因为它建议的阻止 gphoto2 声明设备的模块都没有运行。

需要进一步调查,或者它在某种程度上依赖于 Gnome3。

在 Mint 20.0 下再次进行了测试,仍然看到其他东西锁定设备。我提到它可能是 Gnome3 特有的,因为我使用 Cinnamon,而不是 Gnome。它确实识别手机(将 Moto E5 识别为 Moto G,但我预计内部结构大致相同)。

回复 ,作者:sethkenlon

我发现使用 IOS 设备越来越困难。似乎内置的障碍比以往任何时候都多。Gphoto2 多次停止并声明文件损坏,即使它们没有损坏。重置一切,它会继续短时间运行,然后问题再次开始。Gphoto2 是一个不错的选择。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.