无法使用 Rsync 同步到 mtp 安装的 android

无法使用 Rsync 同步到 mtp 安装的 android

我尝试将 ogg-audio-files 同步到我的 android 设备,如下所示:

rsync -av piano /run/user/1000/gvfs/mtp\:host\=%5Busb%3A002%2C005%5D/SanDisk/Music/

===> rsync -av piano/ /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/SanDisk/Music/
sending incremental file list
rsync: failed to set times on "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/SanDisk/Music/.": Operation not supported (95)
...
foo-bar/one.ogg
...
rsync: mkstemp "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/SanDisk/Music/foo-bar/one.ogg.0gzy9t" failed: Operation not supported (95)

但仅创建了目录。没有传输任何文件:

===> find /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/SanDisk/Music/piano

/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/SanDisk/Music/piano/foo-bar

如何在我的 Android 设备和 Ubuntu PC 之间进行 rsync?

我找到了一个解决方法:我从 Android 设备上拔下微型 SC 卡,并将其插入笔记本电脑的 SD 卡读卡器中。但如果有一个不需要我这样做的解决方案就好了。

答案1

不确定你是否需要 root 设备才能实现此功能(我只运行 root 版 LineageOS,不熟悉其他版本)。在 LineageOS 中,/系统/xbin/rsync默认存在,否则,将手机连接到电脑并启动终端,然后在电脑的终端中执行以下所有命令:

sudo apt 安装 wget adb
wget -O rsync.bin http://github.com/pts/rsyncbin/raw/master/rsync.rsync4android
adb 推送 rsync.bin /data/local/tmp/rsync
adb shell chmod 755 /data/local/tmp/rsync
adb shell cp /data/local/tmp/rsync /sdcard/rsync.bin
adb shell /data/local/tmp/rsync --version
  • 创建配置文件
adb shell ‘exec >/sdcard/rsyncd.conf && echo gid = 0 && echo uid = 0 && echo 地址 = 127.0.0.1 && echo 端口 = 1873 && echo “[root]” && echo 路径 = / && echo 使用 chroot = false && echo 只读 = false’
  • 在设备上启动 rsync 守护进程
# 在普通 Android 上
adb shell /data/local/tmp/rsync --daemon --no-detach --config=/sdcard/rsyncd.conf --log-file=/proc/self/fd/2
LineageOS 上的 #
adb shell rsync --daemon --no-detach --config=/sdcard/rsyncd.conf --log-file=/proc/self/fd/2
  • 在另一个 shell 窗口中,启动端口转发
adb 转发 tcp:6010 tcp:1873
  • 快乐复制
rsync -av --progress --stats --partial rsync://localhost:6010/root/sdcard/DCIM 。

答案2

对于几个简单的解决方案,您可以尝试以下其中之一:

  1. (我更喜欢)在手机上安装 FTP 服务器,然后使用 GUI 程序(如 Filezilla)传输文件。我在 2.4G 网络上的传输速率一直很好(6M+)。
  2. 使用 AirDroid 之类的服务。它不太适合处理大文件(4G 以上),但处理小文件就没问题了。不过免费版每月只允许 200M。

答案3

今天我也更新了手机上的音乐。我可以跑步

 rsync -vrih --omit-dir-times --no-perms piano /run/user/1000/gvfs/mtp\:host\=%5Busb%3A002%2C005%5D/SanDisk/Music/

而且效果很慢。


还有其他方法--inplace可以加快速度,但我得到了操作不受支持 (95)错误也存在。

答案4

rsync对我来说不起作用cp。它们都失败了,并出现以下错误:

cp: cannot create regular file

解决方案:复制

额外好处:它已经包含在 Ubuntu 系统中。

使用示例:

gio copy <src file> <destination mtp folder>

这对于文件夹不起作用,但可以使用:

gio copy source_folder/* <dest> will get every file in a folder.

相关内容