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.