Dropbox: upload dati da bash con Windows (WSL)

Gioxx  —  24/04/2018 — Leave a comment

In ufficio stiamo lentamente adottando la versione Business di Dropbox, migrando (tra le altre cose) dati (movimentazione medio-bassa) in cartelle di Team che possono ospitare grandi moli di file. In particolare, alcuni di questi file, consistono nelle immagini master utilizzate per preparare le nostre macchine da lavoro. Si tratta di bomboloni che far muovere al client Dropbox installato su un qualsivoglia client, mettono in difficoltà il processo e rendono più duro il lavoro di CPU e RAM (da sempre talloni d’Achille del programma della società californiana), ed è per questo motivo che ho voluto cercare un’alternativa, trovandola in Dropbox Uploader.

Dropbox: upload dati da bash con Windows (WSL)

Sviluppato nel 2016, Dropbox Uploader altro non è che uno script bash, il quale ti permette di sfruttare lo spazio in Cloud muovendoti da riga di comando, perché questo parla direttamente con le API del servizio di storage. Nonostante il diffuso utilizzo, sembra però che Dropbox Uploader non venga più aggiornato, e le segnalazioni di problemi aperti su GitHub non ottiene grande riscontro, per questo motivo lo considero utile ma morto, un po’ uno zombie che è in grado di nutrirsi fino a quando la sua vittima glielo permetterà (nonostante gli ultimi aggiornamenti dei file fondamentali ospitati nella cartella di progetto siano stati aggiornati circa due mesi fa).

Attenzione: proprio a causa di questi mancati aggiornamenti dello script, ti anticipo che tale lavoro si appoggerà a un account Dropbox Pro personale, e che solo a upload completato (seppur parzialmente, un po’ alla volta, ti spiegherò meglio nei prossimi paragrafi) passerà a occupare lo spazio messo a disposizione dall’account Business. Se non hai un account Dropbox a pagamento e devi spostare grandi quantità di dati via riga di comando, puoi già rinunciare alla lettura dell’articolo (o puoi continuare per toglierti la curiosità in merito a una possibile alternativa al client ufficiale).

Ubuntu su Windows 10

Trattandosi di script bash, avrai bisogno di una mano per farlo girare su macchine Windows. Per poter raggiungere l’obiettivo, potrai sfruttare il WSL, Windows Subsystem for Linux, caratteristica nota ormai a chi possiede Windows 10 e non disprezza il mondo del pinguino, una fusione che Microsoft ha cominciato a rendere disponibile in beta ormai diverso tempo fa, e che con l’arrivo di Windows 10 1709 si è consolidata diventando stabile. Se vuoi approfondire, ti rimando a un articolo su un blog Microsoft datato ottobre 2017: blogs.msdn.microsoft.com/commandline/2017/10/11/whats-new-in-wsl-in-windows-10-fall-creators-update.

Una volta attivata la caratteristica tramite Pannello di Controllo, ho riavviato la macchina e poi scelto di installare il WSL Ubuntu che puoi trovare anche tu gratuitamente, sullo Store di Microsoft:

Ubuntu
Ubuntu
Developer: ‪Canonical Group Limited‬
Price: Gratis

Dropbox: upload dati da bash con Windows (WSL) 2

Avviando per la prima volta il prompt di Ubuntu, ti verrà richiesto di scegliere uno username e una password, slegate da quelle che stai attualmente utilizzando sulla tua macchina Windows (con la quale però condividerai i permessi di accesso ai file in rete, tanto per fare un esempio):

Da ora in poi, potrai muoverti come se avessi a che fare con la bash di Linux, quasi a tutti gli effetti.

Dropbox Uploader: prima configurazione

Sei ora pronto per portare a bordo del tuo PC locale il necessario per il collegamento all’account di Dropbox e il primo utilizzo. Inizia clonando il repository GitHub tramite il comando git clone https://github.com/andreafabrizi/Dropbox-Uploader.git, quindi (appena terminato) spostati nella cartella di Dropbox Uploader e rendi eseguibile lo script dropbox_uploader.sh, ti basta lanciare un chmod +x dropbox_uploader.sh. A quel punto, eseguendo lo script per la prima volta, ti verrà richiesto di specificare i token necessari per comunicare con Dropbox:

Dropbox: upload dati da bash con Windows (WSL) 5

Dropbox: creazione del token per il collegamento

Per poter collegare Dropbox Uploader al tuo account di Dropbox, dovrai navigare verso l’indirizzo dropbox.com/developers/apps e creare una nuova applicazione personalizzata (Dropbox API app). Come anticipato in apertura articolo, lo script bash non sembra lavorare correttamente con l’account Business e i token che puntano alle cartelle di Team, per questo motivo ho fatto appoggio al mio account personale (Pro, 1 TB). Specifica un qualsiasi nome per l’applicazione e genera –quando possibile– un Access Token che darai in pasto a Dropbox Uploader:

Dropbox: upload dati da bash con Windows (WSL) 6

Copia il token appena generato e incollalo nella finestra di bash. La configurazione di Dropbox Uploader è completata.

Dropbox Uploader: muoversi da riga di comando

I comandi disponibili da riga di comando sono tutti descritti nella pagina GitHub del progetto, all’indirizzo github.com/andreafabrizi/Dropbox-Uploader. Tra i vari posso citarti certamente ./dropbox_uploader.sh list, l’equivalente del dir all’interno di DOS, oppure mkdir (stesso discorso sempre relativo a MS-DOS). Per muovere i file puoi usare i comandi di copy o move.

In base alla mia personale esperienza, ho copiato dei dati da una share di rete (NAS, nda) verso una cartella di Dropbox, creando dapprima il mountpoint in /mnt. Per capirci:

sudo mkdir /mnt/pcmaster

A quel punto ho potuto sfruttare la possibilità di montare un’unità di rete in WSL tramite DrvFs, come spiegato in questo articolo sui blog MSDN: blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux. I permessi verso la cartella di rete sono parte del mio account di dominio Windows (ammesso che io ne usi uno):

sudo mount -t drvfs '\\NAS\PCMASTER' /mnt/pcmaster/

Fatto ciò, si parte con la vera e propria copia dei dati da NAS a Dropbox:

./dropbox_uploader.sh -s upload /mnt/pcmaster/Lenovo/ /Temp/Lenovo/

Questo comando inizierà a caricare i file dalla sorgente (/mnt/pcmaster/Lenovo) alla destinazione (/Temp/Lenovo), non sovrascrivendo file eventualmente già esistenti (il parametro -s) e ricreando strutture cartelle ad albero trovate durante la verifica della sorgente (per capirci, se sotto la cartella Lenovo dovesse esistere una sottocartella chiamata pippo, quest’ultima verrebbe creata anche sulla destinazione). La cartella di destinazione usata nell’esempio (la /Temp) dovrà esistere e trovarsi nella root dell’account Dropbox (nel caso tu avessi scelto di creare invece delle API senza accesso Full Dropbox, la cartella non si troverà nella root, bensì nelle cartelle App di Dropbox, nda).

A questo punto, una volta partito l’upload e solo se superiore a 150MB per file, questo mostrerà a video un punto (.) per ogni blocco di dati spostato correttamente sui server Dropbox (quindi ogni 150MB, nda), diversamente mostrerà un asterisco (*) e proverà nuovamente l’upload dell’ultimo blocco dati fallito (per un massimo di tre tentativi), così fino al termine dell’upload del file. Se vuoi, puoi aggiungere il parametro -p alla stringa per l’upload dati per modificare la visualizzazione dell’avanzamento a video.

Con questo metodo e una macchina virtuale lasciata accesa, in qualche giorno abbiamo potuto terminare il caricamento di alcuni TB di dati (l’ultima leggera impennata in ordine cronologico qui di seguito), senza sovraccaricare troppo le risorse della macchina:

Dropbox: upload dati da bash con Windows (WSL) 7

E al contrario?

Puoi usare Dropbox Uploader anche per scaricare dati dal servizio di storage in Cloud. Inutile dire che al posto del parametro upload userai il download, invertendo poi le cartelle sorgente e destinazione (la sorgente è ora lo spazio in Cloud, per capirci). Il resto rimane completamente invariato e potrai utilizzare i medesimi parametri spiegati nel paragrafo precedente dell’articolo.

Varie, eventuali e conclusioni

Oltre a Dropbox Uploader, nello stesso pacchetto precedentemente clonato da GitHub troverai anche dropShell, un diverso modo di esplorare e utilizzare Dropbox da riga di comando, il quale ho volutamente utilizzato poco e nulla visto ciò di cui avevo necessità. È comunque richiamabile (se vuoi giocarci un po’) da bash e –una volta dentro– simile a ciò che scriveresti in una qualsiasi finestra di terminale Linux. Trovi maggiori informazioni all’indirizzo github.com/andreafabrizi/Dropbox-Uploader/blob/master/README.md#dropshell

Dropbox: upload dati da bash con Windows (WSL) 8

Il mio esperimento (trasformatosi poi in soluzione) termina qui, se hai dubbi in merito puoi usare l’area commenti a tua disposizione. Io cercherò di aiutarti per quanto mi è possibile.

Buon lavoro!


fonti utilizzate:
blogs.msdn.microsoft.com/commandline/2017/10/11/whats-new-in-wsl-in-windows-10-fall-creators-update
blogs.msdn.microsoft.com/commandline/2017/07/28/windows-subsystem-for-linux-out-of-beta
blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux
howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10

×

Attenzione

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti: