每隔几个月,我就会通过 USB 将照片和视频从 Pixel 4a 手机传输到 Windows 电脑。这个过程很慢,我可以忍受。但它也很费力,而且容易出错。
劳动密集型:我必须预览视频/图像(由于我通过 USB 连接到手机的计算机访问它,因此有明显的延迟),每次都要手动复制、粘贴,然后删除原始内容。为什么我必须这样做?
容易出错:批量操作似乎是不可能的;尝试一次复制/粘贴多个视频几乎总是会导致我的电脑死机,出于这个原因,我不愿意冒着风险使用“剪切”而不是“复制”。我没有费心传输很多照片,因为似乎不值得花时间逐一浏览所有照片,而且如果我试图一次传输一堆照片,也不值得冒丢失它们的风险。
另外:当我传输视频时,当我尝试复制视频时,我会开始收到“无法修改文件,因为它正在使用中”的弹出窗口,并且频率逐渐增加。
另外:我必须通过“锁定”照片应用来使手机保持解锁状态。这并不能阻止我的屏幕变暗,这似乎会导致速度变慢,因此在整个传输过程中我还必须不断点击手机屏幕。另外,我不知道哪种情况更糟糕:打开照片应用,这意味着我的手机和电脑正在尝试同时访问它们,还是打开其他应用,这可能会因其他原因导致问题。
我使用的是 USB 3.0 电缆,但我想知道问题是否部分在于我手机上的 USB 端口已经磨损或根本不适合大量数据传输。这很有道理;Google 希望我订阅他们的云服务。但我不想。我想找到一种方法来提高我自己的流程效率。有什么建议吗?
更新(2023 年 8 月 16 日):我尝试使用旧方法再次执行此操作,发现情况比以前糟糕得多。如果我通过电脑查看手机上的任何内容,如果我随后尝试复制/粘贴,甚至尝试查看其他内容,都会出现“资源已在使用中”错误。这种错误过去发生的频率越来越高;现在它肯定会发生。恢复复制/粘贴文件的唯一方法似乎是拔下/重新插入手机并重新开始该过程,或者在查看某些内容后等待一段不确定的时间再尝试查看其他内容。我会看看这些建议是否有帮助,因为现在比以往任何时候都更需要它们。
答案1
一个问题是用于文件传输的 MTP 协议。该协议是微软很久以前设计的,适用于具有几百 KB RAM 和几 MB 闪存的小型设备,而不是具有 100 GB 或更多 GB 和大量 RAM 的较新设备。
因此,MTP 非常有限,例如,它一次只允许一个命令,所以如果您复制某些内容,整个设备就会被阻止,即使无法列出目录中的文件。
幸运的是,Android 包含一个替代协议,该协议能够同时处理多个命令,并且该协议也更可靠:Android Debug Bridge。您需要在 Android 手机上启用开发者选项(通常在 Android 设置中点击 Android 版本号的 5 倍),然后在开发者设置中启用 Android Debug Bridge (ADB)。
在 PC 端,您需要 Android SDK 或“最小 ADB”包,对于某些设备,还需要驱动程序包来识别 adb 接口。对于 Google 设备,您可以在此处找到包含驱动程序的 ZIP 文件:Google USB 驱动程序版本 13。可以找到有关如何安装驱动程序的小教程,例如这里。安装 adb 可以参考 XDA 上的教程:如何在 Windows、macOS 和 Linux 上安装 ADB。
然后你可以使用基于 adb 的工具,如adb-sync
(不幸的是谷歌停止了开发)或其后继者better-adb-sync。还有一些 GUI 工具,例如“ADB explorer”,可以在后台使用 adb,我不知道它们有多好,我更喜欢命令行。
答案2
为了将手机照片传输到电脑,我使用同步。你把它安装在你的电脑上,然后有一个Android 应用程序。
在两台设备上设置 Syncthing 后:在手机上,将 PC 作为设备连接(如果您在同一网络上,它就会出现),然后共享您的照片文件夹。在您的 PC 上,接受共享请求,您的照片将开始传输。任一设备上的任何更改都将(默认情况下)在两台设备上同步,因此新照片将出现在您的 PC 上,而您删除的任何照片都将在两台设备上删除。(我通常将照片从共享文件夹转移到 PC 上的永久位置,以节省手机存储空间。)
设置相当简单,不需要电缆。Syncthing 占用一些资源,但你可以将其设置为仅在手机插入电源时运行,以节省电量。它可以使用数据或 WiFi 连接;如果两台设备都在同一个 WiFi 网络上,传输速度会相当快。
答案3
将文件从 Android 传输到 PC 的最快方式始终是通过adb
[Android Debug Bridge];但是,如果将视频保存到/sdcard/DCIM/Camera
,它们将与照片混合在一起,需要将其作为通配符 [ *.mp4
] 进行处理,才能复制具有该扩展名的所有文件。
先决条件
- 下载并解压
platform-tools
目录至%ProgramData%
- 打开 PowerShell/Cmd 终端: + R→打开:
powershell
||cmd
→ 确定- 添加/ :
platform-tools
$env:PATH
%PATH%
# Once executed, close and reopen terminal: Cmd /c Setx /M Path "%PATH%;C:\ProgramData\platform-tools;"
- 添加/ :
- 首先必须开启 USB 调试已启用通过开发人员选项使用
adb
:- 设置→关于手机|| →软件信息|| → 更多的
- 轻敲版本号7x 直到您现在是一名开发人员!节目
- 设置→搜索设置:
debugging
→USB 调试
4.1 复制*.jpg
||*.mp4
通配符文件
- 手机→电脑:
- 电源外壳:
# JPG [photos]: adb shell ls "/sdcard/DCIM/Camera/*.jpg" | foreach {adb pull -a -p "$_"} # MP4 [videos]: adb shell ls "/sdcard/DCIM/Camera/*.mp4" | foreach {adb pull -a -p "$_"}
- 命令:
(必须在文件保存的目录中执行)# JPG [photos]: for /F "delims=" %I in ('adb shell find "/sdcard/DCIM/Camera/*.jpg"') do (adb pull -a -p "%I") # MP4 [videos]: for /F "delims=" %I in ('adb shell find "/sdcard/DCIM/Camera/*.mp4"') do (adb pull -a -p "%I")
- 电源外壳:
- 电脑→手机:
- 电源外壳:
# JPG [photos]: ls ".\*.jpg" | foreach {adb push -a -p "$_" "/sdcard/Path/to/Folder"} # MP4 [videos]: ls ".\*.mp4" | foreach {adb push -a -p "$_" "/sdcard/Path/to/Folder"}
- 命令:
# JPG [photos]: for /F "delims=" %I in ('dir ".\*.jpg" /B /O:-D') do (adb push -a -p ".\%I" "/sdcard/Path/to/Folder/") # MP4 [videos]: for /F "delims=" %I in ('dir ".\*.mp4" /B /O:-D') do (adb push -a -p ".\%I" "/sdcard/Path/to/Folder/")
- 电源外壳:
4.2 复制目录
- 手机→电脑:
# To current directory: adb pull -a -p "/sdcard/Path/to/Folder" . # To specific directory: adb pull -a -p "/sdcard/Path/to/Folder" "D:\Path\to\Folder"
- 电脑→手机:
# From current directory: adb push -a -p "..\<current folder>" "/sdcard/Path/to/Folder" # From specific directory: adb push -a -p "D:\Path\to\Folder" "/sdcard/Path/to/Folder"
4.3 复制文件
- 手机→电脑:
# To current directory: adb pull -a -p "/sdcard/Path/to/File" . # To specific directory: adb pull -a -p "/sdcard/Path/to/File" "D:\Path\to\Folder"
- 电脑→手机:
# From current directory: adb push -a -p ".\<file>" "/sdcard/Path/to/Folder" # From specific directory: adb push -a -p "D:\Path\to\File" "/sdcard/Path/to/Folder"
5. 清理
- 从手机中删除复制的文件:
# This will not prompt for confirmation (for confirmation, remove -f) # Delete Photos and Videos: adb shell rm -f "/sdcard/DCIM/Camera/*" # Delete only Photos: adb shell rm -f "/sdcard/DCIM/Camera/*.jpg" # Delete only Videos: adb shell rm -f "/sdcard/DCIM/Camera/*.mp4"
- 禁用 USB 调试→ 断开电话连接
通常可以将 ADB 添加到 Quick Tiles 中,以便轻松启用/禁用 USB 调试,因为在不使用时保持启用状态存在数据安全问题(切勿启用无线 ADB,它不安全):
adb <pull | push>
# ADB File Transfer:
# Copy files/directories from device:
adb pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
-a: preserve file timestamp and mode
-p: display transfer progress
-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
-Z: disable compression
# Copy local files/directories to device:
adb push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
-a: preserve file timestamp and mode
-n: dry run: push files to device without storing to the filesystem
-p: display transfer progress
-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
-Z: disable compression
--sync: only push files that are newer on the host than the device
参考来源
答案4
谷歌的规格显示 Pixel 4a 具有 USB3(USB 3.1 gen 1),因此您应该能够通过 USB 获得不错的传输速度。当您说您有 USB3 电缆时,您需要检查它是否插入笔记本电脑上的 USB3 端口(有些混合了 USB2 和 USB3 - USB 3 通常为蓝色)。还要检查电缆是否真的支持 USB3,而不仅仅是一端带有 USB-C 连接器的 USB2 电缆(谷歌说他们为 Pixel 4a 提供了一条 USB2 线用于充电......)使用 Micro USB 转 USB-C 适配器之类的适配器也可能会使您的速度降到 USB2 速度。
如果 USB 连接正常,问题很可能是笔记本电脑在复制照片的同时试图读取照片以生成缩略图。这会减慢速度,并产生“文件正在使用”错误。如果您使用 Windows 资源管理器复制文件,则可以通过从“视图”功能区中选择“详细信息”视图而不是图标视图之一来避免这种情况。您可能还需要检查笔记本电脑上没有其他软件会在您插入手机时尝试复制您的照片,例如 Dropbox 或其他云存储或自动备份程序。
就我个人而言,我认为在将照片复制到笔记本电脑时,没有必要在手机上打开照片应用,也没有必要在允许 USB 访问后保持手机解锁。我的传输过程如下:
- 通过 USB 线将手机插入笔记本电脑。
- 解锁手机,选择 USB 充电通知,并将其设置为允许文件或照片传输。
- 在笔记本电脑上打开 Windows 资源管理器,在我的电脑中找到手机,然后导航到照片所在的 DCIM 文件夹。
- 将 Windows 资源管理器视图设置为“详细信息”并等待列表填充。
- 将我想要的照片拖放到相应的笔记本电脑文件夹中(通过文件名或文件日期识别它们)。
您可能要研究的另一个选项是使用 WiFi 传输照片。如果您能够在笔记本电脑上共享文件夹,则可以使用 Android 文件管理器应用程序(如 Cx File Explorer)将照片从手机传输到该文件夹。理论上,这比 USB3 慢,但如果您的 USB 连接有问题,可能会给您带来更好的效果。以这种方式从手机推送照片还可以避免其他 Windows 应用程序同时尝试读取照片的问题。
另一个可能的解决方法是,如果你在手机上使用 Google Photos 应用并允许其备份照片,则只需转到https://photos.google.com/在您的笔记本电脑上下载它们。您可以选择所需的文件并批量下载。除非您的笔记本电脑的互联网连接速度非常快,否则这可能比其他选项慢,但不需要设置任何软件。