shadow22 escribió:Hola buenas,
Necesito un script para ubuntu que haga lo siguiente: Coja dos archivos determinados (con una ruta específica) y los copie a todas las unidades USB conectadas al equipo y que luego automáticamente desmonte las unidades para poder retirarlas.
El objetivo es copiar esos dos archivos a muchos pendrives, secuencialmente, es decir, con un hub de 6 irlos poniendo, copiarlos a todos del tirón y luego desconectarlos automaticamente sin ir teniendo que cerrarlos uno a uno.
Muchas gracias
Parto de la base de que pinchas los chismes y se montan solos:
#!/bin/bash
#Obtenenmos la lista de dispositivos montados y los almacenamos en una variable, excluyendo cdroms y dvds
BACKUPDIR=`/bin/ls /media/ | grep -v [cd,dv]`
#Almacenamos en variables los ficheros a copiar
FILE1="/ruta/a/tu/fichero/1"
FILE2="/ruta/a/tu/fichero/2"
#Ahora, al asunto
for i in $BACKUPDIR
do
/bin/cp $FILE1 $FILE2 /media/$i/ &
done
#Le damos tiempo
/bin/sleep 10
#Sincronizamos discos
/bin/sync
#Desmontamos
for i in $BACKUPDIR
do
sudo /bin/umount /media/$i
done
#Nos vamos
exit 0
Si no te monta los chismes solos, una forma de obtener a que dispositivo están asociados es
sudo blkid | grep vfat | cut -d : -f1
suponiendo que estén formateados en vfat. Entonces se trataría de almacenar la salida de ese comando en una variable y hacer un bucle for i in $variable do mount $i done para montarlos.
Si no tienes el comando blkid, en fedora pertenece al paquete util-linux-ng. En ubuntu tendrá un nombre parecido.
blackgem escribió:Parece que ya no tenéis problemas pero yo recomendaría añadir al cp una barra de progreso (no recuerdo ahora que comando era ahora pero seria muy util)
Joer ... esto no lo había visto. Con la pichorrada esa
#!/bin/bash
#Obtenenmos la lista de dispositivos montados y los almacenamos en una variable, excluyendo cdroms y dvds
BACKUPDIR=`/bin/ls /media/ | grep -v [cd,dv]`
#Almacenamos en variables los nombres y rutas de los ficheros
FILE1="/ruta/completa/a/tu/fichero/1"
FILE2="/ruta/completa/a/tu/fichero/2"
DESTFILE1="solonombrefichero1"
DESTFILE2="solonombrefichero2"
for i in $BACKUPDIR
do
/bin/cat $FILE1 | /usr/bin/pv -s 1m -p -e -r > /media/$i/$DESTFILE1
/bin/cat $FILE2 | /usr/bin/pv -s 1m -p -e -r > /media/$i/$DESTFILE2
#NO pongas cat $FILE1 $FILE2 como con cp porque eso te empalmará los ficheros y te los joderá
done
/bin/sleep 10
/bin/sync
for i in $BACKUPDIR
do
sudo /bin/umount /media/$i
done
exit 0
Para esto instala pv