Muy buenas otra vez
!!
Esta vez acudo a vosotros para solicitar ayuda con la salida de un comando.
La idea del script es hacer un backup por scp, copiando los archivos modificados en las últimas 24 horas, de una máquina a otra.
Con el comando find, el listado me sale bien, me hace un listado de los archivo que luego mediante un for, voy leyendo de la variable cada archivo de la lista que me ha hecho y procedo a copiarlo con el scp.
Esto sería parte de mi script y lo que está en negrita es el comando que me da "problemas"
:
listadoarchivos="`find . -atime -1 -ctime -1`"#!/bin/bash
cd /home/
for dir in `ls`;
do
echo "From $dir the following files will be copied:"
cd $dir; #aquí estoy en un directorio del que quiera hacer el listado dentro de home/zokko/ por ejemplo
listadoarchivos="`find . -atime -1 -ctime -1`" #aquí saco el listado de archivos modificados y lo guardo en la variable
echo "$listadoarchivos" >> $filelog # aquí lo paso a un archivo de log para ver el listado que me encuentra el find
for file in $listadoarchivos; # hago un recorrido por el listado de archivos y lo voy copiando a la máquina que quiero
do
echo "Copy $file from folder $dir" >> $filelog #chorradita para el log, copiar el archivo X de la carpeta Y
scp -r $file salvado:/local/backup/$dir/$file #aquí es donde se copia el archivo a la carpeta, manteniendo la ruta con el dir y el archivo, con su ruta completa dentro del directorio, por si está dentro de otro directorio.
done
cd ..
done
El script, está bien, funciona y hace lo que quiero, pero no correctamente. Me explico, te saca el listado de archivos y los manda a la máquina que corresponda.
Pero si os fijais en el log que me saca, en cada línea del find me pone "./",
../.Xauthority
./.bash_history
./prueba/kk.txt
Copy . from folder zokkoCopy ./.Xauthority from folder zokko
Copy ./.bash_history from folder zokko
Copy ./prueba/kk from folder zokko
por lo tanto, cuando se ejecuta la primera línea del scp, quedaría algo así:
scp -r . salvado:/local/backup/
Por lo que si estoy en la carpeta /home/zokko/ y se ejecuta el comando así, tal cual, en vez de copiarme los 2 ó 3 archivos que realmente me interesan y que sacó el find correctamente, se lia a copiarme el home entero, siempre.
La primera vez está bien, xq así tienes la estructura de directorios y todo en la otra máquina, pero las posteriores veces, sólo me interesa que me copie los archivos modificados de hace más de un día.
Una solución podría ser quitar el "-r" del comando scp, para que no copiase directorios, sólo los archivos, pero el problema, es que si creo algún directorio nuevo, archivos o subdirectorios, quiero que me los copie sin problemas y sin el -r da un fallo, ya que sólo te deja copiar de uno en uno los archivo y no copiaría los directorios.
Después de todo este coñazo, mi pregunta es:
¿se podría editar la salida del find, para que el listado que guardo en la variable $listadoarchivos tenga cada línea sin el "./" inicial?
No se si me he explicado bien, pero bueno, si tenéis ideas, o algún tipo de alternativa, sería de agradecer.
Un saludo!!