filezilla ftp (semi-solucionado)

Imagen de NepT1
0 puntos

Este programa resulta muy útil para subir los ficheros al servidor, pero me gustaría saber si es posible tener una especie de "script" o algo parecido que haga automáticamente siempre la misma acción, ya que los ficheros que envío básicamente son siempre los mismos.

Una posible solución:

Es muy sencillo, solamente hay que crear una Carpeta virtual e introducir cómodamente los ficheros en ella manualmente.

Imagen de leptom
+1
0
-1

Con el comando ftp y el fichero .netrc (alojado en tu home) tienes la papeleta solucionada.

El procedimiento es el siguiente. En $HOME/.netrc pones algo parecido a esto:

machine servidor login foo password bar

Dale permisos 600(rw-------) al fichero.

Luego generas un fichero(fichero_de_comandos) con los comandos que ejecutas en el servidor ftp:

cd directorio_uploads
put foo.tar.gz
quit

Y finalmente para ejecutarlo:

ftp servidor < fichero_de_comandos

Mas info: "man ftp"

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

Gracias al contenido que has puesto en tu respuesta e logrado encontrar mas información sobre eso en esta pagina

Pero enviar fichero a fichero se hace muy lento, no hay forma de copiar una carpeta entera con todo su contenido?

+1
0
-1
Imagen de leptom
+1
0
-1

mput es para la subida de ficheros en masa, otra opción es copiarlo todo comprimido o incluso generar el fichero con los comandos del ftp con bash para que haga la subida de todo el directorio uno por uno.

Suerte!

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

Solo me falta saber como descomprimir la carpeta en el servidor:

ftp> bzip2 -dc archivos.tar.bz2 | tar -xv
?Invalid command
ftp> !bzip2 -dc archivos.tar.bz2 | tar -xv
bzip2: Can't open input file archivos.tar.bz2: No such file or directory.
tar: Esto no parece un archivo tar
tar: Salida con error demorada desde errores anteriores

+1
0
-1
Imagen de leptom
+1
0
-1

Al final ya nos explicarás como lo has hecho.

EDITADO:
Lo de antes es que me llamaron antes de que le diese a enviar por eso llegó tarde.

Prueba a hacer "!ls" y "!pwd" para ver que hay en el directorio actual y saber desde que directorio trabaja esa shell.

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

si delante pongo ! aparece el contenido de la carpeta local, pero si no lo pongo, sale lo del servidor.

ftp> ls
200 PORT command successful
150 Connecting to port 38582
drwxr-x--- 10 a7451990 99 4096 Jul 22 05:53 .
drwx--x--x 3 a7451990 a7451990 4096 Jul 22 05:17 ..
-rw-r--r-- 1 a7451990 a7451990 3962 Jul 22 10:32 archivos.tar.bz2

Por otra parte si intento descomprimir sin ! me dice:
?Invalid command

y si se lo pongo dice que:
bzip2: Can't open input file /archivos.tar.bz2: No such file or directory.

+1
0
-1
Imagen de leptom
+1
0
-1

He probado un poco y he visto que cuando ejecutas ! lo ejecuta en tu shell local(no en el servidor ftp). Por eso te decía que ejecutaras el comando ls con la exclamación delante. De hecho el man de ftp lo decía bastante claro:

! [command [args]]
Invoke an interactive shell on the local machine. If there are arguments, the first is taken to be a command to execute directly, with the rest of the
arguments as its arguments.

Otra cosa es que mires si el comando help del servidor ftp. Allí te mostrará los comandos disponibles pero me temo que no vas a poder descomprimir.

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

Entonces sigo como al principio, tengo que subir los ficheros uno a uno ya que no se puede ni comprimido ni la carpeta entera y aunque haga un script tengo que estar modificándolo siempre que tenga ficheros nuevos.

+1
0
-1
Imagen de leptom
+1
0
-1

con mput puedes subir varios ficheros del tirón usando wildcards(el asterisco).

mput local-files
Expand wild cards in the list of local files given as arguments and do a put for each file in the resulting list. See glob for details of filename expan?
sion. Resulting file names will then be processed according to ntrans and nmap settings.

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

Eso lo intente al principio pero creo que no se usarlo bien, seria algo parecido a esto no?:

mput /home/web/*.* /public_html/*.*

P.D. Ya casi lo tenemos...

+1
0
-1
Imagen de leptom
+1
0
-1

Con poner * te valdría. Según el man de ftp solo se ponen los ficheros de origen, así que entiendo que debes moverte tu al directorio destino. Quedaría algo como esto:

cd /public_html
mput /home/web/*

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

Seguimos con los problemas...

cd /public_html
mput /home/web/*
close
exit

y en cuanto encuentra una subcarpeta se para con:

mput /home/web/ficheros/? /home/web/ficheros: not a plain file.

Creo que voy a seguir haciéndolo manualmente con el filezilla...

+1
0
-1
Imagen de leptom
+1
0
-1

Creo que la solución a lo tuyo es usar un script con bash.
El script debe hacer lo siguiente:
1. Generar el fichero de comandos de ftp.
1.1. Hacer un listado de directorios para crearlos en el ftp
1.2. hacer m/put de los ficheros
2. Ejecutar ftp servidor < fichero_de_comandos

Otra opción que sería mas sencilla sería usar rsync pero entiendo que no te dan la posibilidad.

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

no se ni lo que es bash como para hacer algo con el, muchas gracias pro tu ayuda pero me rindo, seguiré usando el programa tal cual, es la forma mas rápida... a no ser que encuentre otro programa que tenga ese modo "automático" en sus opciones.

+1
0
-1
Imagen de leptom
+1
0
-1

He encontrado una solución mas simple (no la he probado). El comando es el siguiente:

lftp -u user,password -d -e "mirror -vnR /directorio/local /directorio_remoto" servidor_ftp

"mirror" es lo que hace la sincronización de directorios, la opción -v es para verbose, -n para que copie los ficheros nuevos(comprobar si copia los actualizados, si no quitas la opción) y la -R es la mas importante "reverse mirror (put files)".

Si no tienes lftp instalado "aptitude install lftp".

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

voy a buscar información sobre este nuevo método, pero por ahora sigue dando error al igual que el otro, en cuanto encuentra un subdirectorio se bloquea:

<--- 550 Can't create directory: File exists

+1
0
-1
Imagen de leptom
+1
0
-1

¿Qué quieres decir con se bloquea? Debería funcionarte como te dije.
Pruébalo así:

lftp -u user,password -d -e "mirror -vR /directorio/local /directorio_remoto" servidor_ftp

He quitado la opción "n"

¿Estás usando "lftp" en vez de "ftp"?

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

Ftp tiene 2 comandos para enviar ficheros: put y mput. El primero permite subir un único fichero, y mput permite subir varios ficheros, pero no carpetas (con los ficheros que contengan).

+1
0
-1
Imagen de NepT1
+1
0
-1

YA ESTA!!! LO CONSEGUÍ!!!

Es muy sencillo, solamente hay que crear una Carpeta virtual e introducir cómodamente los ficheros en ella manualmente o mas fácil aun, crear un script tipo: cp /web/* /carpeta_servidor/

+1
0
-1
Imagen de leptom
+1
0
-1

Me alegro :)

Edita tu primera entrada poniendo la solución y pon solucionado en la cabecera, así si otros tienen el mismo problema lo solucionarán fácilmente y no tendrán que leerse todos los comentarios.

-----

No tengo blog pero tengo dominio ;)

+1
0
-1
Imagen de NepT1
+1
0
-1

Ya lo puse, pero como posible solución, ya que lo que se busca es algo automático, pero bueno, de esta manera es un sustituto al uso de los programas ftp

P.D. Lo que dije de hacer un script con el comando cp no funciona porque dice que la carpeta destino no es local...

+1
0
-1