|
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonjour à toutes et à tous
J'ai des gigas à copier depuis mon disque dur vers un disque externe connecté en USB. Et avant de copier, je dois vérifier des trucs pour savoir si je dois vraiment copier ou non. Pour l'instant, la ligne de mon code python qui copie un répertoire shutil.copytree(rep.chemin,rep.distant().chemin,1) où sans surprise, rep.chemin désigne le chemin du répertoire local et rep.distant().chemin désigne le chemin du répertoire vers lequel il faut copier. Pas que ce code ne marche pas, mais disons que le taux de transfère est inférieur à 2Mo par secondes, alors que je si copie à la souris dans konqueror (par exemple), j'ai entre 5 et 5 Mo par secondes. Est-ce que quelqu'un sait comment on peut obtenir des taux de transfère élevés avec python ? Merci bonne soirée Laurent |
|
|
|
#2 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonsoir !
Un double exemple, qui fonctionne sous windows : import os os.system("xcopy d:\\source f:\\destination /i /y") os.system("c:\\robotcopy.exe d:\\source f:\\destination /MIR /FFT /R:2 /W:3") Notes : - robotcopy est un utilitaire gratuit très intéressant, à télécharger chez MS ; on utilise ici sa fonction de "MOIrroring" - AMHA, la dernière ligne est nettement meilleure @-salutations MCI |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonsoir !
Un double exemple, qui fonctionne sous windows : import os os.system("xcopy d:\\source f:\\destination /i /y") os.system("c:\\robotcopy.exe d:\\source f:\\destination /MIR /FFT /R:2 /W:3") Notes : - robotcopy est un utilitaire gratuit très intéressant, à télécharger chez MS ; on utilise ici sa fonction de "MIRroring" - AMHA, la dernière ligne est nettement meilleure @-salutations MCI |
|
|
|
#4 (permalink) |
|
Messages: n/a
Hébergeur: |
Méta-MCI (MVP) a écrit : > Bonsoir ! > > Un double exemple, qui fonctionne sous windows : > import os > os.system("xcopy d:\\source f:\\destination /i /y") > os.system("c:\\robotcopy.exe d:\\source f:\\destination /MIR /FFT /R:2 /W:3") Merci pour la réponse. Hélas elle n'est pas adaptée à mon OS (Linux); et, chose marrante, la commande Unix cp n'a pas de bon débit non plus. Je me demande quel tour de passe-passe font les konqueror et autres nautilus pour accélérer le débit ... Laurent |
|
|
|
#5 (permalink) |
|
Messages: n/a
Hébergeur: |
Laurent Claessens a écrit :
et, chose marrante, la commande Unix cp n'a pas de bon débit non plus. > Je me demande quel tour de passe-passe font les konqueror et autres > nautilus pour accélérer le débit ... > > Laurent > Probablement un cache au niveau d'un système de fichier virtuel. cp sera plus proche de la vérité des temps de transferts vers la cléusb On peut peut être gagner du temps en créant en local un file system de la taille de la clé dans un fichier et en utilsant dd pour transférerce fs sur la clé. |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonjour,
> et, chose marrante, la commande Unix cp n'a pas de bon débit non plus. >> Je me demande quel tour de passe-passe font les konqueror et autres >> nautilus pour accélérer le débit ... >> > Probablement un cache au niveau d'un système de fichier virtuel. > cp sera plus proche de la vérité des temps de transferts vers la clé usb > > On peut peut être gagner du temps en créant en local un file system de > la taille de la clé dans un fichier et en utilsant dd pour transférer ce > fs sur la clé. Je viens de faire un essai (ubuntu v7) en comparant dd (dd if=fichierentree of=fichiersortie), nautilus, et cp . Je ne trouve pas de différence entre nautilus et cp (dans ton cas, nautilus indique-t-il une copie terminée alors qu'elle ne l'est pas en réalité et que le thread de copie tourne encore ?). Je gagne 10% avec dd. C'est peut-être dû à une optimisation au niveau de la taille du cache mémoire utilisé pour la copie (si je ne m'abuse, cp utilise un cache très petit, laissant l'os se débrouiller pour optimiser). On en vient inévitablement à comparer tout ça avec des temps de transferts sous windows, qui sont difficiles à évaluer (le benchmarking, c'est un métier). Quand l'os ne fait que celà, windows semble plus rapide pour les copies de fichiers. Les choses sont moins évidentes quand on essaie de travailler simultanément à la copie, en lançant par exemple une grosse application (n'ayant pas déjà ses dll chargées en mémoire au démarrage du système, genre msoffice...). Il y a aussi le problème de la gestion du format du file system de ta clé. Je suppose que c'est du fat32, et que tu ne peux pas utiliser autre chose ? (genre ext3 ou reiserfs, qui est bien plus efficace dans le cas de la copie d'un très grand nombre de petits fichiers). Si c'est juste une sauvegarde, et que tu n'as pas besoin de compatibilité fat32, tu peux essayer un autre format (il y a des utilitaires pour travailler avec tout ça sous windows, mais alors ce sera windows qui risquera d'être plus lent, of course puisque ce n'est pas le format natif...). Bref, dis-en un peu plus, et aussi sur les recherches que tu as faites sur internet... A+ jm |
|
|
|
#7 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonjour,
Bertrand B <user@example.net.invalid> disait le 10/07/07 que : > Laurent Claessens a écrit : > et, chose marrante, la commande Unix cp n'a pas de bon débit non plus. >> Je me demande quel tour de passe-passe font les konqueror et autres >> nautilus pour accélérer le débit ... >> >> Laurent >> > Probablement un cache au niveau d'un système de fichier virtuel. > cp sera plus proche de la vérité des temps de transferts vers la clé usb > On peut peut être gagner du temps en créant en local un file system de > la taille de la clé dans un fichier et en utilsant dd pour transférer > ce fs sur la clé. Dans /etc/usbmount/usbmount.conf, j'ai supprimé l'option sync. Les transferts sont rapides sur ma clé, ensuite en console je tape la commande sync (à ne pas oublier). J'avais trouvé l'idée sur un forum. extrait : 8<------8<------8<------8<------8<------8<------8<------8<------8<------ # Filesystem types: USB mass storage devices are only mounted if they # contain a filesystem type which is in this list. ################################################## ########################### # WARNING! The vfat filesystem does not yet fully implement sync-mounting. # # If you include "vfat" in the list of filesystem types, you *MUST* make # # sure all data is written to the medium before you remove it (e.g. run the # # "sync" command in a terminal window). Otherwise, you *WILL* lose data! # ################################################## ########################### FILESYSTEMS="ext2 ext3 vfat" # Mount options: Options passed to the mount command with the -o flag. # WARNING! Removing "sync" from the options is a very bad idea and # might result in severe data loss. #MOUNTOPTIONS="sync,noexec,nodev,noatime,users" MOUNTOPTIONS="noexec,nodev,noatime,users" 8<------8<------8<------8<------8<------8<------8<------8<------8<------ Maurice |
|
|
|
#8 (permalink) |
|
Messages: n/a
Hébergeur: |
Laurent Claessens a écrit :
> Bonjour à toutes et à tous > > > > J'ai des gigas à copier depuis mon disque dur vers un disque > externe connecté en USB. Et avant de copier, je dois vérifier des > trucs pour savoir si je dois vraiment copier ou non. > > Pour l'instant, la ligne de mon code python qui copie un répertoire > > shutil.copytree(rep.chemin,rep.distant().chemin,1) > > où sans surprise, rep.chemin désigne le chemin du répertoire local et > rep.distant().chemin désigne le chemin du répertoire vers lequel il > faut copier. > > Pas que ce code ne marche pas, mais disons que le taux de transfère > est inférieur à 2Mo par secondes, alors que je si copie à la souris > dans konqueror (par exemple), j'ai entre 5 et 5 Mo par secondes. > Est-ce que quelqu'un sait comment on peut obtenir des taux de > transfère élevés avec python ? copytree( src, dst[, symlinks]) Recursively copy an entire directory tree rooted at src. The destination directory, named by dst, must not already exist; it will be created as well as missing parent directories. Permissions and times of directories are copied with copystat(), individual files are copied using copy2(). If symlinks is true, symbolic links in the source tree are represented as symbolic links in the new tree; if false or omitted, the contents of the linked files are copied to the new tree. If exception(s) occur, an Error is raised with a list of reasons. ************************************************** ************* The source code for this should be considered an example rather than a tool. ************************************************** ************* Changed in version 2.3: Error is raised if any exceptions occur during copying, rather than printing a message. Changed in version 2.5: Create intermediate directories needed to create dst, rather than raising an error. Copy permissions and times of directories using copystat(). Je t'ai mis entre ******* une partie intéressante :-) Peut-être reprendre le code, et l'améliorer (taille de buffers)... |
|
![]() |
| Outils de la discussion | |
|
|