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

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *