Salut à tous,
Je vois que ça parle en bien de pCloud ici, je me permets de poster ce petit tuto qui permet de mettre en place des tâches de synchronisation entre un NAS Synology et cet espace de stockage en ligne. Le besoin m’est venu car j’aime bien avoir une copie de mes dossiers important sur un cloud et que pCloud n’est pas compatible avec les solutions fournies par Synology (Cloud Sync et Hyperbackup). La solution que j’ai trouvée est donc d’utiliser rclone, qui a en plus l’immense avantage de fonctionner même si la 2FA de pCloud est activée.
Préambule : J’utilise DSM7 sur mon Syno, certaines options peuvent bouger selon les versions.
Prérequis : Installer WSL (Windows Subsystem for Linux) sur Windows (solution utilisée dans le tuto) ou utiliser Linux, cela permet de récupérer le token de pCloud. Je n’ai pas testé avec un Mac)
Z’est bartiiii !
Donc on va commencer par activer le SSH sur le NAS (temporairement pour les ayatollahs de la sécurité qui nous lisent )
Donc dans DSM7, il faut aller dans Panneau de configuration > Terminal & SNMP et cocher « Activer le service SSH » :
Ensuite, depuis un terminal (Powershell ou Windows Terminal) se connecter au NAS en SSH :
ssh user@adresse_ip_du_nas
et rentrer le mot de passe du compte
On va passer en root pour installer rclone :
sudo -i
Et on rentre à nouveau le mot de passe du compte connecté
Maintenant qu’on est root, on va pouvoir installer rclone, en récupérant simplement le script d’install depuis le site officiel :
Il faut ajouter les droits d’exécution :
chmod +x install.sh
Et lancer le script d’installation :
./install.sh
Si vous avez une erreur sur l’installation du paquet man pages, vous pouvez l’ignorer, ce ne sera pas utile ici.
rclone est maintenant installé sur le NAS, gardez la connexion ouverte et ouvrez un second terminal, WSL celui-ci.
On va installer rclone également sur cet espace pour pouvoir récupérer le token pCloud dans la config, il faut en effet un accès internet avec navigateur pour ce faire, ce que le synology en SSH ne propose pas.
Dans le terminal WSL, on entre la commande suivante :
curl https://rclone.org/install.sh | sudo bash
Comme précédemment, on fait un sudo donc il faut entrer le mot de passe du compte WSL pour pouvoir terminer l’exécution de la commande
A partir de là, on va pouvoir créer une config rclone, et récupérer le token. On copiera ensuite le contenu du fichier de config présent dans WSL dans le fichier de config de rclone sur le NAS.
Mais on va commencer par ouvrir un navigateur internet et se logger sur pCloud, cela permettra de simplifier la validation de l’accès plus tard.
Une fois cela fait, on lance la commande suivante pour créer le fichier de configuration de rclone dans WSL :
rclone config
On sélectionne ensuite les options suivantes :
-Remote : New remote (n)
-Name : pcloud
-Il faut ensuite indiquer le type de stockage. Ca change un peu selon les versions de rclone, pour moi pCloud était au numéro 35 mais je vous encourage à vérifier dans la liste.
-Client_id : ne rien mettre
-Client_secret : ne rien mettre
-Edit advanced config : No (n)
-Use auto config : Yes (y)
A ce moment là, votre navigateur devrait automatiquement ouvrir la page d’autorisation de pCloud. Dans le cas contraire, un lien vous est fourni dans le terminal que vous devez copier/coller dans la barre d’adresse du navigateur ouvert précédemment.
Le terminal va récupérer automatiquement le code et vous pouvez répondre « Yes this is OK » (y) à la dernière question.
On quitte la configuration de rclone avec la réponse (q) puis on va récupérer le contenu du fichier de config :
cat .config/rclone/rclone.conf
[pcloud]
type = pcloud
hostname = eapi.pcloud.com
token = {"access_token":"UNE_LONGUE_SUITE_DE_CARACTERES","token_type":"bearer","expiry":"0001-01-01T00:00:00Z"}
Retour sur le NAS en SSH, on va s’assurer que rclone a créé sa config (vide) et la créér si ce n’est pas le cas avec la commande touch :
rclone config touch
On va ensuite éditer cette config à l’aide de l’utilitaire VI pour y copier la configuration effectuée sur l’environnement WSL :
vi .config/rclone/rclone.conf
Appuyer sur la touche INSER du clavier pour passer en modification
Clic-droit avec la souris pour coller la configuration
ECHAP sur le clavier pour quitter le mode insertion
Taper ensuite la commande suivante pour sauvegarder et quitter :
:wq
On va pouvoir tester que tout fonctionne avec la commande suivante (qui va lister les répertoires de pCloud, indiquant donc une connexion fonctionnelle)
rclone lsd pcloud:
NB : rclone interroge l’espace distant avec le chemin pcloud:dossier (avec des guillemets en cas de présence d’espace)
(exemple : pcloud:"Automatic Upload/iPhone/"
correspond au répertoire dans lequel le client pCloud sur mon téléphone pousse automatiquement les photos et vidéos de l’appareil)
A partir de là, et c’est le défaut de la solution, il semble que le Synology supprime ces changements lors des mises à jour, il faut donc sauvegarder la configuration de rclone dans un autre dossier (qu’on pourra appeler ensuite lors de la synchronisation). L’installation de rclone sera peut-être également à refaire (voir l’exécution du script install.sh en début de tuto)
Je n’ai pas eu de mise à jour de mon Syno depuis que j’ai mis en place cette solution donc je ne peux confirmer ni infirmer cette information trouvée sur le net pour l’instant, je mettrai ce post à jour lorsque j’y aurai été confronté.
Nous allons copier la configuration dans un dossier du NAS (je vous laisserai modifier les chemins selon votre installation, le dossier doit exister préalablement. Toujours sur le NAS en SSH :
cp .config/rclone/rclone.conf /volume1/nas/rclone/rclone.conf
On va ensuite commencer à mettre en place la synchronisation. J’utilise la commande « rclone sync » qui permet de répercuter les changements effectués en local sur le NAS sur pCloud (seule la destination est modifiée, pas la source, afin d’éviter les pertes de données). Ce n’est pas à proprement parler une sauvegarde, l’idée est d’avoir un miroir en cas de problème (vol ou incendie par exemple)
Pour ce tuto, on va vouloir synchroniser le dossier du NAS /volume1/nas/important
vers le dossier pCloud Backups/Nas/Important
Comme on va utiliser une planification, on veut avoir un suivi via des logs, qu’on enregistrera sur le NAS dans /volume1/nas/rclone/journal.log
Tous ces chemins sont évidemment à adapter à votre environnement.
On va donc utiliser la commande suivante :
rclone --config /volume1/nas/rclone/rclone.conf sync /volume1/nas/important pcloud:Backups/Nas/Important -v --log-file=/volume1/nas/rclone/journal.log --exclude "*{@eaDir/,Thumbs.db,.DS_Store}*" -P --dry-run
Explication des flags:
--config
: Permet d’aller chercher la config (qui a été déplacée précédemment au cas où le NAS efface le fichier lors d’une mise à jour)
-v
permet de logger les entrées INFOS, WARNING, ERROR (il manque que le DEBUG qui se récupère avec -vv
si besoin)
--log-file
: indique le chemin du fichier de log
--exclude "*{@eaDir/,Thumbs.db,.DS_Store}*"
: Ca c’est pour moi, je n’ai pas besoin d’avoir les différents dossiers et fichiers cachés créés par DSM, Windows ou MacOS dans mon miroir ^^
-P
permet d’afficher la progression, très utile lors de la mise en place des commandes pour vérifier que tout se passe comme prévu
--dry-run
: Permet de ne pas faire de changement « pour de vrai » (encore une fois c’est une sécurité le temps de mise en place de la synchro)
Une fois satisfait du déroulement de la commande, on peut enlever le --dry-run
et la relancer, qui permettra de faire un premier upload et de vérifier grâce au flag -P
que tout s’est bien passé.
Ensuite on va pouvoir planifier cette synchro (enfin !) grâce au planificateur de tâche du NAS (C’est simple et ça fonctionne ^^)
Sur l’interface de DSM, on va dans Panneau de configuration > Planificateur de tâches
Créer > Tâche planifiée > Script défini par l’utilisateur
On va ensuite lui donner un nom et définir l’utilisateur qui va lancer la tâche de façon automatique.
Dans l’onglet programmer, on définit la période de synchronisation (j’ai défini celle-ci sur tous les jours à 2h du matin)
Et enfin dans Paramètres de tâche on va coller la commande en enlevant les flags -P
et --dry-run
qui ne servent à rien dans ce contexte. J’ai pour ma part défini un envoi de mail lorsque la tâche plante, mais c’est à l’appréciation de chacun :
Il restera à exécuter la tâche manuellement (ou attendre la prochaine exécution automatique) pour s’assurer en vérifiant le fichier de log que tout se passe comme prévu, et voilà
Pensez à désactiver l’accès SSH au NAS, pour plus de sécurité !
Pour réaliser ce tuto, je me suis appuyé sur les liens suivants :
GitHub - ravem/synology-pcloud-and-rclone: use rclone to connect, backup or sync your data with pcloud (Qui a fait la majeure partie du travail on ne va pas se mentir ^^)
rclone sync (la doc de rclone)
Merci également à @SkullyFM pour son correctif du flag exclude de la commande de synchro et ses précieuses indications
En espérant qu’il vous serve comme il m’a servi, pour sécuriser un peu plus vos données importantes avec pCloud en 2FA