gcp (Goffi's CoPier): un outil de copie de fichier à la cp

goffi 14 years ago projet Libre

gcp: outil de copie à la cp

Bon, puisque je suis coincé à Broome depuis un moment (cf la note en bas de mon avant-dernier billet), j'ai avancé un petit outil de copie de fichier à la cp dont j'avais besoin. En gros c'est un cp amélioré (enfin, il ne fait pas encore tout ce que fait le respectable ancêtre) avec barre de progression, correction des noms de fichiers au besoin, sauvegarde de la liste des fichiers à copier, etc. Je vous laisse découvrir le README, et vous pouvez me contacter au besoin.

Comme je n'ai pas trop le temps pour faire une description détaillée, je mets un lien vers mon journal linuxfr où c'est un peu plus complet: https://linuxfr.org/~Goffi/30248.html

ça se passe ici: gcp (Goffi's cp)

MIS À JOUR: suite à quelques bugs, j'ai publié une version 0.1.1 qui corrige les problèmes suivants:

- syntaxe gcp FILE FILE_DEST maintenant gérée - erreurs affichées en fin de copie - mauvaises fermetures des fichiers/du journal en cas de fichier existant - erreur lors d'envoi du chemin source via dbus (via une deuxième instance de gcp)

jlaunay 14 years ago

J'utilise rsync pour avoir ces fonctionnalités (bar de progression, conserver les attributs etc...) et il semblerait que ça soit légèrement plus rapide et léger que gcp

$dd if=/dev/zero of=gigtest.file bs=1MB count=1000

jlaunay@arch-desktop:~/gcp (36 fichiers 859Mb) [21:26:13]
(jobs:0) :-)
$time ./gcp gigtest.file /mnt/sdb/
Copie de 953.67 Mio 100% |#########################################################################################################| 90.12 M/s Time: 00:00:11

real 0m11.172s
user 0m3.286s
sys 0m2.483s

$/usr/bin/top -b -n 1 | grep gcp | awk '{print $9}'
53

jlaunay@arch-desktop:~/gcp (36 fichiers 859Mb) [21:26:45]
(jobs:0) :-)
$time rsync -P --no-whole-file --inplace gigtest.file /mnt/sdb/
gigtest.file
1000000000 100% 95.51MB/s 0:00:09 (xfer#1, to-check=0/1)

sent 1000122145 bytes received 31 bytes 95249731.05 bytes/sec
total size is 1000000000 speedup is 1.00

real 0m10.048s
user 0m6.670s
sys 0m3.560s

$/usr/bin/top -b -n 1 | grep rsync | awk '{print $9}'
48


author website

Goffi 14 years ago

jlaunay> oui probablement, surtout que gcp est en python, mais ca se tient a peu pres, et il y a des fonctionnalites que je voulais et qui m'ont pousse a coder cet outil (correction du nom pour FAT et sauvegarde des sources). Dans les rapides tests que j'ai fait, ca avait l'air de se tenir avec cp (un poil plus lent,mais rien de catastrophique.

nox> ah cool, merci :)


author website

alpha_one_x86 14 years ago

Bonjour, je suis le développeur d'ultracopier.
J'aimerai que tu me contacte pour parler d'un rapprochement de nos projets et d'un potentiel partenariat.
Msn/icq/gtalk, ... trouvable sur le site.


author website

PPmarcel 14 years ago

Bonjour Goffi.

Ce projet est une bonne idée je trouve. Tu fais la différence à quelques autre projets grâce à la gestion d'une queue de copie unique.

Je me demandais si il serait possible que qcp puisse continuer un transfert d'un fichier incomplet? Par exemple, au lieu de recommencer la copie d'un transfert de 4 Go qui a été interrompu à 95%, que l'on puisse le reprendre là où le transfert s'est arrêté?


author website

al1.kd 14 years ago

./gcp:232: Warning: 'with' will become a reserved keyword in Python 2.6
File "./gcp", line 232
with open("/proc/mounts",'rb') as mounts:
^
SyntaxError: invalid syntax

Que faire ?

Goffi 14 years ago

Désolé pour les réponses tardives, je suis sur les routes et j'ai un accès assez difficile au net en ce moment.

PPmarcel> Pourquoi pas, c'est une idée. Mais encore une fois gcp n'est pas mon projet principale (c'est mon client XMPP qui me prend le plus de temps), aussi c'est envisageable, mais à plus ou moins long terme.

al1.kd> Tu as probablement une version trop vieille de python (sûrement la 2.5). Tu peux soit installer une version plus récente (2.6 ou la 2.7 qui est sortie plus récemment), soit ajouter cette ligne au début du script (au niveau où il y a tous les "import"):

from __future__ import with_statement

Ça devrait ensuite fonctionner.


author website

fab31 14 years ago

Hello Goffi!
Quoi de neuf ? :)

Tu n'as pas fait pypi et c'est mal !

http://pypi.python.org/pypi?:action...

Sinon pour le future, tu peux le mettre, ça ne casse pas même si tu es sur une version récente de python...

En tt cas, content de voir que tu t'éclattes & que tu es actif :)

++ fab.

Goffi 14 years ago

Oh fab, content de voir que tu passes par là (évidemment sur un billlet sur un script python ;) ). Oui je sais, j'ai prévu de packager tout ça à mon retour en France (idem pour lm, autre script pour afficher les films).

++


author website

mardek 13 years ago

Man !! Un gros merci pour ton outils. Fini les alias pouri de cp=rsync. Encore merci

mardek 13 years ago

Man !! Un gros merci pour ton outils. Fini les alias pouri de cp=rsync. Encore merci

Goffi 13 years ago

@mardek: c'est cool si ça sert :). Par contre va peut être falloir attendre que ça gagne un peu en stabilité pour l'utiliser comme remplaçant définitif ;). Le projet est jeune, et j'ai peu de temps à y consacrer...


author website