Cómo sincronizar a Android

50

¿Cómo puedo conectarme a mi dispositivo Android para reproducir música rsync (u otras cosas)?

guettli
fuente
Recomiendo editar esto para explicar exactamente qué acción produjo ese mensaje de error. (Por ejemplo, si es la salida de un comando, podría incluir el comando completo).
Eliah Kagan
1
quizás interesante: Syncopoli
DJCrashdummy
@DJCrashdummy si escribe su comentario como respuesta, lo votaré.
guettli
@guettli escribí esto solo como comentario, porque Syncopoli es solo un cliente rsync (por ahora).
DJCrashdummy

Respuestas:

50

Realmente usando rsync sobre MTP / usb

Es más fácil de lo que todos dicen, primero note que cuando GVFS monte el soporte MTP, estará disponible bajo. Puede forzar esto abriendo el teléfono en un navegador de archivos gráfico (thunar / nautilus / etc.)

/run/user/$UID/gvfs

entra ahí. Suponiendo que tiene un dispositivo mtp, esto debería funcionar:

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

Encuentre dónde desea transferir los archivos también y luego sincronícelos

$ 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/ ./

Opciones de Rsync

  • --inplace: Recomiendo encarecidamente usar --inplacesin el cual mtp puede querer copiar un archivo nuevo y luego cambiarle el nombre al anterior. Eso puede resultar en copiar el archivo a la tarjeta SD dos veces: una vez para que la transferencia de mtp a la tarjeta SD, y otra vez porque el controlador MTP no sea compatible (mv), puede (cp / rm) bajo el capó para estar seguro .
  • lea man rsync para una descripción de --verbose, --progress, --recursivepero son bastante auto-documentado.
  • --omit-dir-times --no-perms son necesarios porque mtp no es compatible con eso.
Evan Carroll
fuente
3
Agrego las siguientes opciones --omit-dir-times --no-perms --ignore-existing. Rsync no puede establecer marcas de tiempo de directorio sobre MTP. Estoy bastante seguro de que "sin permisos" es el valor predeterminado, pero me gusta especificarlo. Ignorar los archivos existentes le permite continuar donde lo dejó.
Stephen Ostermiller
44
¿Por qué --ignore-existing? Eso es solo perder la redundancia. Siempre podría, lo --size-onlyque reduce la sincronización con el listado del directorio y no con las sumas de verificación. Voy a agregar el --omit-dir-timesy --no-permsporque eso suena útil, y parece que recuerdo haber recibido un error al final sobre eso.
Evan Carroll
Rsync tiene problemas con la configuración de fecha y hora más MTP adecuadamente para mí, así que sin --ignore-existingella intenta sincronizar todos los archivos. Me gusta tu --size-onlysugerencia Lo intentaré la próxima vez.
Stephen Ostermiller
3
También uso poner la barra diagonal final en el destino para no tener que usar una estrella en la fuente:~/Videos/ ./
Stephen Ostermiller
También tuve que agregar '--delete-after' para eliminar los archivos que ya había eliminado de la carpeta de música en la computadora. Entonces, el comando completo es: rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --ignore-existente --delete-after / home / user / MUSIC /.
happyskeptic
39

Usando sshelper

Encontré esta solución:

  • Instale sshelper en el dispositivo (no se necesita un dispositivo rooteado, disponible en google play market)
  • En mi WLAN, el dispositivo se llama "android". Pero puede usar la IP, si no puede darle al dispositivo un nombre de host.

Edite ssh-config local, para alterar el puerto predeterminado para el host "android"

.ssh/config
host android
    Port 2222
  • Inicie sshelper en el dispositivo.
  • Conecte el dispositivo Android a su WLAN.

rsync -rvlc Music android: SDCardLink /

Actualizar Prefiero ya que recibes muchas advertencias ya que establecer permisos y marcas -rvlcde -atiempo no funciona. La opción -chace que la segunda sincronización sea mucho más rápida.

Prefiero ya que recibes muchas advertencias ya que establecer permisos y marcas -rvl --size-onlyde -atiempo no funciona. La opción --size-onlyhace que la segunda sincronización sea mucho más rápida.

Desafortunadamente, las aplicaciones de música necesitan algo de tiempo para ver los nuevos archivos. Reiniciar el dispositivo ayuda.

guettli
fuente
13
Una forma alternativa de usar rsync con SSHelper sin tener que modificar .ssh / config: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin
1
@guettli, ¿qué opción de suma de comprobación -c para sincronizar archivos de música? esto puede disminuir significativamente
EdiD
55
@guettli de rsync man: -c, --checksum. Sin esta opción, rsync usa una "verificación rápida" que (por defecto) verifica si el tamaño y la hora de la última modificación de cada archivo coinciden entre el remitente y el receptor. Esta opción cambia esto para comparar una suma de verificación de 128 bits para cada archivo que tiene un tamaño coincidente. La generación de la suma de verificación significa que ambas partes gastarán una gran cantidad de E / S de disco leyendo todos los datos en los archivos en la transferencia, por lo que esto puede ralentizar las cosas significativamente.
EdiD
44
@guettli Creo que esa --size-onlysería la solución más rápida. Sin embargo, no es tan -c
fácil
2
Utilicé la conexión USB y obtuve transferencias mucho más rápidas. El siguiente comando funcionó para mí después de ejecutar SSHelp y mostraba una IP 192.168.1.5que podría ser diferente cada vez:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
Adicto a la materia orgánica el
3

La copia de seguridad de rsync para Android se puede configurar para sincronizar en reversa, es decir, desde un host Linux a un dispositivo Android.

Y con la ayuda de LlamaLab Automate, uno puede configurar el dispositivo Android para que se sincronice automáticamente en condiciones específicas, por ejemplo:

  1. a las 5 am,
  2. cuando el teléfono está conectado a un Wi-Fi específico y
  3. cuando se está cargando
Alexander Shcheblikin
fuente