<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Another Home Page Blog - wget</title><link href="https://blog.anotherhomepage.org/" rel="alternate"></link><link href="https://blog.anotherhomepage.org/feed/tag/wget/atom" rel="self"></link><id>https://blog.anotherhomepage.org/</id><updated>2008-03-23T14:55:00+01:00</updated><entry><title>Créer un miroir CentOS pour les updates</title><link href="https://blog.anotherhomepage.org/post/2008/03/23/Creer-un-miroir-CentOS-pour-les-updates/" rel="alternate"></link><published>2008-03-23T14:55:00+01:00</published><updated>2008-03-23T14:55:00+01:00</updated><author><name>Nils Ratusznik</name></author><id>tag:blog.anotherhomepage.org,2008-03-23:/post/2008/03/23/Creer-un-miroir-CentOS-pour-les-updates/</id><summary type="html">&lt;p&gt;Et tu sync, et tu sync, et tu wget&lt;/p&gt;
&lt;p&gt;Hier, j'ai commencé à me dire que ça serait sympa de rendre encore plus rapide mes installations de machines virtuelles CentOS 5. Donc, avant d'attaquer le trifouillage de mes kickstarts afin d'appliquer mes configurations de manière automatique, j'en suis venu à …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Et tu sync, et tu sync, et tu wget&lt;/p&gt;
&lt;p&gt;Hier, j'ai commencé à me dire que ça serait sympa de rendre encore plus rapide mes installations de machines virtuelles CentOS 5. Donc, avant d'attaquer le trifouillage de mes kickstarts afin d'appliquer mes configurations de manière automatique, j'en suis venu à la conclusion qu'avoir le dépôt des mises à jour en local serait plus rapide que de devoir tout récupérer sur Internet.&lt;/p&gt;
&lt;p&gt;Donc, il me faut me synchroniser avec un miroir. Comme je suis chez Free, j'ai voulu utiliser leur miroir. Oui mais, ce n'est qu'un miroir FTP. Et la plupart des scripts de synchronisation de miroir utilisent &lt;a href="http://rsync.samba.org/"&gt;rsync&lt;/a&gt;. Je me suis donc rabattu sur le miroir de &lt;a href="http://www.ipsl.jussieu.fr/"&gt;l'IPSL Jussieu&lt;/a&gt; qui possède un mirroir &lt;a href="http://distrib-coffee.ipsl.jussieu.fr/pub/linux/"&gt;http&lt;/a&gt;, &lt;a href="ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/"&gt;ftp&lt;/a&gt; et &lt;a href="rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/"&gt;rsync&lt;/a&gt;. Génial ! Quelques instants plus tard, j'adapte &lt;a href="http://lists.centos.org/pipermail/centos-mirror/2005-April/000936.html"&gt;ce script&lt;/a&gt; qui donne ceci :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c1"&gt;#################################################################################&lt;/span&gt;
&lt;span class="c1"&gt;#                                                                               #&lt;/span&gt;
&lt;span class="c1"&gt;# CentOS mirror syncer                                                          #&lt;/span&gt;
&lt;span class="c1"&gt;# Comes from :                                                                  #&lt;/span&gt;
&lt;span class="c1"&gt;#                                                                               #&lt;/span&gt;
&lt;span class="c1"&gt;# http://lists.centos.org/pipermail/centos-mirror/2005-April/000936.html        #&lt;/span&gt;
&lt;span class="c1"&gt;# http://wiki.monserveurperso.com/wakka.php?wiki=MirroringFTP                   #&lt;/span&gt;
&lt;span class="c1"&gt;# man wget                                                                      #&lt;/span&gt;
&lt;span class="c1"&gt;#                                                                               #&lt;/span&gt;
&lt;span class="c1"&gt;#################################################################################&lt;/span&gt;

&lt;span class="nv"&gt;RSYNC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;which&lt;span class="w"&gt; &lt;/span&gt;rsync&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;RSYNC_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;-aHv --delete --bwlimit=512 &amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;CHOWN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;which&lt;span class="w"&gt; &lt;/span&gt;chown&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;CHMOD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;which&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;MIRROR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/centos/5/updates/i386/&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;LOCAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/home/ftp/mirrors/centos/5/updates/i386/&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;PIDFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/var/run/centosmirror.pid&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# Don&amp;#39;t run it twice...&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nv"&gt;RUNPID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ps&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$RUNPID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror is already running...&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror pid found but process dead, cleaning up&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;rm&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;No CentOS Mirror Process Detected&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror Started at &amp;quot;&lt;/span&gt;
date

&lt;span class="c1"&gt;# Download, set up rights&lt;/span&gt;
&lt;span class="nv"&gt;$RSYNC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$RSYNC_OPTS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$MIRROR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;
&lt;span class="nv"&gt;$CHOWN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-R&lt;span class="w"&gt; &lt;/span&gt;apache:apache&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;
&lt;span class="nv"&gt;$CHMOD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-R&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;755&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror Ended at &amp;quot;&lt;/span&gt;
date
rm&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ca, c'était la version rsync. Et si on est derrière un proxy, et qu'on ne peut pas faire du rsync? Pour le moment je me suis concentré sur ftp, mais ce script devrait tourner pour http :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c1"&gt;#################################################################################&lt;/span&gt;
&lt;span class="c1"&gt;#                                                                               #&lt;/span&gt;
&lt;span class="c1"&gt;# CentOS mirror syncer                                                          #&lt;/span&gt;
&lt;span class="c1"&gt;# Comes from :                                                                  #&lt;/span&gt;
&lt;span class="c1"&gt;#                                                                               #&lt;/span&gt;
&lt;span class="c1"&gt;# http://lists.centos.org/pipermail/centos-mirror/2005-April/000936.html        #&lt;/span&gt;
&lt;span class="c1"&gt;# http://wiki.monserveurperso.com/wakka.php?wiki=MirroringFTP                   #&lt;/span&gt;
&lt;span class="c1"&gt;# man wget                                                                      #&lt;/span&gt;
&lt;span class="c1"&gt;#                                                                               #&lt;/span&gt;
&lt;span class="c1"&gt;#################################################################################&lt;/span&gt;

&lt;span class="c1"&gt;# Variables&lt;/span&gt;

&lt;span class="nv"&gt;WGET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;which&lt;span class="w"&gt; &lt;/span&gt;wget&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;WGET_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;-m --limit-rate=512k -nH --cut-dir 5&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;CHOWN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;which&lt;span class="w"&gt; &lt;/span&gt;chown&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;CHMOD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;which&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;MIRROR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;ftp://ftp.free.fr/mirrors/ftp.centos.org/5/updates/i386/*&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;LOCAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/home/ftp/mirrors/centos/5/updates/i386/&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;PIDFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/var/run/centosmirror.pid&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# Don&amp;#39;t run it twice...&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nv"&gt;RUNPID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ps&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$RUNPID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror is already running...&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror pid found but process dead, cleaning up&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;rm&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;No CentOS Mirror Process Detected&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;

&lt;span class="c1"&gt;# wget + ftp = .listing files&lt;/span&gt;
find&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-name&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.listing&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-delete

&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror Started at &amp;quot;&lt;/span&gt;
date

&lt;span class="c1"&gt;# Download, set up rights&lt;/span&gt;
&lt;span class="nv"&gt;$WGET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$WGET_OPTS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$MIRROR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;
&lt;span class="nv"&gt;$CHOWN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-R&lt;span class="w"&gt; &lt;/span&gt;apache:apache&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;
&lt;span class="nv"&gt;$CHMOD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-R&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;755&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-n&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CentOS Mirror Ended at &amp;quot;&lt;/span&gt;
date
rm&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;
find&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$LOCAL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-name&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.listing&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-delete
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;On remarquera que c'est grosso modo la même chose, la version wget générant des fichiers .listing pour le téléchargement récursif, je les efface avant et après coup, au cas où.Comme mon miroir est aussi dispo en http, je rend le tout accessible pour l'utilisateur apache. Ce dernier script reste cependant à améliorer, car contrairement à rsync, il n'efface pas les fichiers présents en local mais disparus du miroir distant.&lt;/p&gt;</content><category term="Logiciels libres"></category><category term="CentOS"></category><category term="Linux"></category><category term="rsync"></category><category term="wget"></category></entry></feed>