2011-05-13 13 views
6

Tengo una cuenta en línea con un host que me da una cuenta FTP con nombre de usuario y contraseña.Cómo copiar todos los archivos a través de FTP en rsync

tengo otro con copany que me dio FTP y rsync.

Ahora quiero transferir todos mis archivos de edad FTP para NUEVO FTP con rync.

Ahora es posible hacerlo a través de rsync sólo porque no quiero copiar primero en el ordenador y luego subir de nuevo

+0

¿Tiene conchas en uno o ambos anfitriones? – sarnold

+0

tengo solo ftp en un host y FTP, SFTP, rsync, SCP, SSH en otro host – Mahakaal

Respuesta

13

Deja llamada la máquina sólo con FTP src.

Permite llamar a la máquina con FTP y SSH dst.

ssh dst 
cd destination-direction 
wget --mirror --ftp-user=username --ftp-password=password\ 
    --no-host-directories ftp://src/pathname/ 

cuenta que la ejecución wget con --ftp-password en la línea de comandos regalará la contraseña a cualquier otra persona en el sistema. (Así como transferirlo sobre el alambre en el claro, pero lo sabía.)

Si usted no tiene acceso a wget, entonces puede ser que tengan ncftp o lftp o ftp instalado. Solo sé wget lo mejor. :)

Editar Para utilizar ftp, tendrá que hacer algo más como:

ftp src 
user username 
pass password 
bin 
cd /pathname 
ls 

En este punto, tenga en cuenta todos los directorios en el sistema remoto. Crea cada una con !mkdir. A continuación, cambie al directorio tanto local como remotamente:

lcd <dirname> 
cd <dirname> 
ls 

Repita para todos los directorios. Use mget * para obtener todos los archivos.

Si esto se ve horrible, es porque lo es. FTP no fue diseñado para esto, y si su nuevo anfitrión no tiene mejores herramientas (asegúrese de buscar ncftp y lftp y tal vez algo como ftpmirror), a continuación, compilar mejores herramientas de sí mismo o ser bueno en escribir guiones en torno a la mala herramientas. :)

O si pudieras obtener un caparazón en src, eso ayudaría muchísimo también. El FTP simplemente no está destinado a transferir miles de archivos.

De todos modos, esto evita que rebota a través de su sistema local, que debe ayudar significativamente el rendimiento.

+0

no tengo wget pero tiene ftp, como cambiar mi comando con ftp – Mahakaal

+0

tengo otro host de Linux en internet, creo Primero necesito wget todos los archivos y desde allí usar rsync en el destino – Mahakaal

+0

Oh sí, eso suena mucho mejor. :) También podría 'tar' los archivos en el sistema intermedio, suponiendo que tiene el espacio en disco, y simplemente transferir un archivo _single_ entre el host del intermediario. Eso vencería 'rsync' por mucho. :) – sarnold

4

Siempre hay los sistemas de ficheros FUSE de confianza, y CurlFtpFSSSHFS. Monte cada servidor con el sistema de archivos apropiado y cópielo usando utilidades estándar. Probablemente no sea la forma más rápida de hacerlo, pero posiblemente sea la menos laboriosa.

1

que estaba buscando una solución sencilla para sincronizar una carpeta remota en una carpeta local a través de FTP, mientras que sólo la sustitución de nuevos archivos.Me quedé atrapado con un pequeño script wget basado en sarnold 's answer que pensé que podría ser de utilidad para otros, también, así que aquí está:

#!/bin/bash  
HOST="1.2.3.4" 
USER="username" 
PASS="password" 
LDIR="/path/to/local/dir" # can be empty 
RDIR="/path/to/remote/dir" # can be empty 

cd $LDIR && \    # only start if the cd was successful 
wget \ 
    --continue \    # resume on files that have already been partially transmitted 
    --mirror \     # --recursive --level=inf --timestamping --no-remove-listing 
    --no-host-directories \ # don't create 'ftp://src/' folder structure for synced files 
    --ftp-user=$USER \ 
    --ftp-password=$PASS \ 
    ftp://$HOST/$RDIR 
Cuestiones relacionadas