ftpreposync-0.1
+
Par Remi le mercredi 21 février 2007, 20:11 - Archives - Lien permanent
A little script to synchronize a local repository with a remote copy using FTP. It is written in PHP.
Un petit script pour synchroniser un dépôt local avec une copie distante en utilisant FTP. Il est écrit en PHP.
Je dois régulièrement mettre à jour les miroirs de mon dépôt. Dans la majorité des cas j'utilise la commande rsync au dessus de ssh.
Exemple :
rsync -av -e ssh fc6.x86_64/ remi@remoterepo:/path/to/repo/rpms/fc6.x86_64/ rsync -av --delete -e ssh fc6.x86_64/ remi@remoterepo:/path/to/repo/rpms/fc6.x86_64/
Vous noterez au passage l'astuce qui consiste à le faire en 2 passes, la première envoie les nouveaux RPM et termine par le dossier repodata, la seconde nettoie les anciennes versions.
Dans le cas de mon hébergeur principal (Free.fr) je suis malheureusement obligé d'utiliser un client ftp.
Après avoir essayé plusieurs outils disponibles, j'ai décidé d'écrire mon propre petit script de synchronisation (développer me manque quelque fois...).
Il est conçu pour mettre à jour un dépôt et rien d'autre :-)
Fonctionnement
- il contrôle que le répertoire local contient un dossier repodata
- il établi la liste des RPM locaux
- il se connecte sur le serveur FTP
- il vérifie l'existence du dossier indiqué
- il établie la liste des RPM distant
- il envoie les nouveaux RPM (absent du distant)
- il supprime les anciens (absent du local)
- il crée, si besoin le repodata distant
- il envoi le contenu du dossier repodata si des modifications ont été détectées
Utilisation
$ ftpreposync --help ftpreposync version 0.1 Usage: ftpreposync [-vrqlc] <-usp> -c --check Check only, no action -l --local (optional)value Local directory (.) -p --password=value Password for user on server -q --quiet Minimal output -r --remote (optional)value Remote directory (/) -s --server=value FTP server name -u --user=value User login on server -v --verbose Verobse output
Exemple :
ftpreposync -s ftp.free.fr -u compte -p secret -l fc6.x86_64 -r /rpms/fc6.x86_64 -v
Téléchargement : ftpreposync.txt
Vous remarquerez, au passage, l'utilisation de l'extension Console_Getargs (php-pear-console-getargs-1.3.3-1) pour l'analyse des options passées au script.
Il ne s'agit que d'une première version, et comme toujours, vos commentaires sont les bienvenus.
Commentaires
Ce script est dans mes petits papiers, je testerai lorsque mon serveur de compilation sera en place d'ici quelques temps...
Est ce que tu regénères le répertoire repodata à chaque mises à jours du dépôt local?
Oui, si le script détecte du changement (nouveaux RPM) il envoie les meta-données (qui ont du être générées au préalable avec la commande createrepo)