Backup su storage remoto dei dump

Normalmente io preferisco che la macchina con PVE esegua i backup su un disco locale piuttosto che su uno storage montato da remoto. Il motivo di questa scelta è presto detto: il disco locale di solito è più veloce e meno prono ad avere problemi di disconnessioni. Usando backup diretto su storage remoti in NFS mi è capitato di avere dei piantamenti (morte del server NFS sotto carico) durante il backup che provocano il piantamento della VM che sto backuppando e questo non mi piace. So bene che il server NFS non dovrebbe morire, ma siccome lo fa, ho imparato ad adattarmi al problema e girarci intorno, installando un disco interno per i backup. Una volta terminato il backup (con vzdump, ovvero con il sistema di backup presente dentro PVE) sul disco interno, questo script permette di fare una seconda copia su un disco esterno, senza che questa operazione impatti sulle VM in esecuzione anche in caso di problemi al disco esterno.

Questo script si "aggancia" al sistema di backup interno di PVE (non parliamo di PBS, parliamo della funzione di dump contenuta in PVE), allo scopo di fare una seconda copia dei dump delle VM su uno storage esterno (smb, nfs, usb, qualsiasi cosa si possa montare). Questo script cosi` come e` fatto tiene 6 backup giornalieri e 4 settimanali, quindi sono 10 backup. Tenete bene conto dello spazio necessario! Ad ogni esecuzione di un job di backup, una volta eseguiti i dump di tutte le VM, questo script copia tutti i dump sullo storage remoto, dopo aver archiviato quelli precedenti dentro le directory "daily" e "weekly".

Nella nuova versione (che trovate qui sotto) ho aggiunto una funzione che crea un hard link dell'ultimo file creato nel backup su un file con un nome fissato. In altri termini, impostando la variabile "hardlink" a un path (che deve esistere e deve trovarsi sullo stesso disco fisico che contiene i backup) lo script crea un hard link (che non consuma spazio ulteriore) dal file backuppato da PVE (che ha un nome non prevedibile in quanto contiene data e ora) dentro alla directory definita nella variabile "hardlink" con un nome fisso, sovrascrivendo, se c'e`, il file con il medesimo nome. Questo "trucco" permette di eseguire un backup remoto in un secondo tempo in modalità "pull", usando backuppc o rsnapshot o altri sw di backup che fanno storicizzazione e deduplica, potendosi così proteggere meglio dai ransomware o da un attacco al server PVE, usando dei backup storicizzati non accessibili a meno che non venga compromesso anche il server di backup.

NOTA BENE: PVE6 e 7 usano variabili diverse. Per PVE6 usare $TARFILE al posto di $TARGET nello script

PVE/BackupScript (last edited 2022-01-20 12:37:32 by Kurgan)