我尝试将 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
对于几个简单的解决方案,您可以尝试以下其中之一:
- (我更喜欢)在手机上安装 FTP 服务器,然后使用 GUI 程序(如 Filezilla)传输文件。我在 2.4G 网络上的传输速率一直很好(6M+)。
- 使用 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.