Cualquier unix:
Tengo la siguiente línea de cmd que funciona bien.
rsync -avr -e ssh /home/dir [email protected]:/home/
Pero necesito configurarlo ahora para rsync a un servidor remoto que solo tiene un servidor FTP. ¿Cómo hago para eso?
Miré la ayuda de rsync pero rápidamente me perdí (no hago esto muy a menudo).
Respuestas:
Usted no rsync no puede hacer eso por usted, es un protocolo propio y no funciona a través de FTP.
Sin embargo, es posible que desee probar csync . IIRC proporciona un comportamiento similar a rsync a través de HTTP. No puedo comentar si funciona a través de FTP, tendrás que probarlo.
fuente
rsync no va a funcionar para usted por las razones que otros han mencionado. Sin embargo, lftp y ncftp tienen modos "espejo" que probablemente satisfagan sus necesidades.
Lo uso para enviar cosas desde mi directorio local a un servidor web ftp o sftp:
fuente
wput
que tiene un límite de ancho de banda incorporado.Según lo escrito por caballete ,
lftp
es una buena herramienta.Le sugiero que parametrice el guión y utilice el
opciones, que excluye los nombres de archivo utilizando la función global (* ,? ..) de su shell:
Advertencia: asegúrese de que exista el directorio de destino, de lo contrario, el comando cd fallará, por lo que la operación, incluida la eliminación de árboles de archivos, se realizará en el directorio incorrecto (raíz).
He actualizado el script para que esa
--delete
opción esté deshabilitada por defecto, habilítela descomentando elDELETE= command
.fuente
cd $RCD
, a fin de evitar un script-con-un-error tipográfico de la eliminación accidental de archivos desde el directorio equivocado:set cmd:fail-exit yes
. (Parece quelftp
no se da cuenta de que en realidad ha salido, hasta que emita el siguiente comando.) - Y antes decd $LCD
que me gustaría hacer esto (en la cáscara local, es decir, en la parte superior de la alforja):set -eu
.mirror
, y por lo tanto--delete
: d archivos del directorio incorrecto. (Pero los volví a copiar, así que en ese caso no importó. Quizás sea importante para otra persona.)Dependiendo de lo que realmente esté tratando de hacer, podría utilizarse otro enfoque completamente diferente
curlftps
para montar una carpeta ftp, y luego tal vezrsync
las dos carpetas "locales".La instalación es diferente dependiendo de su distribución, por lo que no puedo generalizar sobre eso, pero necesita instalar
fuse
ycurlftpfs
(prolly Debian ya tiene lafuse
instalación por defecto), entonces:sudo apt-get install curlftpfs
Asegúrese de que el
fuse
módulo esté cargado (modprobe fuse
)sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other
Tenga en cuenta que no hay espacio después de la última coma (¡no es un error tipográfico!). Si está satisfecho con eso o no quiere hacer eso cada vez, puede agregarlo a su fstab (generalmente en
/etc/fstab
):En ese caso, debe asegurarse de que el módulo de fusibles esté cargado antes.
Sin embargo, tenga en cuenta dos cosas:
curlftpfs
podría fallar (tal vez pueda hacer algo con el.netrc
).fuente
umount DIR
dondeDIR
estaba el/path/to/ftp/folder
anterior.Hay weex ...
fuente
$ weex yourFTPconfigName
aquí está el manual linuxcertif.com/man/1/weexrsync no funciona sobre ftp. En el lado remoto, necesita el demonio rsync o un shell desde el que pueda llamar a rsync. Ftp generalmente le permite llamar a algunos comandos y rsync no es uno de ellos. Hay otras herramientas destinadas a automatizar tareas ftp como "lftp".
fuente
Esto parece un buen ajuste gratuito: https://savannah.gnu.org/projects/ftpsync/
fuente
Por lo que parece que estás tratando de hacer, también puedes usar wget.
wget -m ftp: // nombre de usuario: contraseñ[email protected]
fuente
Puede usar curlftpfs para montar ftp y usar rsync después de http://linux.die.net/man/1/curlftpfs
fuente
Estoy usando GVFS / FTP. Monto mis servidores FTP remotos con gigolo. Como se ven como directorios locales, casi todo lo que funciona en archivos locales funciona. rsync está diseñado para calcular hashes de archivos de forma remota para comparar archivos sin transferirlos, pero hacerlo con archivos virtuales transfiere los archivos de todos modos. Unison y Freefilesync normalmente funcionan bien, pero encontré un problema cuando quieren cambiar el nombre de un archivo que has subido, no hay problema para descargar. Esto podría ser un problema con gvfs 1.6.1.
fuente
La solución de Jonas S puede ser útil dependiendo de las circunstancias, por ejemplo, si tiene una alta velocidad de descarga y carga lenta, verificar los archivos en el servidor podría ser relativamente más rápido que cargar archivos innecesariamente.
Sin embargo, es probable que desee utilizar CurlFTPFS: http://packages.ubuntu.com/search?suite=default§ion=all&arch=any&searchon=names&keywords=curlftpfs
Aunque, en general, es mejor usar un cliente FTP normal en lugar de rsync.
fuente
No creo que pueda hacer esto, el servidor al que está tratando de Rsync solo tendrá un servidor FTP en ejecución, no entenderá los comandos que Rsync lo está enviando.
Si la razón por la que desea hacer esto es que solo tiene acceso al puerto 21, pero tiene el control del servidor, puede cambiar el puerto en el que escucha Rsync, en el servidor, pero esto obviamente solo es útil si no desea usar FTP en ese puerto.
fuente
Si desea automatizar la tarea, use lftp, ya que puede crear un script como algunas personas han publicado anteriormente, puede hacerlo todo muy fácilmente a su gusto, si está buscando una solución única (es decir, necesita descargar un sitio web completo a través de ftp / moverlo a otro servidor) use ncftp, es simple, instálelo si aún no está instalado:
o
(lo siento, distribuciones no debian / red hat basadas)
una vez instalado, abra ncftp en la terminal y luego escriba:
Le pedirá la contraseña, ingrésela y luego:
Hará el resto del trabajo por ti ... buena suerte
fuente
El uso de "sitecopy" o "espejo" puede ahorrarle mucho ancho de banda.
Ambos manejan una actualización incremental eficiente.
fuente
También hay wput:
El nombre de usuario y la contraseña se leen desde ~ / .netrc. De lo contrario, si no está particularmente preocupado por la seguridad, puede proporcionarlos como ftp: // username: [email protected] .
fuente
Hice mi propia herramienta de línea de comandos para eso: ftpsync
¿Por qué? Debido a que es simple y elegante, otras herramientas requieren muchas dependencias, a veces compilar, a veces no funciona (por ejemplo, lftp en MacOs High Sierra). Ftpsync está escrito en Python puro, no requiere librerías de terceros y es pequeño, solo puede incluir el archivo en su proyecto.
Uso: cd a su directorio de proyecto y escriba:
--delete
significa eliminar archivos remotos que no existen localmente.Si no desea sincronizar pero simplemente ejecuta el comando ftp sin procesar, use:
Es útil para algunas operaciones simples como enviar archivos y renombrarlos:
fuente
rclone es una buena pieza de software que realiza la sincronización de directorios a través de ftp y muchos otros protocolos, incluidos los proveedores de almacenamiento en la nube (Amazon S3, Dropbox, Google Drive). Se puede sincronizar con / desde cualquier combinación de almacenamiento local o remoto.
Para configurar un
ftp
control remoto, siga estas instrucciones .Una vez hecho esto, la operación de sincronización es:
fuente
Instale sftp y luego puede usar rsync.
Yo uso el siguiente.
fuente