J'écris un script Linux Shell pour copier un répertoire local sur un serveur distant (en supprimant tous les fichiers existants).
Serveur local: Les commandes ftp
et lftp
sont disponibles, nonncftp
ou tout autre outil graphique.
Serveur distant: accessible uniquement via FTP. Pas de rsync ni SSH ni FXP.
Je pense à lister les fichiers locaux et distants pour générer un script lftp puis l'exécuter. Y a-t-il une meilleure façon?
Remarque: le téléchargement de fichiers modifiés uniquement serait un plus, mais pas obligatoire.
lftp devrait pouvoir le faire en une seule étape, en particulier avec lftp mirror
:
EDIT: la syntaxe de la commande lftp prête à confusion, l'invocation d'origine que j'ai publiée ne fonctionne pas. Essayez-le comme ceci:
lftp -e "miroir -R {répertoire local} {répertoire distant}" -u {nom d'utilisateur}, {mot de passe} {hôte}
notez les guillemets autour des arguments du -e
commutateur.
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*
Cela a fonctionné pour moi, de nombreuses autres tentatives ont échoué. Une fois dans lftp, plus d'informations disponibles via:
help mput
Basée sur l'idée de Phil d'utiliser le mode miroir de lftp, cette commande fait l'affaire:
lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'
Un inconvénient est que le serveur local doit avoir un serveur FTP en cours d'exécution.
Enfin obtenu la réponse !!! Créer un script shell ftpmirror.sh
#!/bin/bash
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
Si le package lftp n'est pas installé, il l'a installé en utilisant yum.