3 votes

Un moyen raisonnable de copier des fichiers sur une nouvelle carte SD à l'aide d'un Mac

J'ai un Mac et je veux transférer environ 30 Go de données sur une carte SD plus grande pour l'utiliser avec un nouveau téléphone Android.

Le téléphone en question est un Galaxy Stratosphere II.

Il ne semble pas y avoir de moyen direct de le faire.

Jusqu'à présent, j'ai essayé

  • Copie à l'aide de Android File Transfer, le téléphone étant connecté par USB. Cela semble fonctionner, à environ 10 Mo/s, mais ne conserve pas l'horodatage des fichiers, ce qui est inacceptable pour moi. Étant donné que l'application ne semble fournir qu'un accès par glisser-déposer, je ne pense pas qu'il y ait un moyen de l'utiliser pour copier des fichiers tout en conservant les horodatages.
  • Copie à l'aide de scp -pr via SSHDroid fonctionnant sur le téléphone, via un autre réseau wifi. Cela a également fonctionné, en conservant les informations d'horodatage, mais c'était terriblement lent (<1 Mo/s).
  • Je branche la SDCard sur mon MacBook Pro. Cela ne fonctionne pas : ce n'est pas un système de fichiers reconnu. J'ai également essayé d'utiliser un lecteur de carte SD tiers, avec le même résultat.
  • Utilisation de adb push pour copier des fichiers via une connexion USB. Cela ne fonctionne pas non plus, même lorsque j'ajoute /. à la fin, comme suggéré par cette réponse .

simple-mtpfs pourrait être une option, mais les instructions de construction données font référence à des exécutables inexistants.

Alt Mounter Il semble également qu'il fasse ce que je veux, mais il est indiqué comme étant "***EXTREMELY BETA***" et n'est donc pas quelque chose que je préférerais confier à mes fichiers importants.

Lorsque j'ai mis à niveau une autre carte SD, j'ai expérimenté la copie de fichiers sur la carte SD dans un lecteur connecté via une VM Linux. Cela semblait fonctionner mais s'arrêtait mystérieusement après avoir copié une fraction des données. Je pense que cette fois-là, j'ai fini par utiliser scp et le laisser fonctionner pendant un jour ou deux.

Je continue à creuser la question, mais peut-être que quelqu'un peut me faire gagner du temps. Existe-t-il un moyen simple de procéder ?

1voto

Ali Points 553

OSX et Android fournissent tous deux des utilitaires POSIX de base, c'est pourquoi j'ai fini par me tourner vers la vieille école sur ce point :

$ tar czv "$PATH_TO_ORIGINAL_SDCARD" | split -b 2048m - sdcard-

Cette commande crée des morceaux de la taille de 2 Go d'une archive du contenu de la carte SD, avec des noms tels que sdcard-aa , sdcard-ab et ainsi de suite. La division en 2 Go est nécessaire car Android File Transfer ne peut copier que des fichiers d'une taille inférieure ou égale à 4 Go.

J'ai ensuite copié les fichiers sur le téléphone en utilisant (surprise !) Android File Transfer et je les ai recombinés et désarchivés dans Terminal Emulator* en utilisant cette commande :

$ cat sdcard-* | tar xzv

* : c'était en fait un peu plus compliqué que ça. Des détails sanglants :

Donc en fait, Android n'a pas n'est pas vraiment livré avec les utilitaires POSIX de base, ou du moins si c'est le cas, ils ne sont pas facilement accessibles à l'émulateur de terminal.

Je pensais que c'était le cas parce que SSHDroid fournit ces utilitaires via busybox . Je soupçonne qu'Android ne permet pas aux processus d'exécuter des fichiers que leur utilisateur ne possède pas ; cela expliquerait pourquoi il n'y a pas d'application disponible qui installe busybox pour les téléphones non enracinés.

busybox est un utilitaire qui peut exécuter un grand nombre de commandes POSIX, en fonction du nom avec lequel il est appelé. Les gens s'arrangent pour qu'il soit appelé avec des noms autres que busybox en créant liens symboliques avec des noms comme, par exemple, tar .

Cependant, il s'avère qu'il ist Il est possible d'installer busybox dans votre propre répertoire d'accueil de l'émulateur de terminal. C'est donc ce que j'ai fait. Etapes :

  • Prenez le fichier busybox-android de le projet éponyme sur github .
  • Transférez-le sur votre appareil (voir ci-dessus !). Placez-le dans un endroit public auquel vous aurez accès depuis une session de l'émulateur de terminal. Appelez-le simplement busybox .
  • Démarrez une session de l'émulateur de terminal. Créez un répertoire ~/bin et copier le busybox de l'endroit public où vous l'avez mis dans ce nouveau répertoire.
    • Depuis le cp n'est pas disponible dans une session de l'émulateur de terminal ( !), procédez comme suit : cat $PATH_TO_BUSYBOX/busybox > ~/bin/busybox
  • Maintenant cd ~/bin et créer un lien symbolique : ln -s busybox tar .
  • Maintenant, vous devriez être en mesure de cd /storage/extSdCard/ et y concaténer et extraire le contenu de vos fichiers d'archive en utilisant cat $PATH_TO_ARCHIVE/sdcard-* | ~/bin/tar xzv .
  • Il sera extrait avec les répertoires préfixes qui étaient le chemin vers le contenu de la carte SD lorsque vous avez créé l'ensemble d'archives, par ex. /Volumes/oldphone/ . Maintenant, déplacez tout ce qui se trouve dans ce sous-répertoire (que nous appellerons $OLD_SDCARD_CONTENTS ) à la racine de votre carte SD actuelle.
    • sh (l'interpréteur de commandes utilisé par l'émulateur de terminal) ne semble pas avoir de moyen de sélectionner tous les fichiers cachés dans un répertoire, donc j'ai exécuté bash pour le faire. Sous bash, mv $PATH_TO_FILES/.[^.]* $DEST déplacera tous les fichiers cachés. Rappelez-vous que vous devez accéder bash via un lien symbolique vers busybox ou faites juste cette partie via ssh (c'est en fait ce que j'ai fait).

Ouf ! Content que ce soit terminé. J'espère vraiment que je ne finirai pas par accepter cette réponse ; il devrait y avoir un moyen beaucoup plus simple de faire tout cela.

Bien sûr, j'aurais pu simplement désarchiver l'archive dans un ssh depuis mon ordinateur, mais cela m'aurait obligé à faire tourner mon ordinateur pendant tout le temps nécessaire. En plus, comme, bien sûr busybox devrait être disponible dans l'émulateur de terminal.

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