Cerca

Shell script per archiviare i file del mese precedente

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… 😉

Condividi se ti è piaciuto!

Altri articoli che potrebbero interessarti:

Picture of 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.