我尝试安装尽可能少的程序。但我似乎找不到可靠的方法将文件从我的电脑复制/移动到我的 Android 智能手机。我的两部小米设备都使用 Debian 和 LineageOS。
每次我使用时cp
,mv
甚至rsync
都会收到错误,例如“输入输出错误”或类似的错误。
我用过韓國和Android 文件传输我对它们两个都感到有问题。
我是否遗漏了某些东西、某些驱动程序或者类似的东西?
我记得过去当我使用文件管理器时我没有遇到这些问题,但老实说,我不想安装文件管理器只是为了能够正确地将文件从我的电脑传输到我的手机。
我读到过使用 MTP 大多是碰运气。但文件管理器如何才能正确传输文件?
答案1
将文件从 Android 传输到 PC 的最快方式始终是通过adb
[Android 调试桥]
先决条件
安装平台工具:
- Debian:
- 包管理器:
sudo apt update; sudo apt install adb
- 已下载
.zip
:# Create and enter working directory: mkdir android; cd android # Download Platform Tools and unzip: wget -c https://dl.google.com/android/repository/platform-tools-latest-linux.zip unzip platform-tools-latest-linux.zip # Enter directory: cd platform-tools # Verify: ./adb version # To make permanent, edit user's shell .*rc file export PATH=/path/to/platform-tools:$PATH
- 包管理器:
- 视窗:
- 下载并解压
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;"
- 添加/ :
- 下载并解压
- Debian:
- 要使用
adb
,使能够通过设备上的 USB 调试开发人员选项:
- 设置→搜索设置:
build
→版本号 - 轻敲版本号7x 直到您现在是一名开发人员!节目
- 设置→搜索设置:
debugging
→USB 调试→ 开启
- 设置→搜索设置:
- 验证设备是否
authorized
利用adb
:-
adb devices
- 在设备上批准 USB 调试访问请求
-
4.1 复制目录
手机→电脑:
# Linux: # To current directory: adb pull -a -p "/sdcard/Path/to/Folder" . # To specific directory: adb pull -a -p "/sdcard/Path/to/Folder" "/path/to/folder" # Windows: # 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"
电脑→手机:
# Linux: # From current directory: adb push -a -p "../<current folder>" "/sdcard/path/to/folder" # From specific directory: adb push -a -p "/path/to/folder" "/sdcard/path/to/folder" # Windows: # To 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.2 复制文件
- 手机→电脑:
# Linux: # To current directory: adb pull -a -p "/sdcard/path/to/file" . # To specific directory: adb pull -a -p "/sdcard/path/to/file" "/path/to/folder" # Windows: # 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"
- 电脑→手机:
# Linux: # From current directory: adb push -a -p "./<file>" "/sdcard/Path/to/Folder" # From specific directory: adb push -a -p "/path/to/file" "/sdcard/path/to/folder" # Windows: # 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"
4.3 复制通配符扩展
- 手机→电脑:
- 电源外壳:
# Replace .ext with extension: adb shell ls "/sdcard/file/path/*.ext" | foreach {adb pull -a -p "$_"}
- 命令:
(必须在文件保存的目录中执行)# Replace .ext with extension: for /F "delims=" %I in ('adb shell find "/sdcard/file/path/*.ext"') do (adb pull -a -p "%I")
- 电源外壳:
- 电脑→手机:
- 电源外壳:
# Replace .ext with extension: ls ".\*.ext" | foreach {adb push -a -p "$_" "/sdcard/Path/to/Folder"}
- 命令:
# Replace .ext with extension: for /F "delims=" %I in ('dir ".\*.ext" /B /O:-D') do (adb push -a -p ".\%I" "/sdcard/Path/to/Folder/")
- 电源外壳:
清理
- 禁用 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
参考来源
答案2
MTP 通常适用于较小的文件集合,并且文件大小不是太大(以 GB 为单位)。根据互联网研究,(关键字 MTP 最大文件大小)MTP 的文件大小上限为 4GB。我见过运行可靠的方法是 adb push/pull,但它不太容易处理,因为您需要知道您尝试 cp 的确切路径。示例:
adb pull /storage/9C33-6BBD/Adownload/widget_2_2023-04-01.json
或者
adb push widget_2_2023-04-01.json /sdcard/
或者,您可以使用其他文件传输方式,例如众多云存储之一、托管您自己的云存储,或使用采用文件传输协议(如 FTP)的文件管理器与某个 FTP 服务器进行通信。我过去发现的另一种方便的方法是使用 Android 上的 FTP 服务器(外部链接到 F-DROID) 然后使用 FileZilla 等 FTP 客户端复制文件。