Ed ecco, come promesso, la traduzione di una guida essenziale sull'uso di Rclone, per i backup dei file su, o tra, storage in rete. Buona lettura.
Rclone
tutorial con esempi
by
diehard
Rclone
è un’applicazione multipiattaforma a linea di comando per la
sincronizzazione di dati, simile a rsync, ma focalizzata sulla
gestione degli spazi di archiviazione in nuvola (cloud)
Rclone
permette
di gestire sostanzialmente la maggioranza dei servizi di
archiviazione dei dati in rete (cloud storage service),
indipendentemente
dal sistema operativo usato, a velocità sorprendente.
Utilizza
un algoritmo denominato "delta-transfer
algorithm",
il
quale fa in modo che solo i cambiamenti nei dati siano
copiati/sincronizzati, evitando di dover trasferire grandi mole di
dati.
Chi
inizia ad utilizzarlo potrebbe risultare intimidito dal fatto che
Rclone
non abbia un’interfaccia grafica ufficiale (GUI) semplice da
utilizzare, eccetto una
sperimentale, semplice
e spartana,
ed
una
basata su interfaccia web.
$
rclone
rcd –rc-web-gui
In
ogni caso, è sufficiente la familiarità con l’utilizzo delle
funzionalità base del terminale per poter utilizzare tale
applicazione senza eccessive difficoltà. Di seguito viene effettuata
una descrizione dei comandi Rclone più utilizzati, comprensiva di
esempi esplicativi.
Contenuti (i links rimandano al contenuto della versione originale)
1
Rclone esempi
di configurazione
– Come
configurare
Rclone
2
Rclone esempi di copia - Copiare dati tra servizi di rete
2.1
Usare rclone per copiare un file
2.2
Usare rclone per copiare file multipli
2.3
Usare rclone per copiare un'intera directory/cartella, inclusa la struttura della directory ed i suoi contenuti
2.4
Usare rclone per copiare solo nuovi files
2.5
Forzare rclone a copiare ricorsivamente
3 rclone esempi di sincronizzazione - Sincronizzare directories
3.1
rclone sincronizzazione automatica
3.2 rclone sincronizzazione bidirezionale
3.3
Mostrare i progressi durante una copia/sincronizzazione di lunga durata
4 rclone esempi di montaggio - Usare rclone per montare servizi di archivio di rete come dischi locali
4.1 rclone montaggio su MacOS o Linux
4.2 rclone montaggio su Windows
4.3
Differenza tra montaggio e copia/sincronizzazione con rclone
Rclone
esempi di configurazione – Come configurare Rclone
Una
volta installato Rclone,
il primo comando da impostare è la configurazione.
Questo
permette di aggiungere collegamenti remoti, e
cancellare
e modificare quelli
esistenti.
Tutti
i collegamenti remoti sono archiviati nel file di configurazione.
Lanciando il comando del
file di
configurazione, viene
descritta la posizione dove si trova il file.
rclone
config file
Configuration
file is stored at: /home/xxxxxxxxx/.config/rclone/rclone.conf
rclone
config
è
un comando interattivo, che guida l’utente passo
per passo su come aggiungere nella configurazione un servizio di
storage.
Se
si lancia il comando, può
capitare che venga
chiesta la password di accesso.
rclone
config
Enter
configuration password:
Se
ciò avviene,
pur non avendo creato ancora alcuna configurazione, vuol dire che
esiste
già
un
file config di default creato
dall’installazione o da un primo lancio del programma, ad es.
tramite la GUI. Essendo
un file crittato, il
programma lo
ha
creato
utilizzando
una password
random, visualizzabile
nel file di log. Per evitare inutili perdite di tempo nella
determinazione di tale password random, utile
solo per
accedere ad un file criptato ancora non configurato, è sufficiente
eliminare il file rclone.conf e lanciare nuovamente il comando $
rclone config ; il programma provvederà a ricreare il file ed a
proporre nel menu la possibilità di settare una password, da fare
immediatamente al fine di impedire al programma di intervenire
nuovamente con password random. Le informazioni all’interno del
file di configurazione verranno quindi crittate utilizzando come
passphrase la password scelta
ed inserita.
Ciò sarà valido sia per la configurazione a linea di comando che
per
l’interfaccia grafica/web. Di
seguito la procedura da seguire. (sostituire alle xxxxxx nella path
il corretto percorso)
rm
/home/xxxxxx/.config/rclone/rclone.conf
rclone
config file
Configuration
file doesn't exist, but rclone will use this path:
/home/xxxxxx/.config/rclone/rclone.conf
rclone
config
NOTICE:
Config file "/home/xxxxxx/.config/rclone/rclone.conf"
not found - using defaults
No
remotes found - make a new one
n)
New remote
s)
Set configuration password
q)
Quit config
n/s/q>
s
Your
configuration is not encrypted.
If
you add a password, you will protect your login information to cloud
services.
a)
Add Password
q)
Quit to main menu
a/q>
a
Enter
NEW configuration password:
password:
(inserire
la password)
Confirm
NEW configuration password:
password:
(inserire
nuovamente la password)
Password
set
Your
configuration is encrypted.
c)
Change Password
u)
Unencrypt configuration
q)
Quit to main menu
c/u/q>
q
Una
volta impostata la password, per
creare un primo collegamento remoto dare il comando n.
No
remotes found - make a new one
n)
New remote
s)
Set configuration password
q)
Quit config
n/s/q>
n
A
questo punto è necessario scegliere il nome del collegamento,
possibilmente corto (il nome viene digitato per richiamare il
servizio) e senza caratteri speciali, così da rendere univoco il
riconoscimento (ad es. DanGDrive o BettyDropbox)Verrà
proposta una lista consistente di servizi di rete già riconosciuti,
e la possibilità di impostare un collegamento locale; dovrà essere
inserito il numero corrispondente all’opzione scelta (o
il nome del servizio, indicato tra virgolette)
seguito da enter, quindi verranno chiesti in sequenza l’user ID e
la password per il collegamento al servizio; per
evitare problemi, dato che il servizio può essere autenticato anche
in un secondo tempo, si possono lasciare i campi vuoti, dando
semplicemente enter. Ciò è utile soprattutto per quei servizi che
chiedono l’autenticazione tramite API (ad es. GoogleDrive), che, in
caso di autenticazione automatica prevedono una preattivazione delle
API, ma che in ogni caso non consentono l’accesso perché
richiedono una verifica dell’attendibilità delle app di terze
parti. Lasciando l’autenticazione vuota, si bypassa il problema.
E’
possibile
che venga richiesto anche il tipo di servizio da adottare (user o
enterprise, inserire
il numero opportuno; 1 per utente normale)
e
la locazione se diversa dal default (in assenza di percorsi specifici
dare enter).
A
questo punto è possibile, ma
non ordinariamente necessario,
scegliere di impostare parametri avanzati, quali:
-
interruzione
per il passaggio al caricamento in più parti (default
50 M)
-
numero
massimo di volte per provare a eseguire il commit di un file in più
parti (default
100)
-
valore encoder.MultiEncoder
(Enter per default
("Slash,BackSlash,Del,Ctl,RightSpace,InvalidUtf8,Dot"))
A
questo punto il programma chiede di assicurarsi che l’URL di
reindirizzamento sia impostato su "http://127.0.0.1:53682/"
nella configurazione personalizzata, e nel caso se usare
l’autoconfiguratore, che di norma è la cosa più semplice
(digitare Y)
Il
passaggio al browser per l’autenticazione dell’accesso completerà
la procedura. Completato questo, dare q fino all’uscita del
programma di configurazione, o fino al menù principale, dal quale si
potrà ripetere la procedura per un altro servizio.A
questo punto, il programma è pronto a gestire i files nel servizio
impostato.
Rclone
esempi di
copia
Copiare
dati tra servizi di archiviazione in rete e
locali
In
questa sezione, verranno analizzate alcune situazioni tipiche di
diverso livello di complessità per evidenziare le possibilità
offerte dal programma.
Utilizzare
rclone per copiare un file
Funzionalità
basilare di Rclone: per copiare un file da una posizione ad un’altra
utilizzare la seguente sintassi:
rclone copy source:source_path dest:destination_path
“source”
e “dest”
sono i nomi dei servizi in gioco, seguiti dai due punti (da cui si
nota subito che il programma consente di gestire file presenti su due
cloud diversi, purché attivati). Nel caso in cui una delle due
riguardi file locali, la parte “source:”
e “dest:”
deve essere rimossa, inserendo solo la directory completa della
locazione del file. In questo modo è possibile copiare file da
locale a remoto e viceversa, e tra remoto e remoto (o tra locale e
locale, come fa il comando cp).
Ad
esempio, supponendo di aver attivato il servizio GoogleDrive
denominato MyGDrive, per copiare un file dalla posizione
/home/nl/sample.txt
entro
la cartella /prova situata nella directory principale di GoogleDrive,
il comando sarà
rclone -v copy /home/xxxxx/sample.txt MyGDrive:/prova/
L’opzione
-v
significa
verbose, che
descrive i dettagli del processo.
Se
la cartella di destinazione non esiste, rclone la creerà
appositamente.
Utilizzare
rclone per copiare file multipli
Copiare
più files con nomi simili nella stessa destinazione (si veda
rclone
filtering documentation page per
maggiori informazioni).
Supponiamo
di avere 3 files denominati
sample.txt,
sample_2.txt
nella
directory corrente, ed il file
sample_3.txt
in una
sottodirectory denominata
sub.
Il
comando che copia tutti e tre i files sarà:
rclone copy . --include "sample*.txt" MyGDrive:/
Se
non si vuole che il programma trasferisca anche le subdirectories,
limitandosi ai file
sample.txt
and sample_2.txt,
è
sufficiente rimuovere /
dal
filtro,
e
rclone
effettuerà
lo scanning solo
nella directory corrente
rclone copy . --include "sample*.txt" MyGDrive:/
E’
possibile copiare tutti i files di testo (estensione .txt) con il
seguente comando:
rclone copy . --include "*.txt" MyGDrive:/
Note:
Si
noti che il punto .
Indica
che il programma lavora nella directory corrente. Per agire su
directory diverse, è necessario indicare tale locazione.
Utilizzare
rclone per copiare un’intera directory/cartella, inclusi la
struttura ed i contenuti
Rclone,
di default, effettua un controllo ricorsivo su tutti i files e le
subdirectories nella directory sorgente, compresi i files nascosti, e
li copia nella directory di destinazione in modo ricorsivo,
preservando
tutta la struttura ed i contenuti della directory,
ma
trascurando
le directory vuote.
In
certi casi, se si vogliono
copiare anche
le cartelle vuote,
basta
inserire nel comando l’opzione
–create-empty-src-dirs
rclone copy --create-empty-src-dirs . MyGDrive:/
Si
noti che Amazon S3 Bucket non possiede il concetto di directory, per
cui non è possibile avere cartelle vuote in questo.
Ci
sono casi in cui si potrebbe voler inserire una directory sotto
un’altra, senza copiarne il contenuto. Ad es., si supponga di avere
la directory dir1
che
contiene i due files
1.txt
and 2.txt,
e
che la si voglia inserire entro una directory “prova” nella
destinazione, in modo che il risultato sia:
prova
└── dir1
├── file1
└── file2
In
questo caso sarà:
rclone copy dir1 MyGDrive:stuff/dir1
Utilizzare
rclone per copiare solo nuovi files
E’
possibile utilizzare rclone per copiare solo nuovi files, anche se
"nuovi files" può avere vari significati.
Per
trasferire solo i files che sono stati creati o modificati in
un certo arco di tempo, ad es.
negli ultimi due giorni, si può usare l’opzione
–max-age
rclone copy --max-age 2d dir1 MyGDrive:prova/dir1
Il
periodo di tempo può essere impostato secondo la seguente tabella:
ms
- Milliseconds
s
- Seconds
m
- Minutes
h
- Hours
d
- Days
w
- Weeks
M
- Months
y
– Years
Al
posto del periodo di tempo può essere inserito un tempo assoluto,
secondo uno dei seguenti formati:
RFC3339
- eg "2006-01-02T15:04:05Z07:00"
ISO8601
Date and time, local timezone - "2006-01-02T15:04:05"
ISO8601
Date and time, local timezone - "2006-01-02 15:04:05"
ISO8601
Date - "2006-01-02" (YYYY-MM-DD)
Se
invece per “nuovi files”
si
intendono solo
i files
che non esistono nella directory di destinazione, allora
si vuole che i files di identico nome già presenti ma con data di
modifica e contenuti diversi non vengano copiati o aggiornati.
In
questo caso dovrà essere utilizzata l’opzione --ignore-existing
flag.
rclone copy --ignore-existing dir1 MyGDrive:stuff/dir1
Esempi
di sincronizzazione con rclone
– Sincronizzare
directories
Il
comando da utilizzare è rclone
sync
rclone sync source:source_path dest:destination_path
Questo
consente di ottenere sorgente e destinazione identici, modificando
solo la destinazione. Confronta una lista di files nella sorgente e
nella destinazione, e compara gli
hashes. Se
corrispondono, il file non viene trasferito, altrimenti lo scrive o
sovrascrive nella destinazione.
Importante:
Poichè
la sincronizzazione può causare una perdita di dati, è bene
effettuare prima un test con l’opzione
--dry-run
per
vedere esattamente ciò che verrà copiato e cancellato, prima di
eseguire il comando esecutivo.
Per
vedere in tempo reale ciò che rclone sta eseguendo durante il
processo di trasferimento e le statistiche di questo, è possibile
aggiungere l’opzione -P
(o
–progress);
è possibile inoltre aggiungere l’opzione -v
(o
–verbose)
per vedere dettagli aggiuntivi su ogni passaggio del processo.
Sicronizzazione
automatica
rclone
consente
di ottenere una sincronizzazione unidirezionale con
servizi di archiviazione in rete, agendo in modo simile alle
applicazioni client di
Google Drive or Mega, ma
in modo più efficiente. Per
ottenere una sincronizzazione continua, è necessario creare un
cronjob
che
si attivi con una frequenza prestabilita; per farlo è necessario
creare un file cloudsync.sh
con
il seguente contenuto, sostituendo a
SOURCE_PATH and REMOTE_PATH i
giusti percorsi.
#!/bin/bash
# Get config path from rclone
config=$(rclone config file)
# Remove everything except the path
RCLONE_CONFIG="/${config#*/}"
export RCLONE_CONFIG
# Exit if rclone running
if [[ "$(pidof -x $(basename $0) -o %PPID)" ]]; then exit; fi
# Sync files to the cloud
/usr/bin/rclone sync [SOURCE_PATH] remote:[REMOTE_PATH]
--log-file /opt/rclone_upload.log
--verbose
Dopo
averlo creato, è necessario assegnare al file i permessi di
esecuzione dando
al terminale
chmod
+x ./cloudsync.sh
Infine,
va impostato il cron
job editando
il file di configurazione, dando
crontab
-e
ed
aggiungendo il cron
job creato,
se non è stato fatto in precedenza. Si controlli, a questo
proposito,
How To Set
Up A Cron Job In Linux. In
questo caso, la linea da aggiungere sarà una cosa del tipo:
*/5 * * * * /home/nl/cloudsync.sh
Sincronizzazione
bidirezionale
Per
ora,
rclone
non
possiede una soluzione di sincronizzazione bidirezionale che simuli
le funzionalità di applicazioni lato client come quella di Dropbox o
Google Drive., ma solo effettuare un backup dei files nel servizio
remoto. In
alternativa, è possibile utilizzare soluzioni di sincronizzazione
completa come Insync or Odrive, che vengono fornite con GUI
efficienti, buon supporto, ed opzioni di sincronizzazione avanzate
molto adatte anche ai principianti. CloudCross,
un
client
di sincronizzazione open source a linea di comando, di non immediata
comprensione per i principianti, può essere una buona soluzione a
questo problema.
Visualizzazione
del progresso di lunghi processi di sincronizzazione
Vi
sono situazioni in
cui, a causa della mole di dati da gestire, della velocità di
connessione e di accesso al server, e di altri fattori, è necessario
controllare se il processo è in esecuzione e quanto viene stimata la
durata dell’esecuzione; questo può essere ottenuto con l’opzione
-P (o –progress)
Rclone
esempi
di montaggio
Utilizzare
Rclone
per
montare spazi
di archiviazione di
rete come disco locale
Il
comando rclone
mount
permette
di montare spazi di archiviazione di rete come se fossero directory
locali. Su
Linux/macOS
si
può montare uno spazio remoto come ad es. MyGDrive
con
una specifica come
/path/to/local/mount
. Va
ricordato che la destinazione DEVE essere una directory ESISTENTE E
VUOTA. La sintassi sarà:
rclone mount MyGDrive:remote_file_path /path/to/local/mount
Per
montare automaticamente lo spazio remoto ad ogni avvio, è necessario
aggiungere il comando come script di startup (ad es. fstab). In più,
l’opzione
--daemon
consentirà
a Rclone di funzionare in background, elemento che in questo caso
risulterà particolarmente utile.
In
alternativa, è possibile aggiungere un cronjob
come
quello di seguito riportato, che consenta a rclone mount di partire
all’avvio
@reboot ( /path/to/rclone mount --<options> <src> <dst> &)&
Rclone
mount su Windows
Su
Windows
è
possibile montare uno spazio di archiviazione di rete su una lettera
di periferica drive non utilizzata
(X:
in this example) o
su una cartella non
esistente.
rclone mount MyGDrive:remote_file_path X:
rclone mount MyGDrive:remote_file_path C:nonexistent_directory
Differenze
tra Rclone mount e Rclone sync/copy
I
file
systems sono
costruiti in modo tale da ottenere un’affidabilità pari al 100%,
mentre
i sistemi di archiviazione di rete sono ancora molto distanti da
questo risultato.
I
comandi sync/copy
di
rclone affrontano questo problema effettuando molti tentativi.
Rclone
mount
invece
non può effettuare tentativi così come non può fare copie locali
dei dati presenti negli spazi in rete.
Si
controlli sul manuale di
file
caching per
trovare soluzioni per ottenere un mount più affidabile.