Synchronisation de fichiers via FTP

11

J'ai besoin de synchroniser des fichiers sur mon ordinateur avec un serveur auquel je n'ai qu'un accès FTP. Je ne peux donc pas utiliser rsync (cela nécessiterait au moins SFTP, mais le seul canal disponible pour moi est le FTP vanilla ordinaire).

Je n'ai besoin que d'une synchronisation unidirectionnelle: de ma machine au serveur. J'ai entendu parler d'un programme appelé unisson , mais il semble être destiné à la synchronisation bidirectionnelle et je ne suis pas sûr qu'il puisse être modifié pour faire ce que je veux. Je dois également ajouter que le programme devrait fonctionner de manière non interactive, afin qu'il puisse être utilisé dans un script.

La dernière option serait d'écrire mon propre script qui compare les fichiers par heure de modification (ou quelque chose comme ça) et copie ceux qui ont changé. J'ai déjà réussi à monter le répertoire FTP dans un répertoire local, donc le problème se résume à simplement synchroniser deux répertoires. Mais mon instinct me dit qu'il doit y avoir quelque chose comme ça qui existe déjà dans la nature.

René Saarsoo
la source

Réponses:

14

Comme je ne pouvais pas me rendre wputau travail, j'ai cherché une alternative et j'ai trouvé: ncftp .

Plus précisément, ncftpput semblait faire presque ce que wput était censé faire. Plus important pour moi, il n'a pas planté comme wput. Et en effet, il parvient à télécharger uniquement les fichiers qui n'ont pas changé en utilisant l' option -z :

ncftpput -z -u user -p pass ftp.mydomain.com dir/name files-to-upload...
René Saarsoo
la source
a parfaitement fonctionné pour moi
roman m
Sur Mac OS X, installez via: brew install ncftp.
kenorb
1
Pour copier des arborescences de répertoires entières, utilisez -R.
kenorb
+1 pour l'utilisation hors AMM de -z pour signifier "noclobber" / "ne pas écraser"
barrycarter
J'aimerais avoir trouvé cela il y a 2 jours. J'ai abandonné ncftpget car la page de manuel ne montrait aucune option "seulement plus récente" "ignorer les options existantes". J'ai battu ma tête sur lftp - de BASH à Python. Ensuite, j'ai donné un autre essai à ncftp sur Google et j'ai trouvé votre solution. J'ai recherché ncftpget (page de manuel) - "-z / -Z Essayez (ne pas) de reprendre les transferts. La valeur par défaut est d'essayer de reprendre". Cela ne semblait pas convaincant. Mais bon sang, c'est cette option que je cherchais: télécharger uniquement les nouveaux fichiers en utilisant ncftpget. J'espère que ce commentaire aide quelqu'un.
Anup Nair
4

lftpsemble également approprié ici: /programming//a/693280/480534

Résumé:

lftp <username>@<server>
  mirror -c <source> <dest>
  exit
Robert Muil
la source
3

Bien sûr, et cela s'appelle wput

user7963
la source
Bien sûr! Comment n'ai-je pas pensé à ça. J'ai complètement oublié ce programme. Je pense que cela fonctionnera, mais je ferai rapport à mon retour à la maison pour l'essayer ...
Rene Saarsoo
Pour certains, le rput me donne un "défaut de segmentation" quand j'essaye de télécharger quelque chose.
Rene Saarsoo