Dudas respecto a sistema de backup

Hola gente!

Os escribo porque recientemente he instalado un servidor en mi oficina con debian instalado y he planteado un sistema de copias de seguridad sobre las que no he encontrado documentación y querría ver si me podéis aportar un poco de luz al tema.

Por el tipo de trabajo que desempeñamos (trabajo en un estudio de ingeniería), necesitamos tener un directorio común donde estén los archivos con los que trabajamos accesibles. La filosofía de mi empresa es la de borrar sólo al final, para evitar desastres, es decir, borrar los archivos una vez el proyecto ha sido entregado y aprobado.

Por ello, se me ha ocurrido una forma de funcionar con esta filosofía de trabajo, que sería la siguiente:

- Un directorio de proyectos de solo lectura donde tenemos pleno acceso a los archivos pero no se pueden modificar (esto está conseguido)

- Un directorio de subidas con permisos +rw (esto también esta conseguido)

Donde encuentro la dificultad es en lo siguiente, me gustaría tener la misma jerarquía de carpetas en el directorio de uploads, pero sin archivos, es decir, solo los directorios vacíos que forman el directorio de proyectos, para que una vez al día se sincronizasen y guardasen la nueva versión en el directorio de proyectos, de forma que al empezar la jornada el día dos, el directorio de uploads, estuviese con la jerarquía de carpetas pero otra vez con los directorios vacíos.

No sé si me explicado correctamente y os he transmitido la idea que quiero hacer funcionar, pero espero que sí. Así que muchas gracias de antemano y a ver si me podéis arrojar un poco de luz sobre esto.

Un Saludo.

Sí vamos, algo como esto, ¿no?

Lo primero, gracias por responder.

Lo segundo, sí y no. Aunque no lo veo de total aplicación para mi caso, o quizás si, me dió por pensar y creo que lo que debe de hacerse, o la forma en la que ha de trabajar es la siguiente:

1º se copiará el directorio de uploads en el directorio de "trabajo" (que es de solo lectura para el resto de los mortales y solo se puede escribir en esta operación)

2º borrar todo el directorio de uploads

3º crear un archivo.txt con el resultado de listar el directorio de "trabajo", un poco arregladete, eso sí (más abajo vemos)

4º hacer un mkdir de ese archivo.txt en uploads para tener la última jerarquía de carpetas actualizada y poder trabajar en esas rutas al dia siguiente.

Para ello, he programado un comando tree (como el de dos, y gracias a googlear un poco) con el siguiente código:

#!/bin/sh
PATHDIRS=`ls -R|grep ":$" | sed -e 's/:$//'`
echo $PATHDIRS > ./paths.txt

Con este script consigo el resultado siguiente:
. ./directorio1 ./directorio1/directorio0 ./directorio2 etc.

Primer problema detectado, para que funcione, tengo que borrar el primer punto que me crea, y que de momento no sé quitar desde el script

Si quito a mano ese primer punto dejando el archivo.txt de la siguiente forma (./directorio1 ./directorio1/directorio0, ...), funciona luego el siguiente script:

#!/bin/sh
PATHDIRS=`cat paths.txt`
mkdir -v $PATHDIRS

Segundo problema detectado, cuando se ejecuta este script habiendo "arreglado el archivo.txt", se ejecuta bien, pero, cuando hay un directorio de este estilo: ./Carpeta Nueva, el mkdir nos crea ./Carpeta y ./Nueva porque detecta el espacio e interpreta Nueva como otro directorio.

¿Cómo lo veis? Voy bien encaminado o me estoy complicando la vida en demasía.

Un Saludo a todos.

koji_ escribió:

[...]
Segundo problema detectado, cuando se ejecuta este script habiendo "arreglado el archivo.txt", se ejecuta bien, pero, cuando hay un directorio de este estilo: ./Carpeta Nueva, el mkdir nos crea ./Carpeta y ./Nueva porque detecta el espacio e interpreta Nueva como otro directorio.
[...]

Para decirle que cree el directorio "Carpeta Nueva" debes de especificar que hay un espacio en el nombre con una diagonal "\" ( y dejar el espacio) por lo que sería algo como esto:

./Carpeta\ Nueva

Para el respaldo (o sincronización) puedes usar rsync.

He estado haciendo pruebas y la sincronizacion la voy a hacer con rsync, con eso el unico problema que tengo eso puede ser el exceso de longitud de la ruta o del nombre de archivo, pero aun no me he puesto a solucionar ese tema.

Por lo pronto, sigo con el problema de los espacios, creo que la estrategia debe ser:

1- Hacer que sed inserte una linea en blanco antes de ./directorio
2- Hacer otro sed que busque [space] en todas las lineas y las sustituya por \ [spacce], para que el directorio sea interpretado como unico.
3- Finalmente, otro sed que lo vuelva a meter en una linea para ejecutar mkdir

Se me olvidaba que antes del paso 1, habria que hacer que sedborrase los 3 primeros caracteres de la linea del archivo paths.txt

Disculpad mi ignorancia pero de momento sigo sin entender demasiado bash scripting, asi que a ver si me podeis orientar un poquito.

Un saludo.

Podrías tirar aquí una muestra del path.txt ?

Ahí va la muestra del path.txt

. ./2002 ./2002/1 Proy ./2002/2 MA ./2002/3 DO ./2003 ./2004 ./2005 ./2005/1 a ./2005/2 b ./2005/2 b/001 ./2005/2 b/002 ./2005/2 b/jose ./2005/A ./2005/B ./2006 ./2007

Como véis va todo en una linea. Lo que comenté de borrar los tres primeros caracteres era para eliminar el . y el espacio dejando ./2002 al principio.

Por lo demás, me gustaría que antes de cada ./ me insertará un espacio en blanco, para luego poder aplicarle el criterio de sustitución de [space] por \[space] para que me reconociera los directorios bien al crearlos.

Un Saludo.