Outils pour utilisateurs

Outils du site


issue57:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue57:c_c [2012/03/05 14:35] – [to do] frangiissue57:c_c [2012/03/06 10:55] (Version actuelle) auntiee
Ligne 3: Ligne 3:
 ** **
  
-Dans le numéro 37, j'ai écrit un article sur la configuration d'un serveur SSH sur votre ordinateur, pour l'utiliser comme un proxy SOCKS. Mais comme j'imagine que tous les lecteurs ne veulent pas l'utiliser comme tel, j'ai décidé de me concentrer sur la commande que j'utilise le plus en deuxième (la première commande que j'utilise est « pacman », la solution ArchLinux pour gérer les paquets). Avant d'aller plus loin sur ce qu'est cette commande, je vous expliquerai brièvement pourquoi vous pourriez être intéressé par cette solution. En particulier, elle vous permet de synchroniser les répertoires et les fichiers entre deux ordinateurs à travers le LAN (et, s'il est configuré correctement, aussi à travers Internet). Je l'utilise pour garder ma musique synchronisée entre mon portable et mon PC, pour garder mes fichiers de configuration à jour et pour copier tout ce dont j'ai besoin d'un appareil à l'autre. Il existe quelques commandes qui pourraient être utilisées, deux d'entre elles sont scp (secure copy) et rsync. Je m'attacherai à décrire rsync dans cet article, car il offre l'information de progression, une capacité de mise à jouret des options très utiles comme --ignore-existing.+Dans le numéro 37, j'ai écrit un article sur la configuration d'un serveur SSH sur votre ordinateur, pour l'utiliser comme un proxy SOCKS. Maiscomme j'imagine que tous les lecteurs ne veulent pas l'utiliser comme tel, j'ai décidé de me concentrer sur la seconde commande la plus utilisée (la commande que j'utilise le plus est « pacman », la solution ArchLinux pour gérer les paquets). Avant d'aller plus loin sur ce qu'est cette commande, je vous expliquerai brièvement pourquoi vous pourriez être intéressé par cette solution. En particulier, elle vous permet de synchroniser les répertoires et les fichiers entre deux ordinateurs à travers le LAN (et, s'il est configuré correctement, aussi à travers Internet). Je l'utilise pour garder ma musique synchronisée entre mon portable et mon PC, pour garder mes fichiers de configuration à jour et pour copier tout ce dont j'ai besoin d'un appareil à l'autre. Il existe quelques commandes qui pourraient être utilisées, deux d'entre elles sont scp (secure copy) et rsync. Je m'attacherai à décrire rsync dans cet article, car il offre l'information de progression, une capacité de mise à jour et des options très utiles comme --ignore-existing.
  
 ** **
Ligne 9: Ligne 9:
 ** **
  
-Quelques-uns d'entre vous peuvent se demander pourquoi je n'utilise pas simplement DropBox, un disque externeou une clé USB (pour les plus petits fichiers). La réponse est assez simple : Dropbox n'offre qu'une quantité limitée d'espaceet les autres options nécessitent que je me souvienne régulièrement de le faire. Si vous avez SSH configuré sur votre « émetteur » (dans ce cas, mon PC à partir duquel je transfère les fichiers)et un client SSH (le serveur SSH n'est pas nécessaire) sur votre « récepteur » (mon portable, dans ce cas), alors vous pouvez facilement écrire un petit script à lancer par cron (autrement dit, régulièrement, et sans rien à taper). Si vous voulez automatiser cela, vous aurez besoin de configurer SSH pour qu'il utilise des clés à la place de mots de passes, de telle manière que vous pourrez accéder à votre serveur sans avoir à entrer quoi que ce soit. C'est plutôt simple (en utilisant ssh-keygen pour créer les clés, et puis en copiant la clé publique sur le serveur)et ceci est expliqué dans un grand nombre d'endroits (voir la section Liens pour un lien vers un Wiki).+Quelques-uns d'entre vous peuvent se demander pourquoi je n'utilise pas simplement DropBox, un disque externe ou une clé USB (pour les plus petits fichiers). La réponse est très simple : Dropbox n'offre qu'une quantité limitée d'espace et les autres options nécessitent que je me souvienne régulièrement de le faire. Si vous avez SSH configuré sur votre « émetteur » (dans ce cas, le PC à partir duquel je transfère les fichiers) et un client SSH (un serveur n'est pas nécessaire) sur votre « récepteur » (mon portable, dans ce cas), alors vous pouvez facilement écrire un petit script qui lance un cron (autrement dit, régulièrement, et sans intervention de votre part). Si vous voulez automatiser cela, vous aurez besoin de configurer SSH pour qu'il utilise des clés à la place de mots de passe, de telle manière que vous pourrez accéder à votre serveur sans avoir à entrer quoi que ce soit. C'est plutôt simple (en utilisant ssh-keygen pour créer les clés, et puis en copiant la clé publique sur le serveur) et ceci est expliqué dans un grand nombre d'endroits (voir la section Liens pour un lien vers un Wiki).
  
 ** **
Ligne 16: Ligne 16:
 ** **
  
-Une fois SSH configuré, pensons maintenant à comment le script devrait être. Je ne vous donnerai pas de script d'exemple, parce que je n'en ai pas encore implémenté de décent. Il y a des choses à considérer quand vous concevez votre script, comme : +Une fois SSH configuré, pensons maintenant à quoi devrait ressembler le script. Je ne vous donnerai pas de script d'exemple, parce que je n'en ai pas encore implémenté de décent. Il y a des choses à considérer quand vous concevez votre script, comme : 
-Le script ne doit faire quelque-chose que si vous êtes sur votre réseau local (ceci peut être fait en vérifiant le ESSID de votre wifiou, si vous connectez votre portable sur le LAN par un câble chez vous, vérifier que eth0 est actif, ou simplement en déterminant une heure spécifique à laquelle le script devrait tourner). La raison pour cela est que sinon vous aurez un grand nombre de connexions SSH échouées si vous faites cela dans un lieu en dehors de votre réseau local. Je vous recommande de penser à vos habitudeset de trouver une solution qui marche le mieux pour vous. Puis vous l'écrivez dans un bloc IF dans le script.+Le script ne doit faire quelque chose que si vous êtes sur votre réseau local (ceci peut être fait en vérifiant le ESSID de votre wifi ou, si vous connectez votre portable sur le LAN par un câble chez vous, en vérifiant que eth0 est actif, ou simplement en déterminant une heure spécifique à laquelle le script devrait tourner). La raison pour cela est quesinonvous aurez un grand nombre d'échecs de connexion SSH si vous faites cela dans un lieu en dehors de votre réseau local. Je vous recommande de penser à vos habitudes et de trouver la solution qui marche le mieux pour vous. Puis vous l'écrivez dans un bloc IF dans le script.
  
 ** **
Ligne 27: Ligne 27:
 ** **
  
-Combien de fichiers/répertoires voulez vous synchroniseret lesquels exactement ? Vous pouvez soit coder en dur chaque fichier ou répertoire dans le script, ou créer une liste des emplacements de vos machines dans un fichier texte, puis utiliser un bloc WHILE et une lecture par ligne pour gérer chaque ligne séparément. Je vous recommande quelques fichiers : .bashrc (ou votre fichier rc pour le shell que vous utilisez), .Xdefaults (pour les couleurs du terminal), vos Musiques, vos Photos, et les fichiers de configuration des gestionnaires de fenêtres (XMonad, DWM, etc.)+Combien de fichiers/répertoires voulez-vous synchroniser et lesquels exactement ? Vous pouvez soit coder en dur chaque fichier ou répertoire dans le script, soit créer une liste des emplacements sur vos machines dans un fichier texte, puis utiliser un bloc WHILE et une lecture par ligne pour gérer chaque ligne séparément. Je vous recommande quelques fichiers : .bashrc (ou votre fichier rc pour le shell que vous utilisez), .Xdefaults (pour les couleurs du terminal), vos musiques, vos images et les fichiers de configuration des gestionnaires de fenêtres (XMonad, DWM, etc.)
  
-Est-ce que vous voulez mettre à jour (ce qui veut dire que les versions les plus récentes des fichiers sont celles à garder), ou ignorer les fichiers s'ils existent déjà sur le récepteur (utile pour la musique et les photos), avez vous besoin de récursivité (ce qui signifie suivre l'arborescence) ? Il y a quelques autres options très utiles à considérer offertes par rsync (voir la deuxième section de cet article).+Est-ce que vous voulez mettre à jour (ce qui veut dire que les versions les plus récentes des fichiers sont celles à garder), ou ignorer les fichiers s'ils existent déjà sur le récepteur (utile pour la musique et les photos), avez-vous besoin de récursivité (ce qui signifie de suivre l'arborescence) ? Il y a quelques autres options très utiles à considérer offertes par rsync (voir la deuxième section de cet article).
  
-Est-ce que le répertoire cible et le répertoire source sont au même endroit ? Si ce n'est pas le cas, vous aurrez besoin de garder une trace de où chaque fichier est supposé aller (idem #2).+Est-ce que le répertoire cible et le répertoire source sont au même endroit ? Si ce n'est pas le cas, vous aurez besoin de garder une trace de l'emplacement où chaque fichier est supposé aller (similaire au #2).
  
 ** **
Ligne 39: Ligne 39:
 ** **
  
-Espace - avez-vous assez d'espace sur votre récepteur pour tous les fichiers venant de votre émetteuret , dans le cas contraire, qu'allez vous faire de çà ? Vous pouvez soit réduire votre liste de fichiers à synchroniser, ou coder une vérification dans le script avec df -h pour fixer une limite (ex : s'il ne reste que 9 Go, arrêt complet de la synchronisation et envoi d'un e-mail ou d'un prompt pour vous).+Espace - avez-vous assez d'espace sur votre récepteur pour tous les fichiers venant de votre émetteur et, dans le cas contraire, qu'allez-vous faire pour y remédier ? Vous pouvez soit réduire votre liste de fichiers à synchroniser, soit coder une vérification dans le script avec df -h pour fixer une limite (ex : s'il ne reste que 9 Go, arrêt complet de la synchronisation et envoi d'un mail ou d'un prompt pour vous).
  
-Une fois que vous avez pris en considération tous ces points, il est temps d'écrire le script. Je vous recommande d'avoir au moins deux vérifications dans le script (si vous n'êtes pas connecté au bon réseauet si l'émetteur est actuellement en ligne). Le reste du script est entièrement de votre ressort, en particulier quand et comment le lancer. Dans le numéro 24, J'ai écrit un article sur cronet depuis j'ai utilisé des tas d'exemples, je vais donc parler que très brièvement des options. Quand vous configurez la tâche cron, vous pouvez soit copier le script dans /etc/cron.hourly, ou /etc/cron.daily. L'autre possibilité est d'éditer votre crontab (crontab -e <username>). Dans la crontab vous pouvez alors créer une ligne pour votre script qui peut être lancé à chaque période d'heures/de joursou bien paramétrer le lancement à une heure (ou une date) spécifique, etc. Je pense qu'un script qui tourne une fois par jour sera bien suffisant pour ceci+Une fois que vous avez pris en considération tous ces points, il est temps d'écrire le script. Je vous recommande d'avoir au moins deux vérifications dans le script (si vous êtes connecté au bon réseau et si l'émetteur est actuellement en ligne). Le reste du script est entièrement de votre ressort, en particulier quand et comment le lancer. Dans le numéro 24, J'ai écrit un article sur cron etdepuisj'ai utilisé des tas d'exemples, je ne vais donc parler que très brièvement des options. Quand vous configurez la tâche cron, vous pouvez copier le script soit dans /etc/cron.hourly, soit dans /etc/cron.daily. L'autre possibilité est d'éditer votre crontab (crontab -e <username>). Dans la crontab vous pouvez alors créer une ligne pour votre script qui peut être lancé à chaque période d'heures/de jours ou bien paramétrer le lancement à une heure (ou une date) spécifique, etc. Je pense qu'un script qui tourne une fois par jour sera bien suffisant. 
  
 ** **
Ligne 61: Ligne 61:
 rsync rsync
  
-Comme vous pouvez le voir au point 3 ci-dessus, rsync offre un grand nombre de vérifications pour éviter de copier plus de fichiers que nécessaire. Le plus utiles sont : +Comme vous pouvez le voir dans le point 3 ci-dessus, rsync offre un grand nombre de vérifications pour éviter de copier plus de fichiers que nécessaire. Le plus utiles sont : 
--u (--update): n'écrase pas les fichiers qui sont plus récents sur le récepteur +-u (--update) : n'écrase pas les fichiers qui sont plus récents sur le récepteur ; 
---inplace : met à jour les fichiers sur place [NDT: en les écrasant directement, sans fichier temporaire] +--inplace : met à jour les fichiers sur place [Ndt : en les écrasant directement, sans fichier temporaire] ; 
---append : ajoute les données à la fin des fichiers plus courts +--append : ajoute les données à la fin des fichiers plus courts ; 
--x : évite de dépasser les limites du filesystem (reste dans une partition) +-x : évite de dépasser les limites du filesystem (reste dans une partition) ; 
---existing : ne crée pas de nouveau fichier sur le récepteur, met à jour seulement les fichiers existant +--existing : ne crée pas de nouveau fichier sur le récepteur, met à jour seulement les fichiers existants ; 
---ignore-existing : ignore les fichiers qui existent déjà sur le récepteur +--ignore-existing : ignore les fichiers qui existent déjà sur le récepteur ; 
---max-size=TAILLE: ne copie aucun fichier plus grand que TAILLE (--min-size existe aussi, quoique moins utile dans ce cas) +--max-size=TAILLE : ne copie aucun fichier plus grand que TAILLE (--min-size existe aussi, quoique moins utile dans ce cas) ; 
---exclude=MOTIF: exclue tout fichier qui correspond au MOTIF +--exclude=MOTIF: exclut tout fichier qui correspond au MOTIF ; 
---exclude-from=FICHIER: lit les MOTIF(S) dans ce FICHIER +--exclude-from=FICHIER : lit les MOTIF(S) dans ce FICHIER ; 
---partial : Garde les fichiers copiés partiellement+--partial : Garde les fichiers copiés partiellement
  
-===== to do =====  
 ** **
 Some other useful switches for rsync: Some other useful switches for rsync:
Ligne 91: Ligne 91:
 ** **
  
-D'autres options très utiles pour rsync: +D'autres options utiles pour rsync : 
---delay-updates : remet à leur place les fichiers mis à jour, seulement une fois que le transfert est complètement terminé. +--delay-updates : remet à leur place les fichiers mis à jour une fois que le transfert est complètement terminé ; 
--r (--recursive) : suit les arborescences +-r (--recursive) : suit les arborescences ; 
--d : copie les répertoires sans récursivité (par défaut rsync n'entre dans aucun répertoire) +-d : copie les répertoires sans récursivité (par défaut rsync n'entre dans aucun répertoire) ; 
--l (--links): copie les liens symboliques comme des liens symboliques +-l (--links): copie les liens symboliques comme des liens symboliques ; 
--E (--executability) : garde les droits d'exécution des fichiers (utile pour les scripts) +-E (--executability) : garde les droits d'exécution des fichiers (utile pour les scripts) ; 
--h : affiche les tailles et messages en langage humain [NDT: conversion automatique en Go, Mo, etc...] +-h : affiche les tailles et messages en langage humain [Ndt : conversion automatique en Go, Mo, etc...] ; 
---progress : affiche une barre de progression pour chaque fichier+--progress : affiche une barre de progression pour chaque fichier.
  
-Pour la liste complète, lisez la page man de rsync+Pour la liste complète, lisez la page man de rsync.
  
 Le format de base de la commande rsync est : Le format de base de la commande rsync est :
Ligne 120: Ligne 120:
 rsync -ru lswest@127.0.0.1:/home/lswest/scripts ~/.bin rsync -ru lswest@127.0.0.1:/home/lswest/scripts ~/.bin
  
-Ceci va ainsi les recopier par dessus. Logiquement, vous voudrez utiliser l'IP réelle de votre PC au lieu de l'IP localhost, mais c'est seulement un exemple.+Ceci va alors les recopier en les écrasant. Logiquement, vous voudrez utiliser l'IP réelle de votre PC au lieu de l'IP localhost, mais c'est seulement un exemple
 + 
 +Comme cet article est presque terminé, je voudrais dire quelques mots sur la synchronisation hors-site : synchroniser par internet, bien que très utile, devrait être restreint à un minimum, simplement parce que le trafic, quoiqu'il soit chiffré, sera plutôt large et pourrait causer des problèmes avec un administrateur ou toute sorte de limites que vous pourriez avoir pour les données.     
 +De plus, les clés ssh sont, généralement, plus sécurisées que les mots de passe, donc je vous recommande de les utiliser partout où c'est possible.
  
-Comme nous finissons cet article, je voudrais dire quelques mots sur la synchronisation hors-site: synchroniser par internet, bien que très utile, devrait être restreinte à un minimum, simplement parce que le trafic, quoiqu'il soit chiffré, sera plutôt large et pourrait causer des erreurs pour un fichier d'administration ou toute sorte de limites que vous pourriez avoir pour les données.     
-De plus les clés ssh sont, généralement, plus sécurisées que les mots de passe,  
 ** **
 If there is a large influx of requests for an actual example script, I will happily deliver it next month. I do, however, recommend you try writing your own, or customize any example scripts you find to suit your needs. If you're of the opinion you'd like one, please let me know in an email (address is below). If you have some concrete questions about a script you're writing yourself, you're also welcome to email me about it. If there is a large influx of requests for an actual example script, I will happily deliver it next month. I do, however, recommend you try writing your own, or customize any example scripts you find to suit your needs. If you're of the opinion you'd like one, please let me know in an email (address is below). If you have some concrete questions about a script you're writing yourself, you're also welcome to email me about it.
Ligne 131: Ligne 132:
 Links: https://wiki.archlinux.org/index.php/SSH_Keys#Generating_an_SSH_key_pair Links: https://wiki.archlinux.org/index.php/SSH_Keys#Generating_an_SSH_key_pair
 ** **
 +
 +S'il y a un large afflux de demandes pour un script d'exemple, je serai ravi de vous le fournir le mois prochain. Je vous recommande, cependant, d'essayer d'écrire le vôtre ou adapter un script d'exemple que vous jugerez correspondre à vos besoins. Si vous êtes de ceux qui en voudraient un, merci de me le faire savoir par courriel (adresse ci-dessous). Si vous avez des questions concrètes sur un script que vous écririez vous-même, vous êtes aussi invités à m'envoyer un mail sur le sujet.
 +
 +Si quelqu'un a des questions, des préoccupations ou simplement veut partager un script qu'il a réalisé, merci de m'envoyer un mail à lswest34@gmail.com. Si vous le faites, pensez à inclure C&C ou FCM dans le titre, sinon je ne le regarderai pas.
 +
 +Lien : https://wiki.archlinux.org/index.php/SSH_Keys#Generating_an_SSH_key_pair
 +
issue57/c_c.1330954551.txt.gz · Dernière modification : 2012/03/05 14:35 de frangi