Tengo un script bash, creado por alguien que ya no es capaz de explicar el significado, que se utiliza para tarar automáticamente una carpeta y hacer una copia de seguridad. Por el momento estoy confundido con la línea final:
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
El guión completo está abajo.
#!/bin/bash
#Purpose = Backup of Important Data
#Created on 17-1-2012
#Author = Hafiz Haider
#Version 1.0
#START
TIME=$(date +"%m-%d-%Y-%T")
FILENAME=pokebrawl-$TIME.tar.gz
SRCDIR=/home/servers/brawl/world
DESDIR=/home/_backups/pokebrawl
tar -cpzf $DESDIR/$FILENAME $SRCDIR
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
#END
bash
shell-script
find
MODS Eliminar cuenta
fuente
fuente

Respuestas:
El
findcomando eliminará cualquier archivo normal en o debajo del/home/_backups/pokebrawldirectorio que tenga más de siete días de antigüedad (o más precisamente, que no haya sido modificado en la última semana).Probablemente debería leer
o
ya que hay una variable perfectamente buena que ya contiene ese nombre de directorio. La segunda variación causaría un error si
DESDIRpor alguna razón estuviera vacía o sin configurar.Supongo que esta es una forma de mantener solo las copias de seguridad de la semana pasada. Sugeriría usar algo como
borgbackupo en suresticlugar, ya que estos serían capaces de mantener las copias de seguridad durante mucho más tiempo sin usar mucho más espacio (incluso las copias de seguridad por hora durante un año no ocuparían mucho espacio si los datos no cambiaran mucho) . Realizan la deduplicación de datos y,borgbackupademás, admiten la compresión (ambos admiten copias de seguridad remotas y cifrado también).Para ejecutar el script cada 24 horas (a medianoche), use un trabajo cron.
Primero, emita el comando
crontab -e. Esto abriría un editor con el crontab actual para el usuario activo (esto puede o no ser un archivo vacío).Luego añade
(donde
path/to/the/script.shestá el nombre de ruta del script).Guarde y salga del editor.
El guión ahora se llamaría a medianoche, incluso a la noche.
¿Desea ejecutar el script a las 13:30 cada tarde, por ejemplo, agregue lo siguiente como la entrada crontab en su lugar:
Consulte el manual de crontab en su sistema para obtener detalles sobre cómo escribir un cronograma crontab (
man 5 crontab).fuente
find/deleteoperación, en caso de que algunos tontos se olviden de establecerlo$DESDIRo establecerlo en "/" o algo así por error.DESDIRse cambia y elfindcomando no se actualiza, no se podría limpiar el directorio correcto. Posiblemente sería útil usar${DESDIR:?Not set correctly}o algo similar en su lugar.Esto encuentra todos los archivos en el directorio
/home/_backups/pokebrawlque no se han modificado en los últimos+6días y los elimina. NOTA:+6equivale a 7 días.Mire
man findpara ver cómo funcionan estos interruptores:En las distribuciones de Redhat, simplemente puede colocar este script en el directorio
/etc/crondailyy se ejecutará todos los días. Puede ver que ya hay otros scripts que puede usar como ejemplos:fuente