Certe volte non si può usare in web browser, o semplicemente chrome, firefox, opera o internet explorer non sono disponibili, specialmente se le operazioni dovete farle tramite un server remoto e avete a disposizione sono una shell, o magari volete creare delle operazioni da eseguire in determinati orari quindi vi serve un comando da terminale per poter scambiare file con un servizio di Cloud Storage online come Mega, in questo articolo vedremo come scaricare e usare megacmd di Sarath Lakshman.
Su internet sono disponibili tantissimi siti di Cloud Storage, molti danno diversi servizi, ma spesso la possibilità di essere indipendenti dai software proprietari si paga con un abbonamento, il che può essere anche una cosa corretta specialmente se il servizio funziona bene, ma in questo articolo tratterò di un Cloud Storage tornato in auge dopo le famosissime vicissitudini dietro il caso MegaUpload, sto parlando del servizio Mega di Kim Dotcom.
Tramite Mega, un account gratuito, può usufruire di 50Gb di spazio e 10Gb di banda internet per scaricare file dal tuo account, inoltre il servizio cripta i dati durante il trasferimento per una maggiore sicurezza, oltre a fornire un valido sistema di condivisione di file e cartelle aggiornate in tempo reale, in pratica se condividete una cartella con uno o più amici, man mano che aggiungete file nella cartella i vostri amici potranno scaricarli.
Prima di proseguire fate attenzione a non perdere la password di accesso a Mega! Essendo il sistema criptato, non potrete recuperare l’accesso al vostro account perdendo così tutti i file che avrete inviato online!
Premessa
Dopo le dovute presentazioni, iniziamo a esaminare il problema alla base di questo articolo, in pratica vogliamo poter accedere, gestire e scambiare file con il nostro account Mega tramite il terminale, magari per inviare i backup del nostro server online in modo automatico, per poterlo fare abbiamo bisogno di un programma scritto appositamente per utilizzare le API di Mega e che ci permetterà di interfacciarci completamente, sto parlando di megacmd scritto da Sarath Lakshman.
Scarichiamo e compiliamo megacmd
Megacmd è disponibile su GitHub all’indirizzo https://github.com/t3rm1n4l/megacmd, il sorgente è scritto in Go, quindi avrete bisogno di installare il pacchetto Go per la vostra piattaforma se volete compilarlo, in caso potete scaricare la versione già compilata per Windows, Mac OSx, Linux e io aggiungo FreeBSD.
Per scaricare i sorgenti di megacmd avete bisogno di Git, se avete il pacchetto installato non dovete fare altro che eseguire il seguente comando, mi raccomando, eseguitelo in una directory creata per l’occasione.
Negli esempi che seguiranno, la directory ove scaricheremo e compileremo il pacchetto sarà /home/user/dir_temp/
Attenzione! Prima di continuare verificate che abbiate installati i pacchetti Git e Go, in caso installateli.
[shell]# mkdir /home/user/dir_temp/
# cd /home/user/dir_temp/
# git clone https://github.com/t3rm1n4l/megacmd[/shell]
Completata la sincronizzazione, entrate nella directory megacmd quindi date il make per iniziare il processo di compilazione, una volta finito, copiate il file in una directory /bin o /usr/local/bin.
[shell]# cd megacmd/
# make
# cp megacmd /usr/local/megacmd[/shell]
Con questo abbiamo finito con la compilazione del pacchetto, invece se avete deciso di scaricare la versione già compilata, dovrete semplicemente copiarlo in una directory come /bin o /usr/local/bin e assegnargli i permessi di esecuzione.
[shell]# cp megacmd /usr/local/megacmd
# chmod +x /usr/local/bin/megacmd[/shell]
Utilizzo di megacmd
L’utilizzo è relativamente semplice, con megacmd potremo effettuare praticamente tutte le operazioni classiche di gestione file, come upload, download, creare una cartella, cancellare, avere la lista e spostare file, prima di poter eseguire tutte queste operazioni, dobbiamo creare il file di configurazione .megacmd.json con i nostri dati di accesso, il file deve essere creato nella vostra cartella principale.
[shell]# vi ~/.megacmd.json[/shell]
Il contenuto deve essere:
[text]{
"User" : "MEGA_USERNAME",
"Password" : "MEGA_PASSWORD",
"DownloadWorkers" : 4,
"UploadWorkers" : 4,
"SkipSameSize" : true,
"Force" : false,
"Recursive" : false,
"Verbose" : 1
}[/text]
Dove i valori dei campi sono:
Campo | Valore | Descrizione |
User | Testo | Il vostro nome utente |
Password | Testo | La vostra password |
DownloadWorkers | Numero | Numero di connessioni contemporanee in download |
UploadWorkers | Numero | Numero di connessioni contemporanee in upload |
SkipSameSize | true/false | Non copiare i file con la stessa dimensione e path |
Force | true/false | Forza la cancellazione completa o la sovrascrittura |
Recursive | true/false | Mostra in contenuto ricorsivo delle cartelle |
Verbose | 0/1 | Dettagli del log operazioni |
Digitando semplicemente megacmd avremo l’elenco di tutti i modi con cui lo possiamo utilizzare:
[shell]# megacmd
Usage megacmd:
megacmd [OPTIONS] list mega:/foo/bar
megacmd [OPTIONS] get mega:/foo/file.txt /tmp/
megacmd [OPTIONS] put /tmp/hello.txt mega:/bar/
megacmd [OPTIONS] delete mega:/foo/bar
megacmd [OPTIONS] mkdir mega:/foo/bar
megacmd [OPTIONS] move mega:/foo/file.txt mega:/bar/foo.txt
megacmd [OPTIONS] sync mega:/foo/ /tmp/foo/
megacmd [OPTIONS] sync /tmp/foo mega:/foo
-conf="/home/user/.megacmd.json": Config file path
-force=false: Force hard delete or overwrite
-help=false: Help
-recursive=false: Recursive listing
-skip-same-size=false: Skip copying of files with same size and path suffix
-verbose=1: Verbose
-version=false: Version[/shell]
La guida in linea è al quanto esplicativa, ma vedremo in dettaglio ogni voce, la prima cosa da notare riguarda le [OPTIONS], corrispondono a quasi tutti i campi configurabili tramite ~/.megacmd.json, permettendo di cambiare le impostazioni al volo, subito dopo bisogna specificare il tipo di azione da svolgere tra le sette disponibili, seguite da sorgente e la destinazione, dove uno dei due deve avere il suffisso mega:/ per indicare che l’operazione va effettuata sullo spazio online, mentre trash:/ indica che l’operazione va effettuata nel cestino del vostro spazio online.
List
Con questa istruzione possiamo avere l’elenco dei file e delle cartelle disponibili su Mega nel path specifico:
[shell]# megacmd list mega:/
mega:/_RED6484.NEF.zip 15777947 2013-12-06T21:37:07+01:00
mega:/foto_varie.zip 11066239 2014-01-08T14:05:15+01:00
mega:/_File in condivizione/ 0 2014-03-08T20:44:32+01:00
mega:/my.cnf 4470 2014-03-19T23:27:03+01:00
mega:/BAD ATTRIBUTE/ 0 2014-03-03T18:07:31+01:00
mega:/Cartella TEMP/ 0 2014-03-19T14:46:50+01:00
# megacmd list mega:/Cartella\ TEMP/
mega:/Cartella TEMP/prova.txt 0 2014-03-19T14:48:22+01:00
mega:/Cartella TEMP/x/ 0 2014-03-19T14:52:10+01:00
# megacmd -recursive list mega:/Cartella\ TEMP/
mega:/Cartella TEMP/prova.txt 0 2014-03-19T14:48:22+01:00
mega:/Cartella TEMP/x/t1.txt 0 2014-03-19T15:00:03+01:00
mega:/Cartella TEMP/x/t2.txt 0 2014-03-19T15:00:59+01:00
mega:/Cartella TEMP/x/ 0 2014-03-19T14:52:10+01:00[/shell]
Da notare un piccolo bug di megacmd riguardante le cartelle condivise, purtroppo al momento non è possibile vedere i nomi delle cartelle ne il loro contenuto, probabilmente verrà corretto in una prossima release.
Put
Per inviare file su Mega dovete usare il comando Put seguito dal file o dalla directory che volete inviare e il path relativo al vostro account su mega:
[shell]# megacmd put megacmd mega:/testing/
Copying megacmd -> mega:/testing/ # 100.00 % of 5.6MB at 127K/s 43s
Successfully uploaded file megacmd to mega:/testing/ in 44s[/shell]
Get
Per scaricare i file che avete sul vostro account di Mega, specificando l’opzione -force gli eventuali dati presenti in locale verranno sovrascritti:
[shell]# megacmd -force get mega:/testing/prova.txt /home/user/test/
Copying mega:/testing/prova.txt -> /home/user/test/test.txt # 100.00 % of 5.6MB at 214K/s 25s
Successfully downloaded file mega:/testing/prova.txt to /home/user/test/ in 25s[/shell]
Move
Per spostare o rinominare i file presenti sul vostro account Mega:
[shell]# megacmd move mega:/testing/prova.txt mega:/test_file.txt
Successfully moved mega:/testing/prova.txt to mega:/test_file.txt[/shell]
Mkdir
Per creare directory sul vostro account Mega:
[shell]# megacmd mkdir mega:/dir1/dir2/dir3/dir4
Successfully created directory at mega:/dir1/dir2/dir3/dir4[/shell]
Sync
Questo comando permette di sincronizzare delle directory tra loro, funziona sia tra locale e remoto che al contrario, basta invertire i path:
[shell]# megacmd sync mega:/testing /home/user/dir1/
Found 4 file(s) to be copied
Copying mega:/testing/x.1 -> /home/user/dir1/x.1 # 100.00 % of 51KB at 1.7K/s 29s
Copying mega:/testing/x.2 -> /home/user/dir1/x.2 # 100.00 % of 102KB at 9.2K/s 11s
Copying mega:/testing/x.3 -> /home/user/dir1/x.3 # 100.00 % of 512KB at 7.7K/s 1m6s
Copying mega:/testing/x.4 -> /home/user/dir1/x.4 # 100.00 % of 1.0MB at 228K/s 4s
Successfully sync mega:/testing to /home/user/dir1/ in 1m51s[/shell]
Delete
Per cancellare file e directory presenti sul vostro account di Mega:
[shell]# megacmd delete mega:/testing/x.1
Successfully deleted mega:/testing/x.1[/shell]