Sono nuovo per bash, quindi sono un po 'perso con questo script che ho fatto per fare il backup di alcune directory dalla macchina locale in un NAS. Il NAS conterrà solo un certo numero di file di backup, quindi prima di copiarne uno nuovo cancellerò il più vecchio esistente.
Prima di tutto lo script definisce tutti i percorsi, i nomi di directory e file in variabili
# Defines directories
ORIGEN='/Library/path-to-directories/'
DESTINAS='/Volumes/path-to-backup/'
DESTITAR='/Library/path-to-temp/'
# Defines names of the files and folders to delete (OLDDIR) and copy (NEWDIR)
OLDTAR='/bin/ls /Volumes/path-to-backup/ | head -n 1'
NEWDIR='/bin/ls /Library/path-to-directories/ | tail -n 1'
Quindi, usando la variabile, lo chiama: Crea un file compresso tar dalla directory originale. Il file tar è conservato in una directory temporanea separata.
/usr/bin/sudo /usr/bin/tar -czf "$DESTITAR$NEWDIR.tgz" "$ORIGEN$NEWDIR"
Elimina il vecchio dei file tar dal NAS:
/usr/bin/sudo /bin/rm $DESTINAS$OLDTAR
Copia il file tar nel NAS:
/usr/bin/sudo /bin/cp -Rp "$DESTITAR$NEWDIR.tgz" $DESTINAS
Elimina il file tar dalla directory temp:
/usr/bin/sudo /bin/rm -f "$DESTITAR$NEWDIR.tgz"
Lo script viene eseguito senza sorveglianza da un utente che è stato debitamente autorizzato attraverso le modifiche nel file sudoers. Tutto funziona senza intoppi tranne in questo passaggio:
/usr/bin/sudo /bin/rm $DESTINAS$OLDTAR
Il file di registro non mostra errori, ma non c'è nulla al posto della variabile $OLDTAR
, come se non fosse risolto, quindi esegue effettivamente:
/usr/bin/sudo /bin/rm /Volumes/path-to-backup/
Tuttavia, se eseguo i comandi nel terminale uno per uno, ottengo che funzioni correttamente. Potrebbe trattarsi di un problema con le autorizzazioni utente?