Aunque no está completamente documentado, a partir de 27.0.1 aka platform tools r27 (no antes) se puede utilizar lo siguiente:
adb push --sync local/ device/
# adb pull --sync -a device/. local/
(observe el punto final en adb pull
sin eso terminarías con local/device/*
, ver aquí ; también el -a
sólo es necesario aquí para mantener intactas las marcas de tiempo de los archivos)
No está directamente relacionado con adb push
: no se conservan los permisos de los archivos, lo que probablemente se deba al sistema de archivos utilizado. Los archivos transferidos a la tarjeta SD interna siempre tendrán el valor 0660
y en la tarjeta externa a 0771
que ni siquiera pude cambiar con adb shell chmod
en el propio dispositivo (aunque tampoco recibí ningún error al intentarlo).
Si necesita más opciones, tal vez las conozca en rsync
(por ejemplo --delete
o --exclude
), también puedes echar un vistazo al script de Python mejor-adb-sync .
Actualización: haciendo algunas pruebas parece --sync
simplemente se ignora con adb pull
aunque no se produzca ningún error: se han sobrescrito los archivos más nuevos del objetivo. No estoy seguro de si la implementación está prevista, pero con la r27 saliendo en 2018 no apostaría por ello. Con push
Sin embargo, funciona como se anuncia.