3 votes

Pourquoi "tar -czh" produit une archive corrompue mais "tar -ch | gzip" fonctionne correctement?

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

entrer la description de l'image ici

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 ou dos2unix. Voir les détails sous le titre ADB dans ma réponse à android.stackexchange.com/a/208114/218526

1 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

1voto

alecxs Points 3105

exec-out a mélangé stdout et stderr

dans le premier exemple, le message stderr de tar "suppression du '/' initial des noms des membres" est redirigé vers le fichier cible

dans le deuxième exemple, seul le stdout de tar est redirigé vers gzip

pour éviter un silence stderr brisé, consultez le lien dupliqué

0 votes

*2ème gzip stdout + stderr toujours mélangés (mais il n'y en a pas)

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