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).
@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
--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.
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 /
ActualizarPrefiero 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.
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/
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:
a las 5 am,
cuando el teléfono está conectado a un Wi-Fi específico y
Respuestas:
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.)
entra ahí. Suponiendo que tiene un dispositivo mtp, esto debería funcionar:
Encuentre dónde desea transferir los archivos también y luego sincronícelos
Opciones de Rsync
--inplace
: Recomiendo encarecidamente usar--inplace
sin 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 .--verbose
,--progress
,--recursive
pero son bastante auto-documentado.--omit-dir-times
--no-perms
son necesarios porque mtp no es compatible con eso.fuente
--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ó.--ignore-existing
? Eso es solo perder la redundancia. Siempre podría, lo--size-only
que reduce la sincronización con el listado del directorio y no con las sumas de verificación. Voy a agregar el--omit-dir-times
y--no-perms
porque eso suena útil, y parece que recuerdo haber recibido un error al final sobre eso.--ignore-existing
ella intenta sincronizar todos los archivos. Me gusta tu--size-only
sugerencia Lo intentaré la próxima vez.~/Videos/ ./
Usando sshelper
Encontré esta solución:
Edite ssh-config local, para alterar el puerto predeterminado para el host "android"
Actualizar
Prefiero ya que recibes muchas advertencias ya que establecer permisos y marcas-rvlc
de-a
tiempo no funciona. La opción-c
hace 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-only
de-a
tiempo no funciona. La opción--size-only
hace 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.
fuente
rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/
( stackoverflow.com/a/4630407/399105 )--size-only
sería la solución más rápida. Sin embargo, no es tan-c
192.168.1.5
que 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/
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:
fuente