Visualizzazione dei risultati da 1 a 1 su 1
  1. #1

    [BASH] Identificare il primo giorno del mese

    ciao!

    ho questo script che in pratica mi fa il backup di una cartella, e mi cancella i backup più vecchi di 30 giorni:
    codice:
    #!/bin/bash
    
    # YYYY-MM-DD
    TIMESTAMP=$(date +%F)
    BACKUP_DIR=/mnt/bkp
    FILENAME=backup-files-$TIMESTAMP.tar.gz
    SRCDIR=/var/www
    KEEP_BACKUPS_FOR=30
    
    function cancella_vecchi() {
        echo "Cancellazione $BACKUP_DIR/*.tar.gz"
        find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +$KEEP_BACKUPS_FOR -exec rm {} \;
    }
    
    function backup_dir() {
        tar -cpzf $BACKUP_DIR/$FILENAME $SRCDIR
    }
    
    # ESECUZIONE
    cancella_vecchi
    echo "=========="
    backup_dir
    echo "=========="
    printf "FINE!\n\n"
    mi hanno chiesto di fare in modo che i files vecchi vengano cancellato se non sono del primo giorno del mese.
    qualche suggerimento su come fare??

  2. #2
    Cambia la funzione di rimozione dei backup.
    Dovrai fare un ciclo per cancellare i file più vecchi ma CONTROLLANDO il nome, che tu stesso imposti a "qualcosa_20210921" per esempio di un file del 21 settembre 2021. Quindi in pratica hai gli ultimi due caratteri che sono il giorno, e il primo giorno del mese è sempre "01", da cui consegue che....
    codice:
    for cur in $(ls $BACKUP_DIR/*.tar.gz); do
            base_name=$(basename $cur)
            IFS=. read dir_name file_name estensione <<< "$base_name"
           ......
    done
    
    Con questo pezzetto di codice recuperi il nome del file e la sua estensione. Avendo il nome del file, dovrai verificare se gli ultimi due caratteri sono "01" (e lo puoi fare con awk, per esempio) e quindi in base al risultato della verifica decidi se cancellarlo o meno

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.