2008-12-03 7 views
17

Je télécharge un fichier journal assez souvent à partir d'un serveur ftp (dont je ne suis pas en contrôle, btw), et il semble plutôt rediciolus de télécharger le fichier entier à chaque fois. Donc je cherche un programme (linux-ish) ou un module Perl qui combine d'une certaine manière ftp et rsync, et ne fait que "mettre à jour" le fichier.Ftp transférer le rsync-way

Le fichier journal est en croissance constante.

Quelque chose comme ça?

+0

voir [Comment utiliser rsync via FTP] (http://serverfault.com/q/24622/15186) sur [sf] – CharlesB

Répondre

19
 
Install curlftpfs (if on Windows, use cygwin) 

# Create local mount path 
mkdir -p /mnt/myftp 

# Mount the destination ftp site using curlftpfs 
curlftpfs -o allow_other ftp://myusername:[email protected] /mnt/myftp 

# rsync inplace using append option 
# use a long timeout value as the first long phase 
# (the inplace comparison) takes a while 
rsync -rzvvv --inplace --append --progress --stats --timeout=7200 /mnt/myftp/path/to/source/file.log /path/to/local/destination/file.log 

# When you need to umount the ftp site 
sudo umount myftp 

# You can also mount from /etc/fstab by appending the following line 
# curlftpfs#myusername:[email protected] /mnt/myftp fuse allow_other,rw,user,noauto 0 0 

# References: 
# http://linux.byexamples.com/archives/344/mounting-ftp-host-to-local-directory-on-top-of-fuse/ 
# http://lists.samba.org/archive/rsync/2007-May/017762.html 
+0

C'est très inefficace par rapport à ce que lftp en mode miroir fait – CharlesB

+0

@CharlesB il peut être inefficace t mais il peut être scripté pour s'exécuter automatiquement. Je ne vois pas comment automatiser lftp/mirror? – justinhartman

+2

@justinhartman avez-vous vérifié http://serverfault.com/a/24833/15186? Il montre comment le faire automatiquement. – CharlesB

0

Je pense que vous essayez d'obtenir des fonctionnalités rsync hors de ftp et ça ne va pas fonctionner facilement. Je recommanderais une solution rsync pure.

+2

L'OP dit qu'il n'a aucun contrôle sur le serveur, donc rsync n'est pas une option – CharlesB

4

Est-ce que le "téléchargement de reprise" ne fonctionnerait pas pour votre cas?

Il suffit de faire semblant votre transfert a été avorté dernière fois et recommencer le téléchargement à partir duquel vous arrêtez