8 votos

adb push: sincronizar pero no copiar

adb push parece empujar todo a la carpeta dest independientemente de sus estados cambiados/no cambiados. Así que se pierde mucho tiempo. ¿Es posible sincronizar en lugar de copiar (es decir, a rsync en lugar de cp )?

Ya veo. adb tiene un sync opción, pero no estoy muy seguro de si es relevante o no.

9voto

wei chen Puntos 31

Utilizarías adb push --sync por ejemplo:

adb push --sync /home/abc/ /sdcard/abc

de adb --help :

file transfer:
 push [--sync] LOCAL... REMOTE
     copy local files/directories to device
     --sync: only push files that are newer on the host than the device

pero parece que esta función está disponible para la versión relativa más reciente ADB como la versión 1.0.40 .

4voto

Rebecca Puntos 18

Aunque este responder no es exactamente una explicación sobre el uso de adb sync puede ser útil cuando su objetivo principal es sincronizar archivos utilizando adb .

Le puede interesar adb-sync que es un script de Python que utiliza adb para sincronizar archivos de tu ordenador a tu dispositivo Android o viceversa.

Ejemplo ( ordenador -> dispositivo ):

adb-sync /home/abc/ /sdcard/abc

Ejemplo ( ordenador <- dispositivo ):

adb-sync --reverse /sdcard/abc /home/abc/ 

Si los archivos que faltan en el origen deben eliminarse en el destino, debe especificar --delete .

1 votos

Este script de python funciona solo para linux. para Windows se puede instalar bash y probar winadb-sync

2voto

Farhan Masood Puntos 11

"adb sync" no es relevante en tu caso. Se utiliza para sincronizar la partición del sistema a su dispositivo adb conectado. Sólo funcionará si su teléfono está rooteado y primero tiene que poner la partición del sistema en modo de escritura. Por defecto está en modo de sólo lectura. Por favor, siga este artículo para más detalles: https://medium.com/@yigitpirildak/syncing-aosp-build-changes-using-adb-sync-885ce12e5cc7

0voto

theebugger Puntos 1

He hecho un script en python que funciona a las mil maravillas para Windows.
Copia todos los archivos de la carpeta actual al dispositivo (la ruta se puede editar en el código) excepto los archivos que ya están presentes allí.
Opcionalmente, se puede utilizar la opción -l para listar los archivos con el tamaño de copia antes de la copia real.

import os
import subprocess
import sys
files=os.listdir('.')
files=set(files)
devPath="/path/on/adb/device"
cmd="adb shell ls -a " + devPath 
deviceFiles=subprocess.check_output(cmd,shell=True).decode().split('\r\r\n')
deviceFiles=set(deviceFiles)
filesToCopy=files-deviceFiles
size=0
count=0
justList=False
if (len(sys.argv)>1 and sys.argv[1]=='-l'):
    justList=True
for f in filesToCopy:
    count+=1
    size+=os.path.getsize(f)
    if(not justList):
        cmd="adb push "+str(f)+" "+devPath+str(f)
        os.system(cmd)
    print(str(count) + ' ' + str(f))
if(not justList):
    os.system("adb shell rm "+str(devPath)+"/"+sys.argv[0])
print(str(size/1000000) + " Mb")

-2voto

bigbadonk420 Puntos 1698

Cuando se ejecuta adb sin ningún comando, se obtiene una lista de posibles comandos, y aquí está:

adb sync [ <directory> ]     - copy host->device only if changed
                             (see 'adb help all')

A mí me parece bastante relevante :)

3 votos

¿Podría dar un ejemplo de cómo usar esto? Digamos que si quiero sincronizar /home/abc/ en el PC a /sdcard/abc/ en el dispositivo.

0 votos

¿Has probado adb help all ?

3 votos

Sí, puede sincronizar la partición de sistema/datos. Pero yo sólo quiero sincronizar una carpeta en la tarjeta SD. ¿Sabes cómo hacerlo?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X