obligada > comp.os.* > comp.os.linux.programacion

Shake (02-10-2008, 14:33)
Saludos,

El proveedor de servicios donde tengo alojado un Servidor con Debian
ofrece un servicio de FTP par backups.

Para usarlo, estoy usando los scripts que ofrece, pero quiero hacer una
modificacion que, aunque deberia de ser algo sencillo no consigo.

La idea es la siguiente:

Si bien para facilitar las cosas el proveedor te sugiere que uses tar
para enviar solo tgz, yo ademas quiero poder crear directorios cuando
sea necesario. El proveedor ofrece en sus ejemplos unos scripts que te
meten siempre los archivos en la raiz de tu espacio ftp.

No he encontrado comandos FTP que me puedan ayudar a:

- Saber si ya existe un directorio
- Crear una "cadena de directorios" al estilo 'mkdir -p /a/b/c'

Asi que mi intencion es conseguir un script tal que

/subir-ftp.sh /a/b/c archivo

1 se conecte al ftp (solucionado)
2 genere /a/b/c si no existen
3 Suba el archivo (solucionado)

Mi idea original era hacer el punto 2 desde el lado FTP pero no veo el
modo y empiezo a pensar que seria mejor hacerlo desde mi lado.

coger el directorio, descomponerlo, y ejecutar el mkdir en FTP

Algo asi como: para /a/b/c

que mande los comando ftp

mkdir /a
mkdir /a/b
mkdir /a/b/c
cd /a/b/c
put archivo
cd /

esto daria por un lado errores aunque supongo que, pasable a pesar de
no elegante, cuando algun directorio ya existiera.

Y por otro lado, hay algun comando o funcion en bash que me sea util
para eso? he estado dandole alguna vueltas a usar sed para
"descomponer" el directorio, pero aqui algo recursivo me iria bien.

Hay alguna funcion parecida al split() de Perl?

O si hay algun modo desde el FTP y no pre-tratando los datos...

Muchas gracias ;)
Cayetano Lupenna [NR] (02-10-2008, 15:56)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola Shake

Escribes:

> El proveedor de servicios donde tengo alojado un Servidor con Debian
> ofrece un servicio de FTP par backups.


Siento no poder ayudarte en la pregunta concreta que planteas.

Sin embargo tambien realizo backups via FTP (para ciertos servidores no
tengo otro modo). Utilizo "mirrordir" puedes echarle un vistazo y tal
vez resuelva el problema que planteas.

Un saludo
- --
Cayetano Lupeña

Gonzalo Pérez de Olaguer Córdoba (02-10-2008, 16:45)
Hola Shake <alex.estevezNOSPAM>
el Thu, 02 Oct 2008 14:33:25 +0200 escribiste:

> Algo asi como: para /a/b/c
> que mande los comando ftp
> mkdir /a
> mkdir /a/b
> mkdir /a/b/c
> cd /a/b/c
> put archivo
> cd /
> [...]
> Hay alguna funcion parecida al split() de Perl?


Puedes usar cut:

echo "/a/b/c" | cut -d/ -f2 # returns a
echo "/a/b/c" | cut -d/ -f3 # returns b
echo "/a/b/c" | cut -d/ -f4 # returns c

O directamente en bash:

cd /
DIR="/a/b/c"
while [ -n "$DIR" ] ; do
FIRST=${DIR#/}
FIRST=${FIRST%%/*}
mkdir $FIRST
cd $FIRST
DIR=${DIR#/$FIRST}
done

Eso generaría:

cd /
mkdir a
cd a
mkdir b
cd b
mkdir c
cd c

> O si hay algun modo desde el FTP y no pre-tratando los datos...


Ya te han comentado lo de mirrordir.

El programa rsync también te permite usarlo vía FTP, creo, con
la opción --rsh.
Shake (03-10-2008, 11:26)
cat "Mensaje de Gonzalo Pérez de Olaguer Córdoba" | sed s/^/^>\s/
> Ya te han comentado lo de mirrordir.


Gracias a los dos, pues mirrordir ha sido la solucion, me ahorra hacer
cosas "raras" y al ser mas sencillo, luego dara menos problema
(espero).

Ya lo tengo funcionando, la unica pega, es que no me borra los
directorios del ftp cuando se quedan vacios, sino que da error. Supongo
que usara delete en lugar rmdir o algo asi, pero no es nada que me
preocupe.

Saludos y gracias de nuevo.
Temas Similares