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

Maggori informazioni:

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.

CONTRIBUISCI A QUESTO SITO
Se il mio lavoro ti è stato di aiuto,
e vuoi che io continui a publbicare,
contribuisci allo sviluppo di questo sito
con una donazione su PayPal.

1 commento su “Shell script per archiviare i file del mese precedente”

  1. Pingback: Archiviazione mensile dei file da terminale | tevac

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.

Cerca nel sito:

Assistenza specializzata WordPress e WooCommerce

Altri articoli

Mandami un messaggio

Ciao, come posso aiutarti?