Backup del profilo di Zeroshell su Dropbox
Cominciamo come sempre dicendo che che non ho inventato nulla, ma ho solo raccolto in un documento la mia esperienza con il preziosissimo lavoro messoci a disposizione dai relativi proprietari.Lavori che vi segnalo nei link qui sotto:
http://www.andreafabrizi.it/?dropbox_uploader
http://www.sourceslist.eu/blog/linux-blog/dropbox-uploader-bash-script/
A Prima vista potrebbe sembrare una un lavoro lungo, ma se non ci facciamo scoraggiare potremmo ottenere dei risultati davvero piacevoli e soprattutto utili.
Cominciamo con lo script di Andrea Fabrizi che ringrazio in modo particolare.
Come riportato dall’autore sul suo sito, lo script utilizza le API ufficiali di Dropbox pertanto le credenziali del vostro account sono “al sicuro”.
Dropbox Uploader Bash Script
Iniziamo scaricando lo script da qui:
https://github.com/andreafabrizi/Dropbox-Uploader
Lascio a voi il compito di estrarlo e spostarlo in una directory a vostro piacere sul vostro firewall , magari tramite SFTP o altro. Potete anche eseguire il download tramite shell con il comando curl:
curl "https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
Quindi colleghiamoci in ssh a Zeroshell con il client che preferite (putty su windows, un terminale di Ubuntu o quello che volete), spostiamoci in una directory di quelle che non vengono riscritte ad ogni riavvio di Zero e scarichiamo lo script con:
io l’ho salvato in /DB/_DB.002/scripts/ quindi
cd /DB/_DB.002/scripts/
wget “https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh”
ora diamogli i permessi di esecuzione:
chmod a+x dropbox_uploader.sh
lanciamo lo script:
./dropbox_uploader.sh
Alla prima esecuzione dovrete effettuare la configurazione. Vi si presenterà una schermata di questo tipo:
inserite i dati corretti:
Quello che dovete fare è :
andare a questa pagina https://www.dropbox.com/developers/apps
loggarvi con i vostri dati
create una nuova App impostando come nome esattamente quello che vi viene indicato nel terminale.
Inserite una descrizione e come livello di accesso scegliete “Full Dropbox”. quindi cliccate su create.
Subito dopo aver cliccato su “Create” vi verranno fornite due chiavi identificate come “App key” e “App Secret” che dovrete inserire nel terminale.
Durante le mie prove (script v.0.9.7) ho avuto un paio di errori con la verifica dei certificati da parte del comando curl
Primo errore:
Così. Ho provato ad aggiungere il paramentro –k in alcune righe (forse lo script attuale non ha più questo problema e lo script che vi ho linkato prima è già moficato)
Ora sembra a posto:
Una volta inserite vi verrà chiesto di aprire un link nel browser,
di loggarvi e confermare il collegamento della app con lo script.
A questo punto potremmo essere pronti a fare qualche prova:
USAGE:
======
Usage: ./dropbox_uploader.sh COMMAND [PARAMETERS]…
[%%]: Required param
<%%>: Optional param
Commands:
upload [LOCAL_FILE] <REMOTE_FILE>
– Upload local file to remote Dropbox folder
download [REMOTE_FILE] <LOCAL_FILE>
– Download file from Dropbox to local folder
delete [REMOTE_FILE]
– Remove a remote file from Dropbox
list [REMOTE_DIRECTORY]
– List contents of the remote Dropbox folder
info
– Print some info about your Dropbox account
unlink
– Unlink this script from your Dropbox account
Examples:
./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old
./dropbox_uploader.sh upload /etc/passwd
./dropbox_uploader.sh download /backup.zip
./dropbox_uploader.sh delete /backup.zip
./dropbox_uploader.sh upload “My File.txt” “My File 2.txt” (File name with spaces…)
Segnalo solo che al tempo delle mie prove lo script era alle versione 0.9.8, ma che causa errori sui chunk files ho dovuto usare la versione precedente 0.9.7, prontamente risolta (ma non sperimentata dal sottoscritto) nella versione 0.9.9
Come riporta il changelog di Fabrizi che ha aggiornato lo script alla versione 0.9.9, penso si possa provare anche su Zeroshell.
CHANGELOG:
==========
Version 0.9.9 – 24 Oct 2012:
– Added the possibility to choose the access level (App folder o Full Dropbox) during the setup procedure
– Added a check for the BASH shell version
– Fixed problems in listing files/directories with special characters
– Added the option CURL_ACCEPT_CERTIFICATES (see the script source)
– Added back the standard upload function. Now only if the file is greater than 150Mb, the chunked_upload API will be used.
– Fixed compatibility with bsd sed. Tested on FreeBSD, but probably it works on others bsd versions and osx. Let me know!
– Minor changes
Backup del Profilo:
ora che abbiamo tutto il necessario per passare file da zeroshell a dropbox vediamo come fare un backup del profilo tramite script:
Per fare questo riesumo alcuni vecchi appunti presi da una pagina ufficiale del Forum.
http://www.zeroshell.net/eng/forum/viewtopic.php?t=2931&highlight=profile+error
Nelle mie installazioni di solito su hardware ALIX, lascio sempre una chiavetta USB collegata per avere un minimo di storage per log, backup varie ed eventuali; fare una copia del profilo tramite l’interfaccia web di zeroshell è un’operazione velocissima, eventualmente lo sara anche schedulare (penso che mensilmente sia già abbastanza) uno script per fare il backup del profilo su usb, ma d’ora in avanti possiamo esagerare facendo una copia di sicurezza in cloud (erano mesi che mi chiedevo come riempire un po’ di più il mio spazio su Dropbox ^__^).
Allora:
invocando il backup dalla pagina web, viene lanciato il seguente comando:
/bin/sh /root/kerbynet.cgi/scripts/backupdb /udev/hda3 _DB.001 Yes
Ovviamente i parametri del caso (hda3 e _DB.001) variano più o meno in base al tipo di installazione..
Come premesso non so un accidente di programmazione in bash e quelle piccole e rudimentali modifiche che ho fatto potrebbero essere ca….te enormi, ma per quel poco che ci serve direi che possono andare.
Iniziamo a scaricare lo script “rimodellato” da qui:
https://www.dropbox.com/s/z49ohmko725t4l4/backupusb.sh
###---INIZIO DELLO SCRIPT----###
#!/bin/sh
mount /udev/sdb1 /mnt/backup ###---nome della periferica usb e mount point---###
BN=cufrezero-`date +%e-%m-%y`.bak ###---BACKUP NAME---#####
source /etc/kerbynet.conf
function UMOUNT () {
cd /
umount $MP/$DB.AUX 2> /dev/null
if [ "$ALREADYMOUNTED" == No ] ; then
umount "$MP" && rmdir "$MP"
fi
}
function ERROR () {
cd /
echo ERROR > "$MP/$DB/.settings/LastBackup"
UMOUNT
exit 1
}
DEV="$1"
DB="$2"
COMPRESSED="$3"
WOLOGS="$4"
[ -z "$DEV" -o -z "$DB" ] && exit 1
$SCRIPTS/umountstorage >/dev/null
NODEV=${DEV:2}
LINE=`df -T -P | grep "$NODEV "`
if [ -z "$LINE" ] ; then
MP=/storage/`echo $DEV | sed -e "s///_/g"`;
mkdir -p "$MP"
mount -o rw "$DEV" "$MP" || exit 1
if [ -r /$MP/$DB.AUX ] ; then
if ! mount -oloop $MP/$DB.AUX /$MP/$DB ; then
UMOUNT
exit 2
fi
fi
ALREADYMOUNTED=No
else
MP=`echo $LINE | cut -f7 -d' '`
mount -oremount,rw "$MP" || exit 1
ALREADYMOUNTED=Yes
if [ -r /$MP/$DB.AUX ] ; then
if ! mount -oloop $MP/$DB.AUX /$MP/$DB ; then
UMOUNT
exit 2
fi
fi
fi
cd "$MP/$DB"
if ! [ -d .settings ]; then
UMOUNT
exit 3
fi
if [ "$WOLOGS" = Yes ] ; then
EXCLUDE='--exclude LOG'
else
EXCLUDE=''
fi
if [ "$COMPRESSED" == Yes ] ; then
rm -rf /mnt/backup/$BN
for N in `seq 1 100` ; do
echo "$N BACKUP $DEV $DB `date` ================================================================================================" >> /mnt/backup/$BN
done
tar cfzv - --exclude var/register/system/havp/tmp/* $EXCLUDE . | uuencode /dev/stdout >> /mnt/backup/$BN || ERROR
cd /mnt/backup
md5sum $BN > $BN.md5
else
tar cf - --exclude var/register/system/havp/tmp/* $EXCLUDE . || ERROR
fi
date +"%d %b %Y %H:%M" > "$MP/$DB/.settings/LastBackup"
UMOUNT
# mandiamo una copia del nostro profilo su Dropbox
exec "/DB/_DB.002/scripts/dropbox_uploader_001.sh" upload /mnt/backup/$BN /clienti/test/$BN
exit 0
umount /mnt/backup/ ####---ho aggiunto anche un unmount per sicurezza----####
###---fine dello script----###
i parametri da personalizzare non sono molti:
controllare come viene riconosciuta la chiavetta usb da zeroshell si fa direttamente dalla gui
Quindi potete modificare il mountpoint a vostro piacimento.
Il nome del file di backup è assolutamente arbitrario.
Attenzione a modificare le ultime righe evidenziate correttamente per richiamare lo script che fa l’upload su dropbox.
Bene più o meno dovremmo essere arrivati ad un buon punto .
Resta solo da “schedulare” il nostro script e lo possiamo fare tramite GUI:
SetupStartup/Cron
Direi che Mezzanotte e un minuto del primo giorno di ogni mese potrebbe non essere male…
Bene abbiamo finito, forse è stata dura ma ce l’abbiamo fatta, colgo nuovamente l’occasione per ringraziare Fulvio, Andrea Fabrizi tutti gli utenti del Forum e tutti quelli che in giro per la rete “danno una mano”.
Mi scuso anticipatamente per ogni eventuale imperfezione o malfunzionamento.
Lascia un commento