如何与Android同步


50

如何连接到Android设备以同步音乐(或其他东西)?


我建议对其进行编辑,以确切说明产生该错误消息的操作。(例如,如果是命令的输出,则可以包含完整的命令。)
Eliah Kagan 2013年

1
可能很有趣:Syncopoli
DJCrashdummy18年

@DJCrashdummy如果您将评论写为答案,我将对其进行投票。
guettli

@guettli我只将此写为评论,因为Syncopoli只是一个rsync客户端(目前)。
DJCrashdummy18年

Answers:


50

实际在MTP / USB上使用rsync

这比每个人都说起来容易,首先请注意,当GVFS挂载MTP挂载时,它将在下面可用。您可以通过在图形文件浏览器(thunar / nautilus / etc)中打开电话来强制执行此操作

/run/user/$UID/gvfs

进去 假设您有一台mtp设备,这应该可以工作:

$ cd /run/user/$UID/gvfs/mtp*

也找到您要传输文件的位置,然后将它们重新同步到该文件

$ cd SanDisk\ SD\ card/Movies/

$ pwd # prints "/run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C096%5D/SanDisk SD card/Movies"

$ rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace ~/Videos/ ./

Rsync选项

  • --inplace:我强烈建议您使用--inplacemtp,如果不希望将其复制到新文件,然后将其重命名为旧文件。这可能会导致两次将文件复制到SD卡:一次是将mtp传输到SD卡,另一次是因为MTP驱动程序可能不支持(mv),所以在安全的情况下可能(cp / rm) 。
  • 阅读man rsync的的描述--verbose--progress--recursive但他们非常自我说明。
  • --omit-dir-times --no-perms 是必需的,因为mtp不支持。

3
我添加以下选项--omit-dir-times --no-perms --ignore-existing。Rsync无法通过MTP设置目录时间戳。我很确定默认是“无权限”,但是我想指定它。忽略现有文件可以使其从上次中断的地方继续接收。
Stephen Ostermiller '16

4
为什么--ignore-existing呢 那只是失去冗余。您总是--size-only可以将同步减少到目录列表,而不是校验和。我将添加--omit-dir-times和,--no-perms因为这听起来很有用,而且我似乎还记得最后出现了一个错误。
埃文·卡罗尔

Rsync在为我正确设置MTP上的时间戳时会遇到问题,因此如果没有--ignore-existing,Rsync 会尝试同步所有文件。我喜欢你的--size-only建议。下次我会尝试的。
Stephen Ostermiller '16

3
我还使用斜线在目标位置上,因此不必在源代码上使用星号:~/Videos/ ./
Stephen Ostermiller

我还必须添加'--delete-after'才能删除我已经从计算机上的音乐文件夹中删除的文件。因此完整的命令是:rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --ignore-existing --delete-after / home / user / MUSIC /。
happyskeptic

39

使用sshelper

我找到了这个解决方案:

  • 在设备上安装sshelper(无需root设备,可从Google Play市场购买)
  • 在我的WLAN中,该设备称为“ android”。但是,如果您不能为设备指定主机名,则可以使用IP。

编辑本地ssh-config,以更改主机“ android”的默认端口

.ssh/config
host android
    Port 2222
  • 在设备上启动sshelper。
  • 将android设备连接到您的WLAN。

rsync -rvlc音乐android:SDCardLink /

更新资料 我宁愿-rvlc这样-a做,因为设置权限和时间戳不起作用会收到很多警告。该选项-c使第二次同步快得多。

我宁愿-rvl --size-only这样-a做,因为设置权限和时间戳不起作用会收到很多警告。该选项--size-only使第二次同步快得多。

不幸的是,音乐应用需要一些时间才能看到新文件。重新启动设备会有所帮助。


13
无需修改.ssh / config即可在SSHelper中使用rsync的另一种方法:rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/stackoverflow.com/a/4630407/399105
bmaupin 2014年

1
@guettli -c校验和选项用于同步音乐文件吗?这可能会大大放慢速度
EdiD

5
来自rsync man的@guettli:-c,--checksum。如果没有此选项,rsync将使用“快速检查”(默认情况下),以检查每个文件的大小和上次修改时间在发送方和接收方之间是否匹配。此选项将其更改为比较每个具有匹配大小的文件的128位校验和。生成校验和意味着双方将花费大量磁盘I / O读取传输中文件中的所有数据,因此这会大大降低速度。
EdiD '16

4
@guettli我想那 --size-only将是最快的解决方案。但是,保存起来却不如-c
niels

2
我使用USB网络共享,传输速度更快。在我运行SSHelp之后,以下命令为我工作,它显示的IP 192.168.1.5每次可能都不同:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
Organic Addict

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.