Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
linux:synchro_lftp [2010/03/06 09:17] matthieu |
linux:synchro_lftp [2011/01/11 23:50] (Version actuelle) matthieu |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag>fr fr:linux fr:transfert_de_fichier fr:sauvegarde}} | ||
| ====== Synchronisation lftp ====== | ====== Synchronisation lftp ====== | ||
| Ligne 74: | Ligne 75: | ||
| et distant sont utilisés. | et distant sont utilisés. | ||
| </code> | </code> | ||
| + | |||
| + | Il est fortement recommandé d'utiliser l'option --dry-run pour les essais. | ||
| + | |||
| + | Voici un exemple de synchronisation par download : | ||
| + | mirror /Data/Photos /data/transfert/photos -v --log /var/log/lftp/download_nas --parallel=10 --no-perms -e | ||
| + | |||
| + | * /Data/Photos est la source située sur le serveur distant | ||
| + | * /data/transfert/photos est la cible locale | ||
| + | * -v rend lftp plus verbeux | ||
| + | * --log indique dans quel fichier inscrire les logs, attention ce fichier est écrasé à chaque exécution et n'indique pas le résultat des dry-run | ||
| + | * --parallel indique le nombre de transferts en parallèle, pratique pour les fichiers de petite taille | ||
| + | * --no-perms ne synchronise pas les permissions | ||
| + | * -e supprime dans le répertoire cible les fichiers absents de la source | ||
| + | |||
| + | Voici un exemple de synchronisation en upload : | ||
| + | mirror -R /space/Videos/ /data/videos/ --ignore-time --no-perms -e -v | ||
| + | |||
| + | * -R indique une synchronisation inverse (upload) | ||
| + | * /space/Videos/ est la source locale à transférer | ||
| + | * /data/videos/ est la cible située sur le serveur distant | ||
| + | * --ignore-time indique de ne pas utiliser la date et l'heure des fichiers pour identifier si un transfert est nécessaire (seule la taille est utilisée) | ||
| + | * --no-perms indique de ne pas synchroniser les permissions | ||
| + | * -e supprime dans le répertoire cible les fichiers absents de la source | ||
| + | * -v rend lftp plus verbeux | ||
| + | |||
| + | En upload, il n'est pas possible de modifier l'heure des fichiers destinations et souvent les permissions également, c'est pourquoi il est recommander de les désactiver. | ||
| + | |||
| + | Lorsque la commande désirée est finalisée, il est possible de la copier dans un fichier pour faire un script lftp. | ||
| + | |||
| + | Par exemple : | ||
| + | <file> | ||
| + | connect nas | ||
| + | mirror /Data/Photos /data/transfert/photos -v --log /var/log/lftp/download_nas --parallel=10 --no-perms -e | ||
| + | </file> | ||
| + | |||
| + | Il suffit ensuite d'exécuter le script avec l'option -f de lftp. | ||
| ===== Synchronisation automatisée par script ===== | ===== Synchronisation automatisée par script ===== | ||
| + | Pour automatiser cela, voici un petit script qui exécute un fichier de commande lftp.\\ | ||
| + | Ce script exécute lftp en tâche de fond comme un daemon et permet de l'arrêter ou le redémarrer. | ||
| + | |||
| + | Pour utiliser le script, il faut : | ||
| + | - le copier dans un fichier | ||
| + | - modifier NAME à votre convenance | ||
| + | - modifier le lien vers le scripts lftp dans DAEMON_OPTS | ||
| + | - rendre le fichier exécutable | ||
| + | |||
| + | Ce script dispose des options suivantes : | ||
| + | * start : démarre la synchro | ||
| + | * stop : arrête le process lftp | ||
| + | * restart : arrête puis redémarre la synchro | ||
| + | * check : indique si le process est toujours en cours | ||
| + | |||
| + | Script : | ||
| + | <file> | ||
| + | #!/bin/sh | ||
| + | |||
| + | # lftp synchronization script by Matthieu Bouthors | ||
| + | # http://www.bouthors.fr | ||
| + | |||
| + | # Change NAME and DAEMON_OPTS before use | ||
| + | set -e | ||
| + | |||
| + | # Must be a valid filename | ||
| + | NAME=lftp_synchro | ||
| + | PIDFILE=/var/run/$NAME.pid | ||
| + | #This is the command to be run, give the full pathname | ||
| + | DAEMON=/usr/bin/lftp | ||
| + | DAEMON_OPTS="-f /chemin/vers/cmd.lftp" | ||
| + | |||
| + | export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" | ||
| + | |||
| + | # check if lftp is running | ||
| + | |||
| + | RUNNING=false | ||
| + | if [ -e $PIDFILE ] | ||
| + | then | ||
| + | currentpid=`cat $PIDFILE` | ||
| + | if `ps -p $currentpid > /dev/null` | ||
| + | then | ||
| + | RUNNING=true | ||
| + | else | ||
| + | rm -f $PIDFILE | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | case "$1" in | ||
| + | start) | ||
| + | date | ||
| + | if $RUNNING | ||
| + | then | ||
| + | started=`date -r $PIDFILE` | ||
| + | echo "daemon $NAME already started since $started, you need to stop it first" | ||
| + | else | ||
| + | echo -n "Starting daemon: "$NAME | ||
| + | start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $DAEMON -- $DAEMON_OPTS | ||
| + | echo "." | ||
| + | fi | ||
| + | ;; | ||
| + | stop) | ||
| + | date | ||
| + | echo -n "Stopping daemon: "$NAME | ||
| + | start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE | ||
| + | rm -f $PIDFILE | ||
| + | echo "." | ||
| + | ;; | ||
| + | restart) | ||
| + | date | ||
| + | echo -n "Restarting daemon: "$NAME | ||
| + | if $RUNNING | ||
| + | then | ||
| + | start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE | ||
| + | rm -f $PIDFILE | ||
| + | fi | ||
| + | start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $DAEMON -- $DAEMON_OPTS | ||
| + | echo "." | ||
| + | ;; | ||
| + | check) | ||
| + | if $RUNNING | ||
| + | then | ||
| + | echo "$NAME is running" | ||
| + | else | ||
| + | echo "$NAME is not running" | ||
| + | fi | ||
| + | ;; | ||
| + | |||
| + | *) | ||
| + | echo "Usage: "$1" {start|stop|restart|check}" | ||
| + | exit 1 | ||
| + | esac | ||
| + | exit 0 | ||
| + | </file> | ||