¿Cómo sincronizar automáticamente el contenido de una carpeta local con el contenido de una carpeta ftp?

9

Después de buscar en todas partes, no he logrado encontrar una respuesta específica para mi pregunta.

En Windows hay una aplicación llamada FTPbox que sincronizará automáticamente una carpeta local con una ftp cada período de tiempo establecido.

Mi pregunta es, ¿cómo puedo lograr lo mismo con Ubuntu? Lo principal aquí es que no quiero tener que hacerlo manualmente. Tiene que ser un proceso totalmente automático sin necesidad de intervención humana (obviamente tendré que configurar esto si eso se clasifica como intervención humana LOL).

Muchas gracias de antemano por respuestas útiles.

-Eduardo

Edward Nunn
fuente

Respuestas:

16

Primera solución

Instalar en pc lftp

sudo apt-get install lftp

después de eso crear script

#!/bin/bash
HOST='mysite.com'
USER='myuser'
PASS='myuser'
TARGETFOLDER='/new'
SOURCEFOLDER='/home/myuser/backups'

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"

Guárdalo en algún lugar con nombre upload.sh. Dale +xpermiso.

sudo chmod +x /path_to_script/upload.sh

Configuración crontabpara ejecutar este comando en cada xperíodo de tiempo

Para editar crontab ejecutar

crontab -e

Para ejecutar el comando en cada código de 5 minutos es

 */5 * * * * /path_to_script/upload.sh

en cada hora

 0 */1 * * * /path_to_script/upload.sh

para correr a las 4 am

 0 4 * * * /path_to_script/upload.sh

Solución dos

Cree un script pequeño y fácil llamado lftp-scriptque LFTPpueda leer:

open ftp://username:[email protected]
mirror -v --only-newer /home/local/path/ /website.com/public_html/

Finalmente puede ejecutar LFTPe iniciar la sincronización. Establecer crontab como escribo pero poner comando

lftp -f /path/to/lftp-script

algo como esto

 */5 * * * * lftp -f /path/to/lftp-script

Solución tres

Instalar en pc curlftpfs

sudo apt-get install curlftpfs

lo que debes hacer para montar ftp localmente es ejecutar estos comandos crear dir witch se sincronizará

mkdir hostr

montar el directorio ftp remoto a local

sudo curlftpfs -o allow_other ftp://user:[email protected] host

usuario: pass es el nombre de usuario y la contraseña para iniciar sesión en la cuenta ftp.

Puede agregar curlftpfsa fstabpara el montaje automático mediante el uso de esta línea:

curlftpfs#user:[email protected] /mnt/host fuse rw,uid=500,user,noauto 0 0
2707974
fuente
1
TARGETFOLDER = '/ new' = carpeta en ftp? SOURCEFOLDER = '/ home / myuser / backups' = carpeta local con los archivos que quiero cargar?
Edward Nunn
si y si. :)
2707974
diciendo este archivo de transferencia Untitled 1.odt' mirror: /home/edward/bl3/bl2/bl1/Untitled 1.odt: No such file or directory Unknown command ;
Edward Nunn
Basado en la ruta del servidor ftp meybe no solo /newcarpeta. Verifique ambos caminos.
2707974
Si crea una carpeta en source folderlocal, esa carpeta debe estar sincronizada con la carpeta ftp.
2707974