Synchronisation de dossier sur un serveur FTP

Voici un petit script qui permet de  synchroniser un dossier local sur un serveur FTP.  Il utilise lftp et c’est très pratique si rsyncd ou ssh n’est pas disponible sur le serveur.

Si le dossier n’existe pas sur le serveur distant, il est créé automatiquement et comme l’option « delete » est activée, on s’arrête à la moindre erreur avec l’option --max-errors=0. Il faudra modifier les variables ftphost, ftpuser et ftppass pour s’adapter à votre configuration.

#!/bin/sh
#
# $Id$
ftphost="ftp.server.org"
ftpuser="my_username"
ftppass="my_password"
source="$1"
destination="$2"
rc=1

if [ -z "$source" -o -z "$destination" ] ; then
        echo "usage: $(basename $0) source destination"
        exit $rc
fi

if [ -e "$source" ] ; then
        lftp --max-errors=0 -c "
        set ftp:list-options -a
        open ftp://$ftpuser:$ftppass@$ftphost
        lcd $source
        mkdir -f -p $destination
        cd $destination
        mirror --reverse --verbose --delete"
        rc=$?
fi
exit $rc