Usando FTP

cancel
Showing results for 
Search instead for 
Did you mean: 
cybermakoki
Member II

Usando FTP

Hola!!

Viendo que el CIFS me daba problemas, me he decantado por usar FTP… lo que tengo hecho es un ejecutable que se ejecuta cada 10 segundos y mueve los archivos de mi local al servidor de Alfresco via FTP…

El script (watchdog.cmd) hace lo siguiente:

:begin
move c:\Watchdog\Upload\* c:\temporales
ftp -v -i -s:ftpcmd.txt
del /Q c:\temporales\*.*
ping 1.1.1.1 -n 1 -w 10000
goto begin

y dentro del ftpcmd.txt esto:

open localhost
admin
admin
!:— FTP commands below here —
lcd c:/temporales
cd Alfresco
binary
mput "*.*"
bye

Cual es el mayor problema que le veo a esto?

Si el copiado mput falla, y despues borro lo que hay en la carpeta temporal, pierdo esos ficheros… la verdad es que no se como hacerlo para asegurarme de que se haga bien…

alguna idea?
9 Replies
baskeyfield
Member II

Re: Usando FTP

Hola,

Existen aplicaciones que hacen lo que tu buscas, sincronizan carpetas por ftp. Yo usaría alguna de estas soluciones. Un ejemplo:

http://www.softonic.com/s/sincronizar-carpetas-ftp

Saludos.
cybermakoki
Member II

Re: Usando FTP

Muchas gracias, no sabia que existian aplicaciones que hicieran esto Smiley Happy
fegor
Senior Member

Re: Usando FTP

Hola,

Si usas el comando curl (disponible en Linux, Solaris, Windows, etc.) te sería muy fácil controlar subidas y los posibles códigos de error.

Este es un script en BASH que sube un fichero a Alfresco y comprueba si el código de salida es correcto o ha habido algún error:


#!/bin/bash

FICHERO=prueba.txt

curl -u admin:admin -T $FICHERO ftp://localhost:1121/Alfresco/$FICHERO >/dev/null 2>&1
if [ $? -eq 0 ]; then
        echo "El fichero se ha subido correctamente."
else
        echo "ERROR en la subida del fichero."
fi

Creo que no te será muy complicado entender lo que hace.

Un saludo.
cesarista
Customer

Re: Usando FTP

Hola:

Si usas linux puedes usar wget en vez de curl como sugiere Fernando, y soluciones un poco más curradas como ftpsync (es un script de perl), curlftpfs + rsync, sitecopy, unison…. que puedes incluir de manera sencilla en un proceso de cron.

Muchas gracias, no sabia que existian aplicaciones que hicieran esto Smiley Happy

Un saludo.

–C.
fegor
Senior Member

Re: Usando FTP

Cesarista, yo prefiero en principio curl por razones de eficiencia y mayor control:

http://daniel.haxx.se/docs/curl-vs-wget.html

Un saludo.
cesarista
Customer

Re: Usando FTP

Hola Fernando:

Sin duda, ahora se usa más curl por algunas de las razones que plantea el autor del artículo que enlazas.
Mi comentario no trataba de compararlos o enfrentarlos sino de plantear por un lado, otras opciones de comandos para bash scripting, y de indicar otras posibilidades de sincronización ftp con "scripts" o programas mas avanzados como ftpsync.

Cesarista, yo prefiero en principio curl por razones de eficiencia y mayor control:

http://daniel.haxx.se/docs/curl-vs-wget.html

Un saludo.

Un saludo.

–C.
cybermakoki
Member II

Re: Usando FTP

hola de nuevo,

Gracias por vuestras respuestas…

Al final he usado scriptFTP que me permite hacer un control de errores, la pena que necesitas tener el programa instalado para ejecutar el fichero…

Os pongo aqui el script por si a alguien le parece util…

Se admiten sugerencias Smiley Happy


# Log script output
LOGTO("C:\transfer_log.txt",APPEND)

$result=OPENHOST("localhost","admin","admin")

# Stop the script execution if not connected
IF($result!="OK")
        STOP
END IF


# Change current local directory to c:\mytempdir
$result=LOCALCHDIR("c:\temporales")

# Stop the script execution if could not
# change the current local directory
IF($result!="OK")
        STOP
END IF



# Change the current remote directory to
# /destination_remote_dir/
$result=CHDIR("/Alfresco/")

# Stop the script execution if could not
# change the current remote directory
IF($result!="OK")
        STOP
END IF

SETUPLOADMODE(DIRECT)

# Obtiene una lista de elementos
GETLIST($list,LOCAL_FILES,"*.*")

# Por cada fichero en la lista $list…
FOREACH $item IN $list
       # Copiamos el fichero por ftp
       $result=PUTFILE($item)
       # Si se ha movido correctamente borramos el fichero      
       IF($result=="OK")         
         print("Fichero copiado correctamente. Borrando fichero….".$item)     
         $result = EXEC("del ".$item)         
         IF($result!=0)
            IF($result==1)
               print("No se ha encontrado el fichero. Errorcode: ".$result)
            ELSE
               print("El borrado ha fallado. Errorcode: ".$result)
               exit(1969)
            END IF
         ELSE
              print("El fichero se ha borrado con exito")
         END IF   
       ELSE
      print("Ha ocurrido un error moviendo el fichero ".$item)
      END IF
END FOREACH

CLOSEHOST

SLEEP(30)
goto :start


Saludos y gracias!
fegor
Senior Member

Re: Usando FTP

¡¡ Buena solución !!  Smiley Very Happy
toni_delafuente
Active Member

Re: Usando FTP

En relación a la sincronización de un directorio local con un espacio en Alfresco, hace tiempo hice una prueba de concepto sobre usar Alfresco como si fuese un servidor Dropbox (Fernando sabe de esas pruebas). Y aunque me salió algo que funcionaba en linux, no dejaba de ser una prueba de concepto y con poca utilidad general por ahora. Utilicé en parte la información que encontré aquí junto a algún otro truco con Alfresco.

De todas formas estoy deseando que salga alguna versión estable o funcional de SparkleShare (clon Open Source de DropBox) para ver como se podrían integrar…