Bonjour, je cherche un moyen de copier des fichiers sur plusieurs clé USB en même temps.
Dans le scénario, je dispose de 5 HUB usb de 7Ports connectés sur une machine sous Débian (car sous windows sa marche mais je suis limité au nombre de lettre de lecteur disponible).
J'aimerais donc dépasser cette limite avec Linux.
J'aimerais donc que sur chacun des hub, je branche une clé. Je lance le script qui monte toutes les clés et renomme les clés USB puis copie un (ou plusieurs) fichiers sur chaque clé, sachant que le but est bien sûr de dupliquer mon image sur mes n clés usb branchées.
Je cherche donc a faire un script qui
1/ Détecte et monte automatiquement les clé. Un automount suffit, non ? Par contre, sachant qu'il faut gérer les points de montage de façon à ce qu'aucun ne se téléscope.
/mnt/Cle1
/mnt/Cle2
etc...
Je ne sais pas trop comment faire car je ne maîrise pas encore linux, je commence a peine à m'y mettre.
2/Copie un fichier ou une liste de fichier (toujours le/les mêmes) sur chaque clé usb branchées et reconnues.
3/ Bien évidemment il me faut un journal de log mais aussi qu'il me démonte chaque clé dont la copie s'est bien terminée.
Si quelqu'un d'entres vous ont des pistes, voir même un script déjà existant elles sont le bienvenues :)
Merci beaucoup a tous
# Quelques pistes
Posté par santos . Évalué à 2.
mis à part le problèmes des ressources que peuvent consommer toutes les clés montées en même temps, ça me parait tout à fait faisable.
Pour le montage, automount devrait être suffisant. Si tu as un cas concret de "téléscopage", on avisera.
Pour les points 2 et 3, à la pelle :
log=/var/log/copieusb
for cle in $(ls /mnt/cle*)
do
for fichier in $liste_fichiers
do
cp fichier cle 2>&1>>$log
done
umount cle
done
[^] # Re: Quelques pistes
Posté par taow13 . Évalué à 2.
Pour la consomation, les Hub ont une allimentation exterieur, je supposes donc que les clés USB ne tirerons pas sur le port USB du PC pour s'allimenter, si?
Je te remerci vraiment pour ton script, je vais tous de suite le copier et je te tien au courrant.
Juste une question, car comme je t'ai dis je débute vraiment en Linux, je suis quelque peut une brelle.
Le script là est entier? Il n'y a pas besoin de plus?
Car sur windows j'ai quand même fait beaucoup plus de ligne.
Si sur Linux ces disénes de lignes suffises, sa prouve quand même que le shell de Linux est vraiment plus puissant que celui de Windows
Si j'ai bien compris le script, je dois indiquer l'emplacement des fichiers dans un document nommé "liste_fichiers"? c'est ca?
Le fichier log se trouvera dans var/log et se nommera copieusb?
Par contre je sais je suis exigent, et si c'est pas possible ce n'est vraiment pas grave.
Est t'il possible de renommer la clé USB? car je crois que sur le script il n'y a pas cette fonction.
Si c'est pas possible ce n'est vraiment pas grave.
Et ensuite pour te poser toutes les questions après je ne t'en poses plus.
Crois tu qu'il serait possible qu'a la place de copier des fichiers, on lui balance une image ISO ou un truc dans le style et que sa face vraiment une copie exacte de la clé USB.
Pourquoi cette question? c'est simplement que j'ai eu à un moment donné à copier 100clé usb a chipset??UT163/UT165 (je crois que l'on dit comme ca)
Qui permettaient de simuler un lecteur CD rom
Du coup j'avais utilisé "UFD Utility V3210" fournis avec les clés, pour créer la partition CD
Puis j'avais utilisé "Duplicator" pour les copiers (7 par 7) le tous sous Windows mais sa planté le PC une fois sur deux.
Je me disais donc que si je devais en faire 400 sa serait peut être bien que sa se face aussi sur linux dans le même cas que tu m'as expliqué pour la copie des fichiers.
Mais bon c'est peut être trop poussé.
Sa n'est pas non plus super important. Mais bon c'était plus par curiositée.
Mal heureusement si nous avions souvant des clés USB a copier, on aurait investi dans un duplicateur à 800€ mais comme on en fait que très rarement, et en petite quantitée sa serait pas rentable.
En tous cas merci encore pour toutes tes infos.
Je teste et te tiens au courrant dans la journée.
@+
Cris
[^] # Re: Quelques pistes
Posté par Kerro . Évalué à 3.
Pour la consomation, les Hub ont une allimentation exterieur
Le mot clef est "ressources" et non pas "consommation". A mon avis il parlait de bande passante, mais bon c'est à toi de voir :-)
[^] # Re: Quelques pistes
Posté par santos . Évalué à 2.
4 ou 5 périphériques USB simultanés c'est une chose, 30 périphériques c'en est une autre. Aucune idée de la faisabilité (peut-être que ça ne pose aucun problème).
[^] # Re: Quelques pistes
Posté par taow13 . Évalué à 1.
En effet je n'y avait pas penssé mais en effet c'est vrai.
Sur windows il me fait une copie clé usb par clé usb, pas toutes en même temps et je mets facilement 30 à 40 minutes pour 250Mo par clé sur 23 clés.
Merci encore Kerro pour ta précision
[^] # Re: Quelques pistes
Posté par Sébastien Koechlin . Évalué à 3.
Pourquoi cette question? c'est simplement que j'ai eu à un moment donné à copier 100clé usb a chipset??UT163/UT165 (je crois que l'on dit comme ca)
Qui permettaient de simuler un lecteur CD rom
Pour copier une image, c'est encore plus facile. Il faut retrouver le device correspondant (/dev/sdc par exemple).
Pour faire une image:
dd if=/dev/sdc of=/mon/image.brute
Pour copier une image sur une clef:
dd if=/mon/image.brute of=/dev/sdc
Simuler un lecteur CD-Rom, ça n'a pas trop de sens, je ne comprends ni ce que ça fait, ni l'intérêt.
[^] # Re: Quelques pistes
Posté par taow13 . Évalué à 2.
Merci pour tes commandes, je les testeraient dés que j'aurais terminé la copie de mes 300clés usb et je te dirais si ce que je disais marche avec cette commande.
En gros quand je disais Simulation de lecteur CD, c'est ce que certains appels par le nom commercial les clés USB U3.
Ca n'est pas tous a fait pareil, puisque l'U3 est une marque déposé ...
Mais en gros quand tu branche ta clé USB tu as un CD-Rom et une clé USB.
La partie CD-ROM permet que ta clé USB face un Autorun (la U3 peut en plus être bootable en plus je crois)
Ainsi quand tu branche ta clé USB sur ton ordinateur, tu as la premiere fois la publicitée de l'entreprise. (due à l'Autorun)
Car les clés USB ne sont pas Autorun, (je parles bien sur pour des ordinateurs sous WIndows)
Après vue que nous laissons l'application dans la clé USB pour qu'elle redevienne normale, l'utilisateur peut la formater avec et sa clé USB redevienne une clé USB Standard.
Je sais pas si je me suis bien expliqué, mais tous celà est pour des utilisateurs sous Windows, puisqu'il représente encore aujourd'hui le plus grand pourcentage de systéme d'exploitation installé en france, chez le particulier.
Merci beaucoup Sebastien
[^] # Re: Quelques pistes
Posté par santos . Évalué à 4.
Supposons que tes clés soient montés dans /mnt et qu'elles s'appellent toutes cle où X est la X-ème clé montée ;
ls /mnt/cle* va liste toutes les clés monté.
Donc for cle in $(ls /mnt/cle*) va parcourir toutes les clés montés. A chaque tour de boucle, la variable $cle vaudra /mnt/cleX (en remplaçant X par la bonne valeur).
la boucle for fichier in $liste_fichiers suppose en effet que la variable $liste_fichiers contiennent la liste des fichiers à copier.
A chaque tour de boucle, $fichier prendra l'une des valeurs de la liste de fichiers (par exemple /home/cris/sources/fichier1.zip).
Au début du script, tu peux faire liste_fichiers=$(ls repertoire/*, où repertoire est le chemin vers le répertoire qui contient les fichiers à copier.
A la ligne suivante, j'ai oublié les $ pour les variables, ce serait plutôt cp $fichier $cle. La suite de la ligne, c'est pour rediriger les éventuels messages d'erreurs vers un fichier (qui normalement s'affichent dans la console).
De même, umount $cle démontera la clé /mnt/cleX.
[^] # Re: Quelques pistes
Posté par taow13 . Évalué à 1.
Je sens qu'avec toutes vos aides à tous je vais vraiment optenir à la fin un truc super génial, qui sera encore mieux que ce que j'espèré. Et encore mieux que tous ce que j'ai pue trouvé de déjà existant pour windows.
Je teste le tous et je te tiens au courrant.
Merci beaucoup pour ton Aide François.
Et bien sure merci a tous pour votre aide qui compte vraiment beaucoup pour moi.
[^] # Re: Quelques pistes
Posté par taow13 . Évalué à 1.
Je te remerci pour ton script et tous tes détails, au niveau du fonctionnement sa semble vraiment être ce que je cherchais, mais il me provoque une erreur au moment de la copie, car mes clés USB s'affichent ainsi: disk-x: et le problème c'est qu'il n'apprécis pas les :
As tu une idée de comment faire abstraction des deux points?
Sinon pour la copie sa fonctionne bien dés que je lui indique le nom de la clé (en enlevant les :)
Du coup il ne me démonte pas non plus la clé.
Deuxieme question, as tu une idée comment on fait pour renommer la clé? si c'est pas possible ou si tu sais pas c'est pas génant, ce que tu m'as fais c'est déjà géant.
Merci encore
@+
# Avec udev
Posté par Sébastien Koechlin . Évalué à 2.
En configurant correctement la chose, il devrait être possible de faire la copie sans avoir besoin de lancer la moindre commande, simplement en branchant la clef, et en la débranchant lorsqu'il n'y a plus d'activité; sur autant de clef que le bus USB peut en supporter.
[^] # Re: Avec udev
Posté par santos . Évalué à 2.
Des exemples sont donnés ici :
http://doc.ubuntu-fr.org/udev
En revanche, ce n'est pas simple quand on ne connait pas.
[^] # Re: Avec udev
Posté par taow13 . Évalué à 1.
Merci pour cette idée.
Je vais la regarder aussi, je vous tiens au courrant.
Merci beaucoup
# Je veux bien mais....
Posté par fcartegnie . Évalué à 2.
[^] # Re: Je veux bien mais....
Posté par Christophe --- . Évalué à 2.
La vitesse d'écriture dans de la Flash est plus faible que le débit USB (en tout cas en 2.0), donc il y a moyen d'accélerer en écrivant plusieurs clés à la fois.
La limite au nombre de clés est donnée quand le bus USB est à saturation, et que la somme des débits d'écriture max de chaque clé est atteind.
Dans ces conditions, pour minimiser le temps des opérations, il suffit de placer N clés par hub (N étant le résultat précédent), avec un hub par port USB de la machine...
- à simplifier le travail de manutention?
En faisant abstraction du paragraphe précédent, supposont qu'écrire une clé prenne 1h. S'il y a 10 clés à écrire, en les écrivant une par une, il faut 10 heures, avec 11 interventions. Maintenant, si tu met un hub et que tu en écris 10 en même temps, en supposant que la bande passante soit bien divisée, il te faudra encore 10h... mais seulement 2 interventions, ce qui peut avoir plein d'avantages: faire autre chose, le faire pendant la nuit, ...
Idéalement, il faudrait faire un compromis des deux pour trouver la situation qui trouve la meilleure solution entre temps d'écriture et nombre d'intervention pour un nombre total de clé donné.
En espérant que ma réponse t'ais intéréssé...
[^] # Re: Je veux bien mais....
Posté par Christophe --- . Évalué à 2.
http://www.bigbruin.com/reviews05/thumbraid_1
...ou comment faire du RAID1 sur 4 clé USB... du bonheur :)
[^] # Re: Je veux bien mais....
Posté par taow13 . Évalué à 1.
Merci pour la précision, et le lien.
En effet c'est quand même impressionnant, je me ferai peut être un petit test un jour avec 4 clé USB, sa peut être interessant, a mettre en place.
Merci encore
@+
# Merci A tous: Voici les résultats
Posté par taow13 . Évalué à 1.
Après une longue période de silence je me re-manifeste afin de vous tenir au courant des avancements des choses et ainsi vous remercier à tous de votre aide.
En effet j'ai de nouveau 1200 clé USB à copier.
Cette fois si j'avais 500Mo par clé à faire.
J'ai donc préparé une machine sous Linux (Ubuntu car j'avais que ça sous la main)
Étant donné que c'est une machine recyclé j'y ai ajouté une cartes USB en PCI et sur 2 ports USB2 un Hub de 7 ports (pour les testes je n’ai pas voulu pousser le bouchon un peu trop loin).
En gros au final en utilisant principalement le scripte de François,
Car la solution UDEV à l’aire vraiment trop génial mais trop compliqué pour moi
C’est donc pour le moment une simple copie des fichiers, je ne met qu’entre 8 et 15 minutes pour copier 14 clé en simultanées (A parement il y a des marques ou les clés sont plus rapide que d’autres)
En attendant voici le script de François remis en forme pour collé à mon besoin, on sait jamais sa pourrait aider un débutant comme moi.
J’ai placé les fichiers dans un dossier : /home/user/fichier/…
J’ai donné aux clés USB le nom : NomDeLaClé
Avec la fonction grep j’ai demandé de référencer tous les disques sauf les disquettes et les CDRom vue que je n’ai que ca sur l’appareil. Ainsi je n’ai pas besoin de définir le nom de base de la clé USB qui est variable selon le fabriquant.
Voici le script :
# Copie des fichiers sur les clés
liste_fichiers=/home/user/fichiers/*
nom_usb= «NomDeLaCle »
for disk in $(ls -d /media/* |grep -v cdrom |grep -v floppy)
do
cp -R $liste_fichiers $disk
done
# Renommer les cles USB Attention il faut le paquet mtools
for lect in $(ls -d /dev/sd*)
do
sudo mlabel -i $lect ::$nom_usb
umount $lect
done
Attention, (sous Ubuntu) il faut absolument lancer le shell en Super Utilisateur pour renommer des clés. Et il faut absolument installet mtools
Si vous trouvez des fonctions qui pourraient être génial a ajouter en plus n’hésitez pas a les ajouter ca peut toujours être utile.
Je n’ai pas fais de journal car il ne m’indiquait par d’informations utile lorsque la clé USB n’était tous simplement pas bien montée.
De mon côté si je l’améliore je vous ferez part de mes modifications.
Merci encore à tous le monde de votre aide et participations.
à+
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.