Articles

Utiliser rsync pour syncroniser de gros volumes de données

Image
On se retrouve parfois dans la situation ou on a un serveur principal qui contient un certain volume de données qui doivent être copiée à intervalle régulier sur des serveurs "miroirs". Dans ces cas de figures il peut être intéressant de configurer d'apprendre à utiliser la commande rsync (voire même de configurer un serveur rsync). Cet utilitaire du projet samba maintenu par Wayne Davison est excellent pour les transferts de fichier en mode incrémental. Il y a une excellente documentation et de nombreux exemples sur le site du projet http://www.samba.org/rsync/ . S'il n'est pas déjà présent sur votre box, il peut être installé relativement facilement sur votre distribution Linux avec les outils de paquetages adapté ( yum install rsync rpm sous fedora & co, et apt-get install rsync pour debian, ubuntu et dérivés) Dans mon cas je l'utilise dans des scripts executé par des crontab toutes les nuits pour synchroniser quotidiennement plus de 80 GB de géodo...

Avoir une belle distro SliTaz sur sa clé USB

Avec l'utilitaire UNetbootin on peut intaller en quelques click de souris une chouette Distribution Linux comme par exemple la fameuse distro SliTaz (30 mb de concentré de bonheur) sur sa clé USB favorite

Comment comparer (et connaitre) les paquets debian installés sur 2 serveurs

Je me suis retrouvé dans la situation ou je voulais connaitre la liste des paquets installés sur une Debian 5.0 Lenny et comparer cette liste avec ce qui était sur un autre serveur. Tout d'abord pour obtenir une liste exhaustive des paquets présent sur un serveur Debian j'utilise l'excellent dpkg . dpkg -l va donner une liste des paquets installés par ordre alphabétique avec version et description et status, qqch du style: gocarto01:~# dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-=================================-=================================-================================================================================== ii adduser 3.110 add and remove users and gr...

Augmenter la taille d'un volume logique LVM2 online

J'ai installé proxmox sur un de mes serveurs contenant 2 disques physiques en miroir RAID1 (raid hard avec un controlleur PERC) vu comme /dev/sda d'une taille de 73GB par Linux. Proxmox installé avec un partitionnment par défaut j'avais au final le partitionnment suivant sur le disque : calc0:/var/lib/vz# fdisk /dev/sda -l Disk /dev/sda: 73.5 GB, 73555509248 bytes 255 heads, 63 sectors/track, 8942 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 66 524288 83 Linux /dev/sda2 66 8942 71302295 8e Linux LVM et au niveau du LVM j'avais les infos suivantes au niveau physique, de "volume group" et logique: calc0nokvm:/var/lib/vz# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name pve PV Size 68.00 GB / not usable 0 Allocatable yes (but full) PE Size (KBy...

Utilisation de Proxmox derrière un Proxy

J'utilise depuis peu la distribution Proxmox comme environnent de virtualisation. Seulement il se trouve que dans le réseau ou j'utilise cette distribution je dois utiliser un proxy pour sortir sur le Net. Voici les modifications qu'il faut effectuer dans l'installation de base pour que tout cela fonctionne correctement. Pour que "apt-get update" et "apt-get upgrade" fonctionne on modifie (ou le cas échéant création) du fichier /etc/apt/apt.conf contenant au moins la ligne : Acquire::http::Proxy "http://10.1.253.63:3128"; Pour que wget fonctionne on modifie le fichier /etc/wgetrc aux environs de la ligne 79 on enlève le commentaire en supprimant le # et on corrige l'adresse du proxy comme suit : http_proxy = http://10.1.253.63:3128/ Pour que la commande "pveam update" fonctionne on modifie le fichier : /usr/share/perl5/PVE/APLInfo.pm après la ligne 84 dans la méthode update on ajoute : # this code works for ftp and htt...

Sur la coloration syntaxique dans Vim sur Debian

Je travaille en ce moment sur la configuration d'un serveur ProxMox. Cette distribution permet de mettre en oeuvre un serveur de virtualisation assez rapidement en s'appuyant sur une debian 64 bit et sur les outils kvm que j'utilise déjà depuis un bon bout de temps sur Gentoo et OpenVz (une solution de virtualisation "container" pour Linux que je découvre), il faudra d'ailleurs que je fasse un post rien que sur ça. En attendant je vous livre l'url publique de mon blocnotes sur la virtualisation Bref toujours est-il que dans mon envirronement réseau je suis dérrière un Proxy et qu'il a fallu que je fasse 2-3 modifs pour que tout cela fonctionne. Et comme ProxMox utilise les modules PVE en perl et que j'en avais marre de voir le code Perl dans /usr/share/perl5/PVE/ en Noir et Blanc avec vim je voulais activer la coloration syntaxique en faisant un syntax enable en mode commande dans Vim et je me vois répondre que c'est Nicht Supportieren dans c...

Convertir des fichier Tiff en Geotiff avec gdal

J'avais un répertoire plein de fichiers tif avec les fichiers tfw. Je voulais pouvoir me retrouver avec toutes ces images converties en Geotiff . L'avantage ensuite c'est que l'on a inclus dans le fichier image tiff toute les informations de géoréférencement. Pour cela on a besoin d'un seul outil : gdal_translate de l'excellente suite d'outil Gdal Ainsi avec la commande : for i in `ls -1 *.tif`; do (gdal_translate -of GTiff -a_srs EPSG:4149 $i `basename $i .tif`_geo.tif); done tous les fichiers d'origine de votre répertoire serons préservés et pour chaque fichier tif MonBoFichier.tif il y aura un nouveau fichier MonBoFichier_geo.tif qui aura été créé. Et ces nouveaux fichiers contiennent des informations de géoréférencement comme vous pouvez le constater en lancant un tiffinfo ou mieux un : listgeo cn41_geo.tif Geotiff_Information: Version: 1 Key_Revision: 1.0 Tagged_Information: ModelTiepointTag (2,3): 0 0 ...

Backuper toutes les bases de données d'un serveur Postgresql

Il se trouve que je viens de décider d'updater mon Postgresql 8.3 sur mon serveur de développement. Mais avant de basculer de la 8.2 à la 8.3 j'aimerais faire un backup de chacune de mes bases de données. Comme c'est une opération que je fais assez régulièrement je décide d'écrire un petit script que voici: #!/bin/bash ## Script : DBBAckup.sh allows to backup a postgresql database USAGE=" Usage : `basename $0 ` dbnametobackup [postgresql_server(=localhost by default)] " CGDATE=`date -I` if [ $# -lt 2 ] ; then if [ $# -lt 1 ] ; then echo " $USAGE " exit 1 else DBName= $1 DBServer='localhost' fi else DBName=$1 DBServer=$2 fi BackupPath=" DBBackup_${DBName}_${CGDATE}_Compressed.backup " echo " ****Started backup of db $DBName at `date`, log of operation is in $BackupPath.log " if pg_dump --ignore-version --verbose --format=c --oids -h $DBServer...

FireFox 3 ça y est 5'690'000 download à 12h heure de Berck

Image
Vous pouvez suivre le décompte du nombre de download en temps réel chez Mozilla Et chez Framasoft vous pouvez trouver un petit guide des nouveautés de FireFox 3 en Français qui est une traduction de l'article en anglais " A Field Guide to FireFox 3 " de Debra Lyn Richardson

Le plus bô des navigateurs fait peau neuve

Image
Il est beau il est frais il est dans les étalages : le tout nouveau FireFox 3 sera disponible dans les heures qui viennent et c'est la bonne occasion de rappeler à tout un chacun d'aller chercher sa toute nouvelle version. J'ai déjà pas mal utilisé pour ma part les versions 3 beta et candidate release et le premier constat que j'ai pu faire c'est une plus grande RAPIDITE . Oui, Firefox 3 est sacrément plus rapide sur des pages web 2 bien chargées. L'autre point que je trouve fabuleux c'est un support encore accru des normes dont au niveau graphique SVG et CANVAS .D'ailleurs je rpofite de signaler un essai particulièrement intéressant d'intégration avec OpenGL dans le projet CANVAS 3D démarré par Vladimir Vukicevic. Mais il faut aussi et surtout dire que c'est la première version de FireFox qui utilise le moteur de rendu et de layout Gecko 1.9 . Et on pourrait écrire un livre entier sur tout ce que l'on peut faire juste avec Gecko. D'ai...

Detecter des images foireuses

Image
Lorsque l'on doit retrouver dans une arborescence toutes les images jpeg,gif ou png qui n'en sont pas, parce que une "bonne âme" a fait une malencontreuse "erreur" lors d'un transfert de fichiers qui c'est mal passé et que la "bonne âme" en question n'a pas pris la peine de tester son boulot... Enfin bref je veux donc détecter toutes les images qui n'en sont pas. Première étape, détecter tous les fichiers qui finissent par gif,png et jpg : find mydirectory/ -regextype egrep -iregex '.+\.(png|gif|jpg)' Cette commande va me trouver tous les fichiers qui possèdent un nom qui va se terminer par un .png ou un .gi ou encore un .jpg. Ok on a la liste de toutes les images reste à trier le bon grain de l'ivraie pour cela je vais utiliser la commande identify du superbe Imagemagick Cet outil très puissant permet entre autre de traiter des images en ligne de commande et il se trouve qu'avec identify on va laisser imagemagick...

Extraire tous les textes de liens dans un tag

Soit une page html contenant une liste de fichiers du style de ce que l'on trouve dans une page d'index générée par le serveur Apache. Je veux en extraire tous les noms de fichiers. Donc en résumé j'ai quelque chose du style : <img src="compressed.gif" alt="[ ]" height="22" width="20"> <a href="http://mirror.switch.ch/ftp/mirror/gentoo/distfiles/zsh-lovers_0.5.orig.tar.gz">zsh-lovers_0.5.orig.tar.gz</a> 01-Aug-2006 18:05 487K <img src="unknown.gif" alt="[ ]" height="22" width="20"> <a href="http://mirror.switch.ch/ftp/mirror/gentoo/distfiles/zsnes151src.tar.bz2">zsnes151src.tar.bz2</a> 25-Jan-2007 02:22 1.0M <img src="compressed.gif" alt="[ ]" height="22" width="20"> <a href="http://mirror.switch.ch/ftp/mirror/gentoo/distfiles/zssh-1.5a.tgz">zssh-1.5a.tgz</a> 2...

esound emerge failed

J'ai eu une plantée de jade lors de mon emerge -pvuD world sur le ebuild media-sound/esound-0.2.38-r1 en fait c'est pas la première fois que j'ai des ennuis avec jade lors d'un ebuild or ce qui est ennuyant c'est que malgré le fait que j'avais utilisé un USE -doc sur ce ebuild à la compilation il s'obstinait à vouloir lancer openjade et à planter systématiquement. Quelques google-minutes plus tard je trouvais la solution sur le forum gentoo en fait il s'agit d'une corruption possible de /etc/sgml et la solution est de refaire un build de sgml-common avec : emerge -v app-text/sgml-common l'histoire complète se trouve sur cette entrée du bugzilla gentoo

Comment extraire une "zone" de texte

Il arrive qu'on aie besoin de sortir tout ce qu'il y a en tre blabla et blabli et bien en perl on peut utiliser lkes ranges avec l'opérateur '..'. Ainsi avec perl -ne 'print if /<title.*>/../<\/title>;/' index.html On obtient uniquement le titre de la page Bien sur rien n'empêche d'utiliser l'excellent LWP pour récupérer la page perl -MLWP::Simple -e 'getprint q(http://lapt.blogspot.com)'

Exécuter une commande sur plusieurs serveurs

Comme il m'arrive de plus en plus souvent de devoir exécuter une commande sur plusieurs serveurs Linux, je devais trouver une solution efficace et élégante pour éviter de lancer n fois un ssh NomServeuri MAcommande. Bien entendu cette solution existe déjà elle s'appelle DSH pour distributed shell (ou dancer shell ) et un fois installé elle permet de lancer un : dsh -a -M -c -- geos-config --version pour connaitre la version de geos installé sur chaque serveur l'option -a indique que l'on veut lancer la commande sur toutes les machines se trouvant dans /etc/dsh/machines.list l'option -c indique que l'on veut lancer la commande en mode concurrent l'option -M préfixe la sortie des commandes avec le nom du serveur qui a envoyé la réponse le fichier /etc/dsh/dsh.conf permet de configurer les valeurs par défaut de certaines options Cet outil est une source d'efficacité extraordinaire quand on a plusieurs serveurs et bien sur comme toujours pour un outil puis...

Compter le nombre de codes HTTP dans des fichiers logs avec awk

Image
Aujourd'hui je devais sortir rapidement la liste des différents codes HTTP de tous les fichiers logs IIS. Comme expliqué dans mon post précédent j'ai un fichier par jour et environ 16 GB de fichiers logs sur une année... Dans un fichier log pour un serveur web il y a en général un code indiquant le status de l'opération réalisée. Ainsi dans IIS on peut utiliser un format de log W3C qui affichera la colonne sc-status pour le Http status code ainsi que la colonne sc-substatus. Mon but est de parcourir tous les fichiers logs et de calculer le nombre de fois que l'on trouve chacun de ces status code. On pourrait le faire avec du perl, mais je préfère aujourd'hui essayer awk présent sur toutes les bonnes distros Linux en standard. awk ou le plus répandu et moderne gawk est un outil formidable pour traiter très rapidement des gros volumes de données au format texte. Commençons par un exemple simple : je veux trouver toutes les lignes du log ou le code d'état HTTP es...

Analyse de fichiers Log en perl

Quand il faut analyser de grandes quantité de données sous format texte tel que des fichiers logs, Perl est d'une aide inappréciable. Voici un joli "perl oneliner" qui va calculer le nombre de hits par user login dans un log IIS perl -ne 'unless (/^#.*$/) {@e=split(/ /,$_); $Login{uc($e[8])}++;} END{foreach $key (sort keys %Login){printf(qq(%-25s %i\n),$key,$Login{$key}); } }' 2007/ex070106.log 2007/ex070107.log |sort -k 2nr >DistinctsLogins200701.txt Analysons un peu cette ligne de commande: perl -ne : on lance perl avec les option -n qui rajoute une boucle while ( ) {...} implicite et l'option -e qui permet justement d'exécuter une commande cf doc perl en ligne 'unless (/^#.*$/) { : viens maintenant le début du programme perl, en l'occurrence on dit que tant qu'on est pas dans une ligne de commentaire on va faire quelque chose se trouvant après l'accolade ouvrante. En effet dans les fichiers logs une ligne commentaire commence p...

Downloader un fichier sur le net sous Win32

Il est parfois nécessaire de récupérer un ou plusieurs fichiers sur le net en ligne de commande sous Microsoft. Pour cela il suffit d'utiliser l'excellent curl compilé pour cette plateforme. Ensuite de quoi il faut penser à utiliser un utilisateur null avec l'option -u ":" . Ainsi cela force curl à utiliser les credentials du compte courant, c'est à dire le user qui est connecté. Chez moi au final cela donne curl --anyauth -u ":" -x "" --netrc http://www.test.com/logs/ l'option -x "" annule une evt variable d'environnement définissant un proxy, elle est utile par exemple quand vous ne voulez pas utilisez le proxy parceque votre serveur est dans votre réseau local (et pas sur internet) A vous de voir si vous en avez besoin ou pas selon les cas.

Trouver la date de hier en Perl

Pour récupérer la date de hier en Perl, toujours en une ligne: perl -e '($d,$m,$y)= (localtime)[3..5];printf("%04d-%02d-%02d",$y+1900 ,$m+1,$d-1)' retournera : 2007-07-09 S'il s'agit de conserver cette chaine pour par exemple downloader un fichier log il suffit d'utiliser sprintf #!/usr/bin/perl ($d,$m,$y)= (localtime)[3..5]; $yesterday=sprintf("%04d-%02d-%02d",$y+1900 ,$m+1,$d-1); print $yesterday;

Récuperer tous les hyperliens d'une page web

c'est trop beau pour pas le signaler, en une ligne afficher la liste de tous les hyperliens sur une page web curl --anyauth --netrc http://yourweb/yourpage.htm |perl -ne 'while (m/HREF=["]([^"]+)/gi) {print "$1\n";} '