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.