[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: / plena



El 11/5/21 a les 16:21, Narcis Garcia ha escrit:
Si l'eina de còpies de seguretat l'has fet tu mateix, al disc de còpies
hi pots posar un fitxer de reconeixement. Per exemple «.cseguretat»
D'aquesta manera, abans d'executar la còpia el teu programet pot mirar
si hi ha el fitxer, de la qual cosa deduir si el dispositiu està muntat
o no:

if [ ! -f /mnt/copies.seguretat_2/.cseguretat ] ; then
	echo "No s'ha trobat el disc de còpies!"
	exit 1
fi

Si no és així, caldria saber quin programari utilitzes per a fer còpies.

No cal crear cap fitxer testimoni, es pot emprar l'eina findmnt, per exemple així:

findmnt --mountpoint /mnt/copies.seguretat_2 >/dev/null || mount /mnt/copies.seguretat_2 && comanda_backup

Per parts:

findmnt amb --mountpoint determina si el directori és un punt de muntatge actiu. Si ho és, torna dades del mateix (per això redirecciono a /dev/null) i retorna 0; en cas contrari, retorna 1.

|| mount /mnt/copies.seguretat_2 intenta muntar el dispositiu si i només si la comanda anterior ha fallat, és a dir, si el dispositiu no està muntat. Que funcioni dependrà de si l'usuari que executa la comanda pot muntar el dispositiu i de si aquest es troba disponible, sempre que estigui prèviament configurat a /etc/fstab

&& comanda_backup s'executarà si alguna de les dues comandes anteriors ha tingut èxit, aquí hauràs de posar el que sigui que facis servir per llençar la còpia de seguretat.

Recapitulant possibles escenaris:

1. El disc està muntat: findmnt torna 0 (èxit), mount no s'executa per || i el backup s'executa per && 2. El disc està present però sense muntar: findmnt torna 1 (error), mount s'executa per || i un cop muntat amb èxit (0) el disc finalment s'executa el backup per && 3. El disc no està present (o no es disposa de permisos per muntar-lo): findmnt torna 1 (error), mount s'executa per || però també falla i el backup no s'executa

Si vols afegir una acció alternativa per si la còpia no s'engega (o si el propi procés de còpia falla) sempre pots afegir al final una nova ordre precedida per ||, per exemple (resumint crides sense paràmetres):

findmnt || mount && backup || error

on findmnt i mount són tal com he descrit abans, 'backup' és el teu programa de còpia de seguretat i 'error' l'acció que vulguis executar si falla la còpia.

L'avantatge de fer-ho en format de comanda monolínia és que pots posar-la directament al crontab sense necessitar cap script intermediari.



Reply to: