Shell script per archiviare i file del mese precedente

ATTENZIONE: questo articolo è più vecchio di un anno, e potrebbe non essere più attuale, sei pregato di tenerne conto.

Mi è capitato di dover predisporre l’archiviazione di una serie di file di testo su un server Linux, che un’applicazione scrive più volte al giorno in una data cartella, ma di doverli archiviare per il mese precedente, ovviamente riferendosi al mese in cui viene eseguita l’operazione, lasciando così consultabili solo quelli del mese corrente.

Per fare un esempio su cui lavorare, i file potrebbero essere in questo formato: YYYY-MM-DD-HH-mm.txt, il classico formato anno-mese-giorno-ora-minuti.

Ho trovato una soluzione molto semplice definendo una variabile, grazie alle molteplici possibilità del comando date (un classico man date per i dettagli), che mi individui tutti i files del mese precedente:

set MESESCORSO=`date -d "last month" '+%Y-%m-*.txt'`

Sempre grazie a date, definisco il formato del file compresso del mese precedente, nel formato YYYY-MM.zip (io ho preferito usare zip, ma è possibile usare il sistema di compressione che si preferisce):

set ARCHIVIOMESESCORSO=`date -d "last month" '+%Y-%m.zip'`

A questo punto mi rimane solo da definire, per comodità, il percorso sul server dove posizionare gli archivi mensili compressi:

set ARCHIVIMENSILI=/percorso/archivio/

Completano la sequenza i semplici comandi mv e rm per spostare gli archivi creati e cancellare i file originali.

Il tutto, alla fine, diventa uno script che assomiglia a questo (le righe che iniziano con # sono dei commenti):

#!/bin/tcsh

# DEFINISCO LE VARIABILI
set MESESCORSO=`date -d “last month” ‘+%Y-%m-*.ltxt’`
set ARCHIVIOMESESCORSO=`date -d “last month” ‘+%Y-%m.zip’`
set ARCHIVIMENSILI=/percorso/archivio/

# MI POSIZIONO NELLA CARTELLA DOVE CI SONO I FILE DA TRATTARE
cd /percorso/dei/file/da/archiviare

# ESEGUO INDIVIDUAZIONE E COMPRESSIONE ARCHIVIO MESE PRECEDENTE
zip $ARCHIVIOMESESCORSO $MESESCORSO
mv $ARCHIVIOMESESCORSO $ARCHIVIMENSILI
rm -vf $MESESCORSO

Il tutto inserito in un bel crontab che lo lancia il primo giorno di ogni mese

Ovviamente si tratta solo di un esempio, (molto) migliorabile con raggruppamenti di comandi e controlli sull’esecuzione corretta delle operazioni, ma a me è servito come base di partenza.
Anzi, se avete suggerimenti da dare sono particolarmente graditi… 😉

Che ne pensi?
Domande? Suggerimenti?
Lascia un commento…

Condividi se ti è piaciuto!

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su whatsapp

Articoli correlati:

Roberto Rota

Roberto Rota

Libero professionista, un "artigiano del web", lavoro nella comunicazione in rete da quando esiste Internet. Mi occupo principalmente di assistenza su WordPress e assistenza e consulenza WooCommerce, seguo la realizzazione di progetti web, in particolare siti di e-commerce, visibilità e comunicazione in rete. Il mio curriculum è su Linkedin, e mi puoi trovare anche su Instagram, FaceBook e Twitter.

DAI IL TUO CONTRIBUTO

Se il mio lavoro ti è stato di aiuto, contribuisci alla continuità di questo sito.
Basta una piccola donazione su PayPal, una pizza e una birra alla tua salute!

Una risposta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Ciao, mi chiamo Roberto...

Mi occupo di progetti web, in particolare siti di e-commerce, ed aiuto molte aziende e professionisti a comunicare e vendere grazie ai loro siti web. 
Conosciamoci meglio…

Hai bisogno di aiuto o maggiori informazioni su questo articolo? Contattami:

Altri articoli

Rimaniamo in contatto!

Iscriviti alla mia newsletter per ricevere maggiori informazioni, consigli e barbatrucchi per migliorare la gestione del tuo sito e la tua esperienza sul web.

Riceverai una mail con un link per confermare la tua iscrizione.

Ciao, come posso aiutarti?