---
marp: true
theme: kant
# theme: https://cunhapaulo.github.io/style/kant.css
author: Paolo Asperti
title: "rclone: cosa è e cosa può fare per noi"
style: |
div.columns {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
}
paginate: true
footer: "Linux Day 2025 SE - 10/05/2025 - Mantova"
---
# rclone: cosa è e cosa può fare per noi
Paolo Asperti

Linux Day 2025 Spring Edition
Creative LAB, Lunetta (MN) — 10 maggio 2025
---
## Agenda
- che roba è
- differenze rispetto a rsync
- storage systems supportati
- note su installazione
- configurazione
- utilizzo di base (+DEMO)
- funzionalità avanzate (+DEMO)
- server / webgui (+DEMO)
- casi d'uso
---
## che roba è
Rclone è un tool che ha lo scopo di sincronizzare una directory locale con un repository remoto.
Pensiamolo come un rsync che al posto di avere solo ssh può utilizzare svariati servizi cloud.
---
## differenze rispetto a rsync
- rsync parla solo con rsync (locale o tramite ssh)
- può fare sync anche tra 2 repository remoti
- multithreaded
- rclone: file level / rsync: block level
---
## storage systems supportati
- S3 compatibili
- FTP / webdav
- nextcloud / owncloud
- SFTP
- SMB / CIFS
- mille altri vendor-specific
---
## installazione
Sebbene sia incluso in praticamente tutti i sistemi operativi, alcuni utilizzano versioni piuttosto datate.
(ad esempio debian 12 e ubuntu 22.04 usano rclone 1.60.1, datata 2022)
---
## configurazione
`rclone` permette di avere molti repository configurati in un unico file di configurazione.
Normalmente è possibile copiare questo file di configurazione su un'altra macchina per avere accesso ai medesimi repository.
In alcuni casi le password sono **offuscate**, per scoraggiare i curiosoni; questo non è chiaramente un metodo per salvare i segreti in maniera sicura.
> **Demo**: configurazione di un remoto
---
## mount
E' possibile montare un remoto su una cartella locale.
Il processo di `rclone` deve rimanere attivo.
> **Demo**: montaggio di un remoto
---
## ncdu
- per rispondere alla domanda: "ma cosa sta consumando tutto questo spazio?"
- per controllare rapidamente se la configurazione di un remoto è corretta
> **Demo**: ncdu
---
## sync
Siete qui per questo
> **Demo**: sync
---
## compressione
Prima si crea la configurazione di uno storage remoto e poi si applica sopra a questa un layer di compressione.
In pratica è un nuovo remoto che si appoggia ad un remoto esistente.
Al momento, il solo metodo di compressione supportato è `gzip`.
---
## crittografia (client-side encryption)
Come per la compressione, prima si crea la configurazione di uno storage remoto e poi si applica sopra a questa un layer di crittografia.
note:
- è possibile scegliere se crittografare i nomi di files e directory o meno
- i nomi dei files crittografati hanno un limite di lunghezza
- il timestamp di modifica dei files non è crittografato (ed è usato per la sincronizzazione)
- la dimensione dei files non è crittografata
- usando la crittografia, non vengono salvati gli hash dei files
---
## combine (unione di più remoti)
Serve a creare un remoto in cui altri remoti sono visibili attraverso sottocartelle.
> **Demo**: combine di più remoti
---
## union
A differenza di `combine`, qui i remoti sono sovrapposti; il risultato è che l'elenco dei files è la "somma" dei remoti combinati.
A volte è poco intuitivo capire dove vanno a finire i files scritti.
> **Demo**: union di più remoti
---
### rcd e web gui
Il server rcd è comodo anche solo per configurare...
Fondamentalmente si usa per spostare in remoto le varie operazioni.
Ascolta su un socket o su una porta (default: `http://localhost:5572/`).
> **Demo**: rcd
---
## server (webdav/sftp/...)
Serve il contenuto di un remoto via http sulla porta 8080 (default)
> **Demo**: serve http
---
## server (volumi docker)
Utilizza un remoto come storage per il provisioning di volumi docker
> **Demo**: serve docker
---
## esempi di utilizzo
- montaggio cartella remota compressa e crittografata
- mysqldump pippato su rclone
- backup in docker compose
> **Demo**: casi d'uso
---
## Riferimenti
Queste slides saranno presto disponibili sul sito BgLUG:
[https://bglug.it/](https://bglug.it/)