Transférer des fichiers entre Linux et Windows

Gazette Linux n°116 — Juillet 2005

Antonin Mellier

Adaptation française

Joëlle Cornavin

Relecture et correction de la version française

Article paru dans le n°116 de la Gazette Linux de juillet 2005.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


En 1999, je décidai de plonger dans le monde « moderne » et d'abandonner mon vieil ordinateur portable Tandy 600® pour le remplacer par une machine réellement capable de « surfer sur le Web ». J'achetai donc un ordinateur d'occasion qui tournait sous Windows 95.

Je fis également l'acquisition d'une imprimante Hewlett Packard® et d'un scanneur IBM® sur port parallèle. Peu de temps après, je découvris ce qu'était vraiment un Windows 95 de cette époque. Après divers désagréments, je commençai à chercher d'autres alternatives, et découvris Linux. C'était une copie de Mandrake 6.5® dans un coffret, qui contenait même un disque de démarrage prêt à l'emploi.

Malheureusement, Linux ne prenait pas en charge mon scanneur... et ne le reconnaît toujours pas. Je m'en accommodai pendant un certain temps mais finis par me procurer un autre ordinateur sous Windows 95 juste pour pouvoir utiliser mon scanneur. Transférer des fichiers image sur la machine Linux était un processus laborieux consistant à en faire une copie sur un disque Zip Iomega® et à les copier à nouveau sur le disque dur de la machine Linux, ou à me les envoyer par courrier électronique à moi-même depuis la machine Windows 95 et à les recevoir sur la machine Linux. C'était une tâche fastidieuse... spécialement avec les modems « 28.8 » que j'utilisais à l'époque.

Par la suite, j'installai un réseau local... ce qui était une idée un peu effrayante au départ, que je remettais sans arrêt à plus tard. Mais un jour, je finis par céder. Je m'offris un appareil photo Sony Mavica®, lequel n'était pas non plus pris en charge sous Linux, même si j'avais une solution de rechange avec les disquettes que le Mavica® pouvait utiliser. Il était cependant beaucoup plus facile et rapide de transférer les images depuis la carte mémoire Sony® vers la machine Windows 95.

Le réseau local me permit de transférer des fichiers d'un ordinateur à l'autre, mais l'opération était loin d'être facile : quoi qu'on en dise, SAMBA N'EST PAS simple à configurer ! À cette époque là, j'avais pratiquement abandonné Windows 95 pour tous mes travaux, sauf pour la gestion du scanneur et de l'appareil photo. Je commençais à être assez à l'aise avec les lignes de commande dans un shell Bash et avec la manipulation d'applications Linux usuelles comme GIMP.

Cependant, je n'avais toujours pas de solution facile pour transférer les fichiers sur ma machine Linux, même s'il n'y avait pas de limitation matérielle théorique. Mae Ling Mak, autrefois membre de l'équipe de l'ancien magazine Maximum Linux, que je connaissais, me parla de la commande scp et de Cygwin.

Cygwin est en fait une application Windows qui fournit un shell Bash. Dans ce shell, on peut lancer beaucoup d'applications courantes Linux/Windows par-dessus le système d'exploitation Windows. Une fois qu'il est installé, il suffit de choisir les applications dont on a besoin. Si vous souhaitez exécuter Mutt et GnuPG par exemple, cochez simplement les cases correspondantes pendant le processus d'installation, les applications seront installées pour vous.

scp (secure copy protocol) permet de transférer des fichiers d'un endroit à un autre dans le réseau local, voire vers un serveur Internet. Grâce à l'option -r, on peut transférer des répertoires entiers intacts, avec tous les sous-répertoires qui s'y rattachent. scp offre de plus l'avantage de chiffrer automatiquement tout ce qui est envoyé par son intermédiaire, pour que personne ne puisse en lire le contenu.

Dorénavant, utiliser scp depuis un shell Bash Cygwin permettra à tout un chacun de transférer des fichiers depuis la machine Windows dotée de matériel non reconnu par Linux vers une machine Linux à l'aide d'une ligne de commande.

Deux problèmes sont alors apparus : je ne connaissais pas assez bien la commande scp pour me rappeler de la procédure d'une semaine à l'autre. Par ailleurs, la hiérarchie des répertoires Windows est complexe et déroutante pour toute personne habituée à Unix/Linux. De plus, comme on le voit sur l'illustration, il n'est pas possible de naviguer avec Bash dans les répertoires dont le nom comporte un espace : mes répertoires Windows ME par défaut, Mes images, Mes documents et Program Files sont toujours inaccessibles avec Cygwin.

 

[En fait, ils sont bel et bien accessibles, mais tout comme les noms de fichiers contenant un espace dans *nix, ils requièrent un peu de « bidouillage ». Notamment, il faut entourer le nom du fichier ou du répertoire de guillemets droits, c'est-à-dire "Mes images", etc. À l'inverse, vous pourriez employer des jokers : la commande ls *images ou même ls Mes*images fonctionne très bien.]

 
 -- Ben

En faisant un peu de recherche sur Google®, j'ai obtenu la séquence de commandes correcte. Puis un article sur les scripts, que Mae Ling avait écrit quelques années auparavant m'est revenu à l'esprit. Après quelque réflexion, j'ai créé un fichier texte contenant la séquence de commandes pour transférer mes fichiers vers l'ordinateur hôte appelé beam.

Le moyen le plus simple pour ce faire est d'invoquer vi, plus précisément vi beam et d'y coller le texte ci-dessous, en le modifiant comme il faut pour l'adapter à votre propre système. Vous devrez substituer dale par votre propre nom d'utilisateur sur votre système Linux et, peut-être, pourriez-vous utiliser le nom de domaine de l'ordinateur hôte plutôt que l'adresse IP que j'ai employée, selon la manière dont vous avez paramétré votre réseau local. L'option -r copie récursivement la totalité du répertoire spécifié et son contenu — dans ce cas, il s'agit de /home/dale/transporter — vers l'ordinateur hôte. Les commentaires sont, évidemment, optionnels.

 
# ceci est un fichier de commande scp. Pour l'utiliser, transférez les fichiers dans
# le répertoire transporter puis invoquez la ligne de commande
# ci-dessous ou saisissez simplement ./beam dans un shell bash Cygwin.

scp -r transporter dale@192.168.1.12:/home/dale

Ensuite, j'ai créé un nouveau répertoire de la manière suivante : mkdir transporter. J'avais maintenant un fichier de commande pour « me rappeler » de la séquence de commandes, ainsi qu'un endroit pour stocker les documents que je souhaitais voir transférés vers l'ordinateur hôte (le répertoire transporter). Ce répertoire est accessible via l'interface graphique utilisateur de Windows, ce qui permet d'éviter le problème du nom avec espace.

En saisissant simplement ./beam", on peut démarrer le transfert. À ce moment-là, une invite vous demande le mot de passe que vous avez créé sur la machine Linux et, après l'avoir saisi, le répertoire transporter apparaît comme par magie dans votre dossier personnel sur la machine hôte. Explorez-le, vous y trouverez tous vos fichiers intacts.

Maintenant vous pouvez ouvrir toutes les images .bmp avec GIMP et les modifier à votre gré.

Pour une gestion interne correcte, il faut nettoyer la plate-forme de transfert après chaque utilisation... des deux côtés ! Si vous ne le faites pas, vous risquez de devoir fouiller dans une grande quantité de fichiers pour trouver ce que vous venez de transférer. Notez également que tout fichier du même nom sera écrasé par sa version suivante. Habituellement, j'accède aux fichiers tels que transférés et, après les avoir modifiés, j'emploie l'option Enregistrer sous dans le menu Fichier de la plupart des applications Linux pour les placer dans des répertoires différents.

 

[Sous *nix, ce genre de problème est traditionnellement résolu en créant un nouveau répertoire horodaté du côté du « récepteur » pendant chaque transfert vers le serveur. Ceci empêche d'avoir un conflit avec les fichiers existants mais nécessite un nettoyage occasionnel pour conserver de l'espace disque.]

 
 -- Ben

Puis, je saisis ./jayne :

 
# ce script envoie Jayne et Vera pour « nettoyer » la plate-forme de transfert

rm -rf transporter

N'utilisez le fichier de commande jayne qu'avec beaucoup de prudence. Il est dangereux et ne vérifie pas si vous avez oublié de retirer les fichiers de la plate-forme de transfert... il les supprime purement et simplement. Vous ne pourrez plus les récupérer. Pour surveiller le travail de nettoyage de Jayne et Vera, utilisez l'option -v. Vous verrez alors un listing au fur et à mesure que Jayne supprime un fichier.

La commande jayne ne doit pas être utilisée avec Cygwin, car elle supprime le répertoire transporter. Pour exécuter une commande jayne des deux côtés, n'oubliez pas de faire un mkdir transporter avant de pouvoir utiliser à nouveau la plate-forme de transfert.

Dale A. Raby est un homme tenace qui a fait ses débuts avec le premier PC d'IBM® à l'époque des programmes MS-DOS alors qu'il était en convalescence au Ireland Army Community Hospital et qu'il travaillait pour le capitaine James. Après cet épisode particulier de son service militaire, il acheta un ordinateur portable Tandy 600® qui fonctionne toujours, en quelque sorte.

Il choisit un ordinateur plus « moderne » en 1998 et commença à publier dans un magazine en ligne d'intérêt général, The Green Bay Web. En découvrant rapidement que Wind0ws 95 manquait de fiabilité, il se convertit à Linux malgré les protestations de tous les membres de sa famille. Il utilise maintenant Fedora Core et depuis qu'il a découvert Yum, il arrive à garder ses systèmes relativement à jour.

Dale est diplômé de l'University of Wisconsin-Green Bay, avec une formation en photographie et presse écrite.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.