8 votes

adb push : synchronisation mais pas de copie

adb push semble pousser tout dans le dossier dest sans tenir compte de leur état modifié ou non. Cela fait donc perdre beaucoup de temps. Est-il possible de synchroniser plutôt que de copier (c'est à dire de rsync plutôt que cp ) ?

Je vois. adb a un sync mais je ne suis pas sûr qu'elle soit pertinente ou non.

9voto

wei chen Points 86

Vous utiliseriez adb push --sync par exemple :

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

mais il semble que cette fonction soit disponible pour des versions ADB relativement plus récentes, comme la version 1.0.40 .

4voto

CodeFox Points 141

Bien que cette 回答 n'est pas exactement une explication sur l'utilisation de adb sync il peut être utile lorsque votre objectif principal est de synchroniser des fichiers en utilisant adb .

Vous pourriez être intéressé par adb-sync qui est un script Python qui utilise adb pour synchroniser les fichiers de votre ordinateur vers votre appareil Android ou vice versa.

Exemple ( ordinateur -> dispositif ):

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

Exemple ( ordinateur <- dispositif ):

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

Si les fichiers manquants sur la source doivent être supprimés sur la cible, vous devez spécifier --delete .

1 votes

Ce script python ne fonctionne que pour linux. pour Windows, on peut installer bash et essayer winadb-sync

2voto

Farhan Masood Points 21

"adb sync" n'est pas pertinent dans votre cas. Il est utilisé pour synchroniser la partition système à votre périphérique adb connecté. Cela ne fonctionnera que si votre téléphone est enraciné et que vous devez d'abord mettre la partition système en mode écriture. Par défaut, elle est en mode lecture seule. Veuillez suivre cet article pour plus de détails : https://medium.com/@yigitpirildak/syncing-aosp-build-changes-using-adb-sync-885ce12e5cc7

0voto

theebugger Points 1

J'ai créé un script python qui fonctionne comme un charme pour Windows.
Il copie tous les fichiers du dossier courant vers le périphérique (le chemin peut être modifié dans le code) sauf les fichiers déjà présents.
Optionnellement, le commutateur -l peut être utilisé pour lister les fichiers avec la taille de la copie avant la copie réelle.

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

pzkpfw Points 2270

En cours d'exécution adb sans aucune commande, vous obtenez une liste de commandes possibles, et la voici :

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

Cela me semble assez pertinent :)

3 votes

Pourriez-vous donner un exemple d'utilisation ? Disons que je veux synchroniser /home/abc/ sur le PC avec /sdcard/abc/ sur l'appareil.

0 votes

Avez-vous essayé adb help all ?

3 votes

Oui. Il peut synchroniser la partition système/données. Mais je veux juste synchroniser un dossier sur la carte SD. Savez-vous comment faire ?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X