Utiliser rclone comme client de synchronisation Nextcloud
21 aoĂ»t 2020Dans une optique minimaliste j’essaie de me passer d’un maximum de logiciels ou de leur trouver des alternatives plus lĂ©gères, et aujourd’hui c’est le client Nextcloud qui passe Ă la trape. Son remplaçant sera rclone, un rsync pour le “cloud” qui peut parler avec S3, Swift et plein d’autres services dont WebDAV dans le cas qui m’intĂ©resse.
Il y a quelques limitations Ă cette approche :
- la synchronisation n’est pas en temps rĂ©el mais pĂ©riodique, toutes les heures dans mon exemple, ça pourrait probablement se faire avec un “systemd.path unit” mais je n’ai pas testĂ© et ça risque de dĂ©clencher beaucoup de synchro
- ce n’est pas une vraie synchronisation, les fichiers ne sont pas supprimĂ©s localement quand ils sont supprimĂ©s cĂ´tĂ© Nextcloud, rclone n’a pas encore de synchronisation bi-directionnelle
Dans mon cas je ne synchronise mes fichiers qu’avec un seul ordinateur, donc ces limitations ne me bloquent pas. Si c’est bloquant pour vous il y a d’autres moyens de procĂ©der, par exemple en montant le rĂ©pertoire distant et en utilisant rsync ensuite, mais on perd un peu le cĂ´tĂ© KISS.
Pour installer rclone, s’il n’est pas prĂ©sent dans les dĂ©pĂ´ts de votre distribution, vous pouvez tĂ©lĂ©charger l’exĂ©cutable sur cette page : https://rclone.org/downloads/
Pour la configuration, vous pouvez soit utiliser la commande interactive rclone config, soit créer le fichier ~/.config/rclone/rclone.conf, sur ce modèle :
$ cat ~/.config/rclone/rclone.conf
[remote]
type = webdav
url = https://nextcloud.example.com/remote.php/webdav/
vendor = nextcloud
user = myuser
pass = yourpassword
Ensuite vous pouvez lancer une simulation de synchronisation pour vous assurer que tout fonctionne :
$ rclone sync --update --progress --dry-run ~/Documents remote:Documents
Si c’est bon, on peut crĂ©er le “systemd.timer unit” :
$ cat ~/.config/systemd/user/rclone-nc.service
[Unit]
Description=Rclone Nextcloud
[Service]
ExecStart=/usr/bin/rclone sync --update --verbose /home/myuser/Documents remote:Documents
$ cat ~/.config/systemd/user/rclone-nc.timer
[Unit]
Description=Rclone Nextcloud
[Timer]
OnCalendar=hourly
[Install]
WantedBy=timers.target
Reste plus qu’Ă activer le timer et c’est terminĂ© :
$ systemctl --user enable --now rclone-nc.timer