Eliminar archivos o carpetas que tengan mas de x minutos, dias, meses en Linux




Hace unos días un cliente nos solicitó un script para que se eliminase de la carpeta compartida publica temporal en el servidor de la empresa.

Serían eliminados aquellos archivos o carpeta que tuviesen más de 30 minutos de haber sido copiados.

SinFallas y yo, realizamos el script, empero lo mejoramos un poquito dando la opcines necesarias para que no fuera solo 30 min, sino que pudieramos elegir el tiempo, desde 1 min, 1 mes, o más.

Puedes observar el código desde github el código.

#!/bin/bash 
# by Xombra - sinfallas
# Licence: GPL-2
# Clear contents of a folder every 30 min
#
# Para revisar y eliminar archivos conforme a fecha
# Minutos -> -30 min
# Dias -> -2 days
# Mes -> -3 mounth
# años -> -1 year
# $1 es directorio
# uso delfolder.sh directorio numero escala
#
LC_ALL=C
if [[ $USER != root ]]; then
echo -e "\e[00;31mERROR: Debes ejecutar el Script como ROOT\e[00m"
exit 1
fi
trap "rm -f /run/$0.pid; exit" INT TERM EXIT
echo "$BASHPID" > /run/$0.pid
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
log="/var/log/tempBorrados.log"
fechaactual=$(date)

if ! [[ -f "$log" ]]; then
echo "Creado este archivo el: $fechaactual" > "$log"
fi
if [[ -z $1 ]]; then
echo "ERROR: Debes indicar carpeta" >> "$log"
exit 1
fi
if [[ -z $2 ]]; then
echo "ERROR: Debes indicar tiempo" >> "$log"
exit 1
fi

case "$3" in
min)

echo "1" > /dev/null
;;
day)
echo "1" > /dev/null
;;

year)
echo "1" > /dev/null
;;

month)
echo "1" > /dev/null
;;

*)
echo "ERROR: Debes indicar escala de tiempo" >> "$log"
exit 1
;;


fechaactualmenos30min=$(date +%s --date="-$(echo "$2") $(echo "$3")")
if [[ $? != 0 ]]; then
echo "ERROR: Parametros invalidos en tiempo" >> "$log"
exit 1
fi

if [[ -d "$1" ]]; then
for file in $(ls "$1"); do
if (( "$fechaactualmenos30min" > $(date '+%s' -r "$1/$file") )); then
chmod 666 $1/$file
rm -rf $1/$file
echo "Eliminado en fecha: $fechaactual - Archivo: $file" >> "$log"
fi
done
echo "===================" >> "$log"
else
echo "No existe el directorio $1" >> "$log"
fi

IFS=$SAVEIFS
rm -f /run/$0.pid
trap - INT TERM EXIT
exit 0

 uso: delfolder directorio numero escala

directorio: Carpeta donde buscará
número: número en tiempo
escala: escala a usar, puede ser (min day month year Solo una opción)

Ejemplo:

ejemplo: delfolder temporal 30 min

Buscará en la carpeta temporal aquellos archivo(s)/carpeta(s) que tengas 30 min o más de existencia y los eliminará

Nota:Recuerde darle permisos de ejecución



Otras artículos de interés:

Instalar OpenVPN en Ubuntu
Qué es una VPN Una red privada virtual (virtual private network) es una red de comunicaciones canalizada a través de otra red y dedicada a un uso específico. Para nuestro caso esa otra red es Internet....
Ver Arbol jerárquico de archivos y directorios (tree) por consola
A veces necesitamos ver el arbol jerárquico de archivos y directorios que conforman nuestro equipo, y aún cuando contamos con gestores de archivos (Nemo, Thunar etc) a veces es necesario hacerlo por consola (terminal). Abrir consola:...
Archivos virtuales, clave para un mejor rendimiento en Windows 2000 y XP
Microsoft Windows 2000 y Windows XP representan un substancial salto hacia delante en lo que se refiere al rendimiento frente a las versiones anteriores de este sistema operativo. Pero esto no significa que tanto 2000 como XP estén optimizados de la...
Pasos iniciales Conexion segura OpenSSH
**** Esto se hace una sola vez ****** 1. Bajar OpenS...
Conectando OpenOffice a MySQL
Al manejar una base de datos de MySQL desde OpenOffice.org Base y me di cuenta de la poca información que hay sobre el tema en castellano, por lo que he decidido ‘traducir’ (libremente, por lo que me basare en el manual para hac...
Guía de OpenSSH
Luciano Bello - luciano (arr@ba) sistemas.frba.utn.edu.ar Ver. 0.4 - 22 de Enero de 2004 La última versión está disponible en http://www.lucianobello.com.ar/openssh/ Tablero de cambios 0.1 10-Ene-04 Partes incompletas o no revisad...
Encountered a section with no Package: header, E:Problem with MergeList
Este problema es bastante sencillo de solucionar (Ubuntu y derivados) sudo rm /var/lib/apt/lists/* -vf sudo apt-get update ...
Lector de tarjetas SD en Ubuntu / LinuxMint
Hace poco tuve problemas que LinuxMint 11 (Katya) reconociera mi tarjeta SD (http://es.wikipedia.org/wiki/Secure_Digital) por lo que tuve que buscar info en la red. ...
Cambiar archivos .WAV a MP3 desde consola en Linux
Con este script podemos transofrmar los archivos .WAV (WAV (o WAVE), apócope de WAVE form audio file format, es un formato de audio digital normalmente sin compresión de datos desarrollado y propiedad de Microsoft y de IBM que se utiliza para...
Recuperando el password de root en MySQL.
MySQL es un potente servidor de Base de Datos GNU/Open Source, que ha ganado bastante popularidad y aceptación entre la comunidad, por su versatilidad, facilidad de uso y numerosas características que hacen de MySQL una buena opci&oac...

Brindanos
un o una


Redes Sociales

Publicidad


Gana Bitcoins desde tu casa

Categorías


Planeta Vaslibre

Blog Roll




Nube de tags

  • anonimato
  • anonimo
  • antivirus
  • apache
  • archivos
  • blog
  • bsd
  • bug
  • carpetas
  • centos
  • chrome
  • cifrado
  • computer
  • debian
  • dias
  • eliminar
  • exploits
  • fedora
  • fice
  • firefox
  • forense
  • freebsd
  • gentoo
  • github
  • gnome
  • gnu
  • gpl
  • gtk
  • hack
  • hacking
  • hosting
  • informatica
  • internet
  • isos
  • libre
  • licencias
  • linux
  • linuxmint
  • lxde
  • meses
  • micros
  • mint
  • minutos
  • mit
  • mozilla
  • mysql
  • noticia
  • opensource
  • pgp
  • php
  • sabayon
  • seguridad
  • system
  • tecnologia
  • tengan
  • thunar
  • thunderbird
  • tor
  • troyanos
  • tware
  • ubuntu
  • underground
  • vaslibre
  • virus
  • viserproject
  • vivaldi
  • vulnerabilidades
  • web
  • website
  • windows
  • xanadu
  • xfce
  • xombra