Foros del Web » Administración de Sistemas » Unix / Linux »

[SOLUCIONADO] Borrar todos los directorios excepto los 50 más recientes

Estas en el tema de Borrar todos los directorios excepto los 50 más recientes en el foro de Unix / Linux en Foros del Web. Hola a tod@s, Tengo un script en un QNAP para borrar todos los directorios (con contenido) en un directorio padre, excepto los 50 más recientes. ...
  #1 (permalink)  
Antiguo 02/06/2017, 17:00
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 10 meses
Puntos: 2
Borrar todos los directorios excepto los 50 más recientes

Hola a tod@s,

Tengo un script en un QNAP para borrar todos los directorios (con contenido) en un directorio padre, excepto los 50 más recientes. Se trata de un sistema de copias de seguridad que va borrando las copias más antiguas.

Estoy utilizando este script, pero no me borra nada:

Código:
while [ `ls -l | wc -l` -gt 50 ]
        rm -r `ls | head -1`
done

¿Alguien sabe que puede fallar?
¡¡Gracias!!
  #2 (permalink)  
Antiguo 02/06/2017, 17:36
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Respuesta: Borrar todos los directorios excepto los 50 más recientes

¿Lo ejecutas manual o programado? Si es programado, ejecútalo manual a ver que errores te da.

¿No será que necesita permisos de root o sudo?
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 03/06/2017, 02:08
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Borrar todos los directorios excepto los 50 más recientes

Me dice:

Código:
./cpbackup.sh: line 12: syntax error near unexpected token `done'
./cpbackup.sh: line 12: `done'

Los permisos están correctos, lo ejecuto como administrador
  #4 (permalink)  
Antiguo 03/06/2017, 02:45
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Borrar todos los directorios excepto los 50 más recientes

Buenas,

Te falta el 'do'.

Por otro lado, tampoco te estas asegurando de borrar los mas antiguos.

Necesitarias hacer mejor:

rm -r `ls -tr | head -1`


Un saludo
__________________
If to err is human, then programmers are the most human of us

Última edición por Profesor_Falken; 03/06/2017 a las 02:50
  #5 (permalink)  
Antiguo 03/06/2017, 11:01
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Borrar todos los directorios excepto los 50 más recientes

Muchísimas gracias Profesor_Falken, pongo el tema como solucionado.

Así quedaría finalmente el script de copias de seguridad, que descarga periódicamente las carpetas de un FTP a un servidor QNAP que tenemos en el despacho:

Código:
#Script para efectuar una copia de seguridad del Servidor Web
#!/bin/bash

cd /share/CACHEDEV2_DATA/cpbackup
mkdir cpbackup_$(date +"%y-%m-%d")
cd  cpbackup_$(date +"%y-%m-%d")
wget -r -np --ftp-user=USER--ftp-password=PASSWORD "URL_FTP"

cd ..
while [ `ls -tr | wc -l` -gt 50 ]; do
        rm -r `ls | head -1`
done

exit

Etiquetas: directorios, excepto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:43.