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
find
comando eliminará cualquier archivo normal en o debajo del/home/_backups/pokebrawl
directorio 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
DESDIR
por 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
borgbackup
o en surestic
lugar, 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,borgbackup
ademá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.sh
está 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
/delete
operación, en caso de que algunos tontos se olviden de establecerlo$DESDIR
o establecerlo en "/" o algo así por error.DESDIR
se cambia y elfind
comando 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/pokebrawl
que no se han modificado en los últimos+6
días y los elimina. NOTA:+6
equivale a 7 días.Mire
man find
para ver cómo funcionan estos interruptores:En las distribuciones de Redhat, simplemente puede colocar este script en el directorio
/etc/crondaily
y se ejecutará todos los días. Puede ver que ya hay otros scripts que puede usar como ejemplos:fuente