Je suis en train de sauvegarder un répertoire à partir d'un téléphone via adb
.
Lorsque j'utilise la commande suivante, j'obtiens une archive corrompue :
adb exec-out "tar -czh /sdcard/DCIM" > backup.tar.gz
Mais avec la commande suivante, l'archive est correcte :
adb exec-out "tar -ch /sdcard/DCIM | gzip" > backup.tar.gz
Les deux fichiers tar font 48,8 Mo avec une différence d'environ 200 ko. L'archive corrompue est plus petite.
Je utilise adb
dans la ligne de commande Windows. Il est nécessaire de recevoir la sortie sous forme de données compressées pour éviter les conversions de sauts de ligne. Les deux commandes doivent fournir des données compressées.
Ma question est spécifiquement pourquoi ces deux commandes, qui devraient être identiques, produisent un résultat différent.
Le téléphone exécute LineageOS 14.1 et est connecté à un ordinateur exécutant Windows 10.
0 votes
Les caractères terminaux non désirés (imprimables ou non imprimables) peuvent être inclus dans la sortie, ce qui corrompt l'archive. Utilisez
stty raw
oudos2unix
. Voir les détails sous le titre ADB dans ma réponse à android.stackexchange.com/a/208114/2185261 votes
Y a-t-il un moyen de désactiver la redirection de stderr lors de l'utilisation de
adb exec-out
pour éviter de tels problèmes?0 votes
Est-ce que cela répond à votre question ? ADB pull stops after first error
1 votes
FWIW, J'ai également essayé les deux commandes (1 dossier contenant 1 fichier image) et les deux fichiers ont été considérés comme des archives invalides par 7zip. Les ouvrir avec Notepad++ (oui, pas le meilleur outil, mais fonctionnait néanmoins) les montrait en binaire sans texte lisible/sortie d'erreur ajoutée.
0 votes
@alecxs L'archive telle que décrite dans la question qui n'était pas corrompue fonctionne bien et les images sont bien formées.