Voici la méthode pour synchroniser les données d’un NAS avec l’interface utilisateur QNAP sur une ressource rsync configurée sur un serveur Linux Debian. Cela peut être réalisé pour migrer des données, ou tout simplement pour sauvegarder les données ailleurs.

Préparer le serveur rsync sous Debian

Activer le service rsync

Pour commencer, nous allons activer le service rsync sur le Debian en activant la ligne RSYNC_ENABLE=true  dans /etc/default/rsync puis en redémarrant le service avec service rsync restart .

On peut vérifier que le service rsync tourne ainsi :

Consultez cet article si votre service Rsync ne démarre pas automatiquement à l’allumage du serveur.

Configurer le service rsync

Nous allons créer les fichiers /etc/rsyncd.conf et /etc/rsyncd.secrets. Le manuel du fichier de configuration du service rsync est visible avec man rsyncd.conf.

Le service rsync lit le fichier de configuration à chaque connexion entrante donc il n’est pas nécessaire de le relancer après une modification du fichier de configuration.

En ce qui concerne le NAS QNAP, une ligne capitale est list = true . Sans cette option, le NAS ne sera pas en mesure de proposer une liste défilante pour sélectionner le module distant à utiliser. Le NAS QNAP ne propose malheureusement pas de saisir au clavier le nom du module distant.

Le fichier rsyncd.secrets contient des lignes au format utilisateur:mdp .

Configurer la tâche de synchronisation sur le NAS

Sur le NAS on peut configurer une tâche de synchronisation Rsync avec le menu Gestionnaire de sauvegarde > Réplication distante > Rsync (sauvegarde niveau fichier) > Créer une tâche de réplication.

Là les paramètres seront :

  • Nom de la tâche de réplication à distance : ce que vous voulez
  • Site distant : IP du serveur Rsync, Nom « utilisateur » et mot de passe « mdp » (en concordance avec votre rsyncd.secrets). Port 873 par défaut.
  • Dossier source : dossier du NAS à synchroniser
  • Dossier destination : module Rsync qui recevra les données
  • Options : « Activer le cryptage » est une option qui utilise un tunnel SSH en conjonction avec des modules Rsync. Mais le listage des modules est réalisé sur le port 873 et non le port 22 du coup cela ne fonctionne pas dans tous les contextes. A réserver aux sysadmins qui savent comment tromper le NAS pour obtenir un rafraichissement de la liste des modules malgré tout…
  • Options : cocher la compression de fichiers sur réseaux < 100 Mbits. C’est en réalité la compression à la volée des blocs transférés, et son coût CPU peut être supérieur à son économie de bande passante sur les réseaux rapides.
  • Options : laisser « Copier uniquement les fichiers qui diffèrent » pour bénéficier des capacités différentielles de l’algorithme Rsync.
  • Options : cocher si vous voulez « Supprimer les fichiers supplémentaires sur la destination distante » afin que la cible soit toujours l’image parfaite de la source (mode miroir). Attention cette option peut être dangereuse : si un crypto-virus ou une personne mal intentionnée a renommé tous vos fichiers, les fichiers originaux seront supprimés de la sauvegarde distante. Si vous ne cochez pas cette option, une consommation d’espace disque supplémentaire peut être constatée coté serveur Rsync.
  • Options : cocher « Traitement efficace des fichiers creux ». Voir les limites de l’option rsync –sparse.
  • Fréquence de sauvegarde : activer la fréquence souhaitée.

Voici à quoi cela ressemble sur l’interface du NAS.

Configuration d'une tâche Rsync sur NAS QNAP

Configuration d’une tâche Rsync sur NAS QNAP. Vous reconnaissez les modules test et test2.

Bien entendu, si vous configurez une tâche Rsync sur port 873 sans tunnel de chiffrement, elle ne doit pas sortir de votre réseau local pour éviter les interceptions de données. Si vous configurez une tâche Rsync avec tunnel de chiffrement sur port 22, alors la sécurité des échanges est garantie.

Pour aller plus loin

Coté client NAS

Version Rsync utilisée

En se connectant par SSH sur le NAS on voit qu’il utilise une version modifiée de Rsync sur base de v3.0.7 (protocol 30).

On voit notamment les options --qnap-mode  ou --server-mode  qui ont été rajoutées.

Listage des modules Rsync

Pour revenir à l’option list = true  vous pouvez lancer la commande suivante sur le NAS. C’est vraisemblablement ce genre de commande qui est lancée par l’interface graphique.

A noter que le premier module de la liste a un rôle particulier puisque c’est lui qui est utilisé par défaut pour les tests de débit (cf ci-dessous).

Pour finir, l’interface QNAP a un énorme défaut : elle requiert que le serveur Rsync écoute sur le port 873 pour répondre aux demandes de listage des modules, même si par la suite le port 22 est utilisé pour les transferts. C’était pourtant possible de faire la demande de listage en mode SSH comme suit (ici user-ssh vaut utilisateur et user-rsync également).

 

Coté serveur Rsync

Un tour du coté de rsyncd.log permet de suivre l’activité du NAS.

La demande de liste des modules :

La copie d’un fichier arbitraire pour déterminer la vitesse de transfert. Je soupçonne QNAP d’avoir tordu le protocole rsync (voir dernière ligne) pour supprimer leur dossier .rsyncSpeedTest@ du serveur et déterminer une vitesse de transfert depuis la copie d’un fichier temporaire de taille nulle. De plus le NAS veut à tout prix apposer les droits root:root sur ce dossier, ce qui n’est possible qu’en spécifiant dans rsyncd.conf uid=root et gid=root.

La copie d’un fichier de données :

Le mot de la fin

Je prévois de lancer dans les prochains mois un service commercial de sauvegarde basé sur rsync pour NAS, avec chiffrement des échanges, génération des rapports de sauvegarde et facturation au volume. Si cela vous intéresse, contactez-nous !