Resulta en este cuatrimestre, llevamos la materia de servidores Zentyal, Zentyal es una distro española, de servidores basada en ubuntu, de momento por lo poco que he vsito de ella... es genial, pero eso lo dejare para otro post.
El caso un día, llego a mi casa en compañía de un amigo y con la emoción de Zentyal, decidimos utilizar la maquina de mis padres para correr nativamente el Zentyal, obviamente pensando en particionar para no borrar unidades, información y demás.
Al poco tiempo creamos nuestra USB booteable e instalamos, pero a mitad de instalación nos damos cuenta que no nos pidió particiones, pensamos lo peor... y lo peor paso.
Zentyal acabo con TODO en esa maquina, fotos familiares, música, programas y demás, TODO fue eliminado.No podía dejar las cosas de esa manera, seria una perdida muy grande, sobre todo por las fotos, así que rápidamente busque alguna herramienta que me salvara el dia y encontre Photorec.
Resulta que Photorec, recupera la informacion de tu disco duro, con solo 2 lineas y lo agrupa en carpetas, bueno o almenos recupera integros los archivos pequeños, porque todo lo agrupo en carpetas un tamaño fijo predeterminado.
lo cual me creo mas de 1,500 carpetas en donde dentro de ellas, se encontraba toda mi información, dispersada, seria un trabajo titanico revisar cada una de ellas buscando las imágenes.
Para esto, ya tenia poco mas de 1 mes estudiando de manera lenta pero constante, algo de bash y después de lo ocurrido me dije, porque no crear un pequeño script que me ayude a sacar las imágenes de las carpetas y me las ponga en una, así sera mas fácil el trabajo, así nació la idea, tome una bolsa de frituras y mi terminal, y empece a crear mi destrozo de lineas.
Al final, de un tiempo, logre crearlo, el Script que me ahoraria DÍAS de trabajo.
#!/bin/bash
echo "Cual es el numero maximo de carpetas?: "
read N
CONT=0
command mkdir /home/skynet/fam
while [ $CONT -le $N ]
do
let CONT=$CONT+1
command cd /home/skynet
command cd 001.${CONT}
cp /home/skynet/001.${CONT}/ *.jpg /home/skynet/fam
done
echo "respaldo finalizado"
command cd /home/skynet
command cd 001.${CONT}
cp /home/skynet/001.${CONT}/
done
echo "respaldo finalizado"
Mi mayor orgullo hasta el momento en cuanto a bash se refiere. Pero esto no quedara así, con esto solo reafirmo la gran ilusión que tenia puesta sobre bash, una herramienta que muchos ignoran, pero es demasiado potente y no tiene que envidiarle a otras herramientas o lenguajes.
¿Por qué usas command antes del mkdir y de los cd?
ResponderEliminarPuedes atomatizar N haciendo:
N=`ls | grep "^001" | wc | awk '{print $1-1}'`
Los dos "cd" del while sobran, no los necesitas puesto que haces el "cp" con rutas absolutas.
También sería interesante poner un 2> /dev/null al final del mkdir, así no te printará mensajes de error si el directorio ya existe.
por lo que he leeido command es utilizado para ejecutar commandos.
EliminarMe cuesta entender esa linea...
N=`ls | grep "^001" | wc | awk '{print $1-1}'`
podrias explicarmela?
N=`ls | grep "^001" | wc | awk '{print $1-1}'`
EliminarLa variable n atrapa el valor del "ls | grep "^001" | wc | awk '{print $1-1}'"
Con el grep filtras sólo los ficheros que empiecen (circunflejo) con la cadena de texto 001, con el wc los cuentas y con el awk '{print $1}' imprimes el primer valor que hay en la línea del wc. Vamos, que N valdría el número de archivos/directorios que empiezan con 001.
Perdón, el awk '{print $1-1}' es si haces wc -l. Para wc normal es awk '{print $1}'
ResponderEliminarMás rápido aún: cp -pr /home/skynet/001* /home/skynet/fam/
ResponderEliminarEs una copia recursiva (-r) que conserva las fechas de creación y permisos (-p). Además guarda la jerarquía de directorios exacta que tenías en los 001*