1. Introduction

Cet article est un extrait de mon livre sur le Cloud Computing.

Ce tutoriel va vous présenter des solutions vous permettant de synchroniser vos documents sur plusieurs machines. Le principe sera de répliquer les données entre plusieurs machines via Internet (ou le réseau dans le cas d'une synchronisation sur un serveur en interne).

2. Les solutions grand-public toutes faites

Ces solutions vont vous proposer de synchroniser vos données entre plusieurs postes via un compte Internet. Vous pourrez aussi accéder en mode web à vos données avec ou non possibilité d'édition en ligne. Elles peuvent intégrer également d'autres fonctions comme un agenda, une messagerie, Nous ferons ici abstraction de ces autres fonctions.

  • Dropbox : service de synchronisation et partage de fichiers, gratuit jusqu’à 2 Go. Une interface d’administration est fournie pour les usages multicomptes professionnels. Dropbox propose une synchronisation sélective permettant de ne stocker sur un poste que certains dossiers. Dans ce cas, les dossiers non sélectionnés ne seront accessibles qu'en ligne ou que sur les postes ne les ayant pas décochés ; l'intégralité des données restant accessibles depuis l'interface web. À l’installation, il vous sera proposé de stocker les données sur votre poste ou de ne les stocker qu'en ligne. Dans les deux cas, vous verrez vos fichiers dans l'explorateur de fichiers.
  • Google G-Suite : il s'agit des services de la suite Google (Gmail, Google Drive, Google Agenda, YouTube, Maps, Forms…). Il y a également une interface d'administration pour les usages professionnels. L'espace de stockage est de 30 Go par utilisateur dans un espace professionnel G-Suite. En offre grand public, vous avez 15 Go d'espace de stockage. En version professionnelle, vous aurez accès à Google File Stream. Ce service permet de stocker des données uniquement en ligne (avec possibilité de cache local), comme avec DropBox, il ne s'agira plus dans cas de synchronisation. Il est possible dans les deux cas d'étendre l'espace de stockage. Celui-ci vous sera facturé. L'usage personnel propose un outil nommé « Google sauvegarde et synchronisation » effectuant comme son nom l'indique la synchronisation de vos données entre votre poste et le compte Google.
  • Apple iCloud : service de synchronisation Apple, permettant de synchroniser les contacts, agendas, mots de passe entre les iPad, iPhone et les ordinateurs mac. Les dernières versions (depuis Mac OS X 10.12) permettent également la synchronisation du dossier Documents et du bureau. Le service est gratuit jusqu'à 5 Go. Il existe une version sur Windows permettant la synchronisation avec Outlook, l’espace iCloud pour les documents et les photos.
  • Microsoft OneDrive/365 : synchronise les comptes utilisateurs entre les postes fonctionnant sur Windows 10 et les documents pour les systèmes antérieurs. Sous Windows 10, il est en théorie possible d'ouvrir une session sur un ordinateur tiers et de retrouver son environnement de travail. Un compte Office 365 servira également à gérer vos mails, cet aspect ne sera pas abordé ici.

3. Synchronisation de fichiers avec produits spécifiques

Nous ferons abstraction de l'aspect répartition de charge/haute disponibilité/tolérance de panne. Nous supposerons que votre système de synchronisation s'appuie sur une seule machine ou que le système de haute disponibilité est opérationnel. Pour que la synchronisation puisse se faire via Internet, la machine devra être accessible via internet ou le système devra être installé dans un data-center.

Plusieurs produits de synchronisation de fichiers ont été testés :

  • Seafile ;
  • Syncthing ;
  • SparkleShare ;
  • Pydio.

Dans les produits testés, Syncthing et Pydio ont une version serveur sous Windows, tous les produits testés ont un client windows.

Cette liste n'est pas exhaustive et ne tient compte que des solutions testées.

4. Solutions d'autohébergement

NextCloud/Owncloud est une solution toute faite qui permettra la synchronisation de fichiers comme les solutions toute faite évoqués ci-dessus ou les les solutions qui vous seront présentés.

Je vous invites à lire mon tutoriel sur les solutions d'autohébergement qui présente en détail Nextcloud.

4-1. Seafile

Seafile dispose d'une version serveur pour Linux, Raspberry, et Windows. Il est installable sous Mac OS X via les macports.

Seafile propose un client pour Windows, Linux, et Mac OS X. Il y a une application pour Android et une pour iPhone/iPad.

Il existe deux éditions, une community edition gratuite et une version sous licence propriétaire pour les entreprises, utilisable sans licence jusqu’à trois utilisateurs.

Vous pouvez voir sur cette page les différences entre la version community et la version professionnelle.

Seafile travaille avec une base de données, et va utiliser soit sqlite, soit MySQL.

Seafile nécessite Python et les dépendances suivantes :

  • python-setuptools ;
  • python-imaging ;
  • python-mysqldb (ou python sqlite si utilisation de sqlite).

Nous pouvons les installer avec la commande suivante. Dans nos tests, nous utiliserons SQLite comme base de données.

 
Sélectionnez
apt-get install python-setuptools python-imaging python-sqlite sqlite3

L'installation s'effectue par le chargement d'un tar.gz depuis le site Internet.

Vous pouvez récupérer le fichier ainsi (mais il y a de grandes chances qu’une nouvelle version soit disponible, lien à vérifier sur le site web) :

 
Sélectionnez
wget https://download.seadrive.org/seafile-server_7.0.5_x86-64.tar.gz --no-check-certificate

Une fois le fichier tar.gz décompressé, l'installation s’effectue en lançant le script depuis le dossier contenant l’application décompressée :

 
Sélectionnez
setup-seafile.sh

Pour la version MySQL, il faut lancer le script setup-seafile-mysql.sh.

Au cours de l’installation, les informations suivantes vous seront demandées :

  • le nom du serveur ;
  • le domaine ou l’adresse IP du serveur ;
  • le chemin par défaut pour les données seafile (~/seafile-data par défaut) ;
  • le port à utiliser : 8082 par défaut.

seafile va créer ses dossiers (conf, logs, pids, ccnet) dans le dossier parent de l'installeur. Le dossier data par défaut proposé se situe également dans le dossier parent.

Une fois la configuration effectuée, il va falloir modifier le fichier conf/gunicorn.conf et modifier bind = "127.0.0.1:8000" par "0.0.0.0:8000" pour pouvoir utiliser toutes les interfaces, ou l'adresse IP de la carte réseau sur laquelle vous voulez que seafile fonctionne. Vous pouvez également changer le port d'écoute (8000).

Une fois la configuration effectuée, il faudra démarrer le service seafile :

 
Sélectionnez
seafile.sh start

puis seahub :

 
Sélectionnez
seahub.sh start

Au premier démarrage de seahub.sh, une adresse mail qui servira d'identifiant administrateur vous sera demandée dans la console, puis un mot de passe.

La connexion sur l'interface web se fera (par défaut) sur le port 8000 : http://addresse:8000

Image non disponible

Il faudra utiliser l'adresse mail préalablement renseignée.

Vous aurez accès à l'écran d'interface :

Image non disponible

Pour gérer vos documents, il vous faudra cliquer sur votre bibliothèque nommée « Ma bibliothèque ». Vous pourrez créer d'autres bibliothèques qui peuvent être vues comme des dossiers principaux.

Vous pourrez ensuite gérer vos documents :

Image non disponible

Le menu « importer » permet d'importer des documents ou dossiers.

Sur la ligne des fichiers, vous pourrez :

  • télécharger un document ;
  • partager un document ;
  • supprimer un document.

Les icônes sont explicites.

Sur la droite, vous aurez des liens permettant de voir les fichiers qui sont partagés avec vous ou que vous partagez.

4-1-1. Administration

Pour administrer les utilisateurs, il vous faudra depuis le compte administrateur cliquer sur l’icône en haut à droite (1), puis sélectionner « Administrateur système » (2) :

Image non disponible

Image non disponible

Dans l'interface Administration, vous pourrez :

  • gérer les utilisateurs et groupes ;
  • gérer les bibliothèques des utilisateurs (les supprimer, les partager, les transférer à d'autres utilisateurs) ;
  • gérer les équipements connectés ;
  • modifier les URL du serveur, le logo, l'image de fond.

Il est possible d'utiliser une connexion LDAP ou Active Directory. Mais vous devrez modifier la configuration du fichier ccnet.conf à la main. Rien n'est prévu dans l'interface graphique (du moins dans la partie graphique de la version communautaire). Exemple LDAP :

 
Sélectionnez
[LDAP]
HOST = ldap://192.168.1.123/
BASE = cn=users,dc=example,dc=com
USER_DN = administrator@example.local
PASSWORD = secret
LOGIN_ATTR = userPrincipalName

Pour plus de détails, veuillez consulter la documentation.

Depuis l'interface web utilisateur, vous pourrez télécharger et uploader les fichiers, les gérer (les supprimer, les renommer), créer un lien de partage, accéder à l'historique des différentes révisions.

La gestion de la rétention des versions se fait depuis la bibliothèque. Vous pourrez choisir :

  • pas d'historique ;
  • historique illimité ;
  • historique sur x jours.

Vous pourrez partager une bibliothèque avec d'autres utilisateurs ou groupes d'utilisateurs ou la transférer à un utilisateur.

Une bibliothèque peut contenir des dossiers.

Pour chaque bibliothèque, dossier, fichier, vous pouvez partager avec un utilisateur ou un groupe en lecture/écriture ou en lecture seule. Vous pouvez générer une URL de partage depuis l’icône Image non disponible sur la ligne de l'élément avec ou sans mot de passe de protection et avec ou sans expiration du lien.

4-1-2. Installation et utilisation du client

Une fois le client installé, lors de son premier démarrage, celui-ci vous demandera où stocker le dossier de synchronisation en local :

Image non disponible

Vous seront ensuite demandées les informations de configuration (URL du serveur, identifiants) :

Image non disponible

Vous pouvez choisir ou non une connexion automatique.

Vous aurez ensuite l'écran suivant :

Image non disponible

Un ajout ou modification de document sera répercuté sur le serveur.

Seafile ajoute un menu contextuel (uniquement disponible depuis le dossier synchronisé) :

Image non disponible

Ce menu – seulement disponible depuis le dossier synchronisé par Seafile – propose les options suivantes (le texte n'est pas traduit) :

  • get seafile download link ;
  • get seafile internal link ;
  • view file history.

La première option va fournir un lien pouvant être communiqué. Connaître ce lien permettra le téléchargement sans authentification. L'option « téléchargement direct » télécharge sans ouvrir de page.

La seconde option est un lien nécessitant une connexion. Nous pouvons constater que le nom du fichier apparaît dans le lien, contrairement à la première option.

La troisième option permet d'accéder à l'historique des modifications du fichier. Ceci ouvre une page web à partir de laquelle nous pourrons restaurer une version précédente :

Image non disponible

Pour synchroniser un dossier supplémentaire, il suffit de le sélectionner depuis le panneau seafile :

Image non disponible

Nous pouvons voir que le dossier « nouveau dossier » qui a été sélectionné apparaît comme nouvelle bibliothèque.

Celle-ci sera visible depuis l'interface web :

Image non disponible

Lors de la sélection du dossier, nous pouvons voir une option permettant le chiffrement :

Image non disponible

Il est possible d'utiliser HTTPS pour les dialogues, il faudra passer par Apache avec une configuration de virtualhost comme ci-dessous :

 
Sélectionnez
<VirtualHost *:443>
    ServerName www.myseafile.com
    # Use "DocumentRoot /var/www/html" for Centos/Fedora
    # Use "DocumentRoot /var/www" for Ubuntu/Debian
    DocumentRoot /var/www
    Alias /media  /home/user/seafile/seafile-server-latest/seahub/media

    RewriteEngine On

    <Location /media>
        Require all granted
    </Location>

    #
    # seafile fileserver
    #
    ProxyPass /seafhttp http://127.0.0.1:8082
    ProxyPassReverse /seafhttp http://127.0.0.1:8082
    RewriteRule ^/seafhttp - [QSA,L]

    #
    # seahub
    #
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>

Les chemins sont à adapter à votre situation.

Il faudra activer les modules rewrite et proxy_http :

 
Sélectionnez
a2enmod rewrite
a2enmod proxy_http

4-1-3. Bilan

Les fichiers stockés dans le dossier seafile-data ne sont pas exploitables tels quels, ils sont stockés sous forme de blocs avec des noms de fichiers sous forme de UUID. La perte des bases de données signifiera la perte des documents sur le serveur. Il est possible d’effectuer un montage FUSE avec la commande seaf-fuse en indiquant le point de montage :

 
Sélectionnez
./seaf-fuse.sh start /mnt

Dans le point de montage, vous allez trouver un dossier pour chaque utilisateur, qui va contenir un dossier par bibliothèque de l'utilisateur. Le nom du dossier de bibliothèque est composé d'un UUID suivi du nom de la bibliothèque. Les bibliothèques cryptées n’apparaîtront pas.

L'application Android fonctionne et m'a permis de modifier un document Word depuis l'application Word Android. Le document peut également être ouvert depuis stockage interne/seafile/nom utilisateur/[nom de la bibliothèque].

4-2. Syncthing

Syncthing est un système qui fonctionne en mode Peer 2 Peer, un peu comme BitTorrent. Des membres de la communauté mettent à disposition des serveurs de découverte, servant à mettre en communication deux postes devant se synchroniser. Ces serveurs ne participent pas au transfert de données. Vous pouvez utiliser vos propres serveurs de découverte, que vous pouvez ouvrir ou non à la communauté.

Syncthing est libre et écrit en Go.

Dans le cadre de ce tutoriel, nous installerons Syncthing sur une machine Linux qui se comportera comme un serveur dédié.

L'installation se fera via les dépôts de syncthing.

Vous pouvez aussi télécharger l'archive tar.gz sur le site de Syncthing.

Voici les commandes pour installer Syncthing :

 
Sélectionnez
wget https://syncthing.net/release-key.txt
apt-key add release-key.txt
apt-get update
echo 'deb https://apt.syncthing.net/ syncthing stable' >> /etc/apt/sources.list
apt-get update
apt-get install syncthing

Vous devrez peut-être installer le paquet apt-transport-https.

Dans les messages affichés sur la console, nous pouvons voir que par défaut, l'interface d'écoute est sur 127.0.0.1:8384.

Vous pourrez voir également des ouvertures de port vers l’extérieur que nous évoquerons plus tard.
Si vous exécutez syncthing en root, vous aurez un warning vous demandant d’exécuter celui-ci depuis un compte standard. Nous lancerons donc Syncthing depuis un compte non root.

Nous devons changer l'adresse d'écoute, qui par défaut est sur localhost. Pour cela, il faudra modifier le fichier config.xml se trouvant dans ~/.config/syncthing après avoir arrêté syncthing.

Il faudra descendre un peu dans le fichier jusqu’au bloc <gui …

Nous remplacerons donc la valeur dans le bloc <address>.

Appeler Syncthing tel quel va bloquer la console. Il faudra créer un démon de façon à pouvoir gérer le démarrage et l'arrêt.
Dans un premier temps, il sera possible d'ajouter une esperluette de façon à lancer l'application en tâche de fond :

 
Sélectionnez
syncthing &

Lors de la première connexion, vous aurez l'écran suivant :

Image non disponible

Par défaut, il n'y a pas de mot de passe, nous en avons un avertissement :

Image non disponible

Nous cliquons sur « Configuration » :

Image non disponible

Nous pouvons renommer le serveur via le champ « Nom convivial local de l'appareil ».

Entrons dans le second écran « interface graphique » :

Image non disponible

Nous pouvons également activer le support du HTTPS sur l'interface web.

Le navigateur nous retournera une alerte de sécurité, ceci à cause du certificat autosigné.

Une fois le mot de passe enregistré, nous aurons une fenêtre .htaccess d'authentification :

Image non disponible

La modification de la configuration a posteriori se fera par le menu « Actions » en haut à droite :

Image non disponible

Avant de gérer les partages, effectuons les réglages de connexion dans le dernier onglet de l'écran de configuration :

Image non disponible

Syncthing fonctionne en mode P2P (peer to peer). Les blocs de fichiers peuvent être transférés depuis plusieurs nœuds. Chaque machine participante peut être à la fois cliente et serveur. Dans un réseau P2P, la gestion peut être centralisée ou décentralisée. Les nœuds doivent connaître les machines participantes pour pouvoir télécharger les fichiers, c'est le rôle des serveurs de découverte. Toute machine peut être serveur de découverte ou utiliser les serveurs de découvertes publics fournis par syncthing ou des serveurs mis à disposition par les membres de la communauté.

Si vous cochez la case « découverte globale », votre machine sera, par défaut, serveur global de découverte).

Pour utiliser uniquement votre serveur de découverte, vous devrez installer le paquet syncthing-discosrv. Le serveur de découverte se lancera avec la commande service stdiscosrv start.

Voir la remarque précédente sur la création d'un démon.

Si vous souhaitez utiliser votre propre serveur de découverte, il vous faudra supprimer « default » dans le champ « serveurs de découverte globale ».

Une fois l'entrée supprimée, et la configuration enregistrée, Syncthing vous informera qu'il faut redémarrer :

Image non disponible

Au redémarrage, vous aurez l'avertissement suivant :

Image non disponible
Image non disponible

Syncthing ne sait pas quel serveur de découverte utiliser. Même si celui-ci est installé sur le même serveur, il faut lui renseigner son adresse IP précédée de https://.

4-2-1. Serveur de relais

Syncthing peut relayer des paquets entre deux machines si celles-ci ne peuvent pas communiquer en direct. Vous pouvez devenir relais et vous intégrer au pool de relais disponibles. Il vous faudra alors installer le paquet syncthing-relaysrv. Dans le cadre de ce tutoriel, nous n'utiliserons pas cette fonctionnalité et nous décocherons donc l'option « relayage possible ».

4-2-2. Création/modification des partages

Nous pouvons voir un « default folder » non partagé par défaut. En cliquant dessus, nous obtenons le détail :

Image non disponible

Nous pouvons voir que par défaut, le dossier partagé est ~/sync.

Vous pouvez l'activer, ou le supprimer et en créer d'autres (via les boutons ajouter, supprimer, gérer).

Les informations pertinentes seront :

  • le nom du partage (onglet général) ;
  • le dossier vers lequel celui-ci pointe (onglet général).

Le type de rétention du fichier dans l'onglet « Méthode de préservation des fichiers » avec :

  • pas de poubelle ;
  • style poubelle : les fichiers sont déplacés dans le dossier .stversion quand ils sont modifiés ou supprimés, il faudra indiquer le nombre de jours de conservation avant effacement définitif ;
  • suivi simplifié de version : les fichiers modifiés/supprimés sont déplacés dans .stversion avec horodatage. Il faut indiquer le nombre de versions à conserver ;
  • version échelonnée : un peu plus complète que le choix précédent, avec création d'un chemin relatif identique à l'emplacement d'origine. Pendant l'heure en cours, les versions sont conservées toutes les 30 secondes, au bout d'une journée, une version par heure est gardée, au bout de 30 jours, une version par jour est gardée, jusqu'à l'âge maximum (par défaut un an), une version est conservée par semaine ;
  • gestion externe : gérée par une commande externe à syncthing, commande à renseigner.

Options avancées :

  • intervalle d'analyse : impacte la fréquence de synchronisation et donc la bande passante utilisée ;
  • type de partage : lecture seule (appelée envoi) ou lecture écriture (appelée envoi/réception).

Je vous laisse tester ou consulter la documentation concernant les autres options.

4-2-3. Utilisation du client Windows

Après récupération du fichier .zip Windows sur la page de téléchargement, nous le plaçons sur le disque C (choix arbitraire).

L'exécutable est en ligne de commande (sans interface graphique). Il y a un outil annexe nommé syncthing-gtk pour pouvoir travailler depuis l'interface graphique.

Nous téléchargeons et installons ensuite syncthing-gtk et obtenons l'écran suivant :

Image non disponible

Nous activons le démon automatiquement.

Celui-ci va nous demander le chemin du démon que nous avons placé sur le disque C (à adapter si vous avez choisi un autre chemin) :

Image non disponible

Après autorisation de l’accès au pare-feu Windows, nous obtiendrons l’écran suivant, similaire à celui de l’interface web précédemment vue :

Image non disponible

Depuis le navigateur, à l’adresse http://127.0.0.1:8384, nous obtenons la même interface, interface que nous avons déjà vue sur la machine faisant office de serveur.

Nous allons maintenant jumeler notre client Windows avec la machine Linux, pour cela, nous récupérons l'id du Linux depuis le menu Actions :

Image non disponible

 

Celui-ci va nous donner un identifiant ainsi qu’un QR-Code :

Image non disponible

Dans le menu syncthing-gtk, nous ajoutons l'appareil :

Image non disponible

Nous cliquons « Ajouter un appareil » et renseignons les champs et surtout l’identifiant du serveur :

Image non disponible

Les tests étant effectués en local, j'ai forcé l'utilisation de la machine Linux pour la découverte des machines.

Au niveau du serveur, nous avons le message suivant :

Image non disponible

Une fois le bouton « Ajouter l'appareil » cliqué, les deux postes seront jumelés.

Nous avons ensuite le partage par défaut du Windows de test qui demande à être intégré :

Image non disponible

Dans le bas de l’écran, nous voyons que l’ordinateur wam-PC (le poste de test) est connecté.

Le dossier en provenance de wam-PC que nous nommons Commun va apparaître dans la liste des partages :

Image non disponible

À ce stade, les fichiers stockés dans le dossier partagé du Windows (%userprofile%\Sync) vont apparaître dans le dossier /home/[compte Syncthing]/commun et vice-versa, la synchronisation est opérationnelle.

4-2-4. Bilan

Ce système ne nécessite aucun serveur en interne. Il a par contre l'inconvénient de pouvoir poser des difficultés pour passer les pare-feu par son utilisation P2P. Il faut aussi accepter l'utilisation de serveurs tiers pour la découverte à moins d'en mettre en service en interne et d'en interdire (ou autoriser) l'accès aux utilisateurs tiers.

4-3. Sparkleshare

SparkleShare s'appuie sur Git pour synchroniser les données. Le fait d'utiliser Git permet d'avoir facilement une gestion des versions. Les données sont transmises cryptées (par le biais de SSH).

SparkleShare est téléchargeable directement depuis le site web. Pour la version Linux, que nous utiliserons en serveur, SparkleShare recommande l'utilisation de Flatpak, un système de conteneur/paquets.

Nous commençons par installer flatpak :

 
Sélectionnez
apt-get install flatpak ca-certificates

Le paquet ca-certificate est un prérequis

et indique la méthode d'installation :

 
Sélectionnez
flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.sparkleshare.SparkleShare

La commande renvoie :

 
Sélectionnez
Required runtime for org.sparkleshare.SparkleShare/x86_64/stable (org.gnome.Platform/x86_64/3.28) is not installed, searching...
Found in remote flathub, do you want to install it? [y/n]: y
Installing: org.gnome.Platform/x86_64/3.28 from flathub

Receiving delta parts: 0/10 13,8 MB/s 27,6 MB/268,4 MB 17 seconds remaining
10 delta parts, 81 loose fetched; 262039 KiB transferred in 315 seconds
Installing: org.freedesktop.Platform.ffmpeg/x86_64/1.6 from flathub

1 delta parts, 3 loose fetched; 2650 KiB transferred in 0 seconds
Installing: org.gnome.Platform.Locale/x86_64/3.28 from flathub

21 metadata, 82 content objects fetched; 2925 KiB transferred in 1 seconds
Installing: org.sparkleshare.SparkleShare/x86_64/stable from flathub

3 delta parts, 63 loose fetched; 93373 KiB transferred in 35 seconds
Installing: org.sparkleshare.SparkleShare.Locale/x86_64/stable from flathub

5 metadata, 1 content objects fetched; 2 KiB transferred in 0 seconds
root@Debian:~#

Pour installer SparkleShare, il faudra télécharger le script suivant :

 
Sélectionnez
wget https://raw.githubusercontent.com/hbons/Dazzle/master/dazzle.sh --no-check-certificate

Une fois le script rendu exécutable (chmod u+x), nous lancerons la commande :

 
Sélectionnez
./dazzle.sh setup

Ceci installera les dépendances, et finira par le message :

 
Sélectionnez
Setup complete!
To create a new project, run "dazzle create PROJECT_NAME".

Nous créons ensuite un partage, nommé « PROJECT » dans la nomenclature SparkleShare.

Puis nous créons le projet « TEST » :

 
Sélectionnez
./dazzle.sh create TEST

Ceci va créer un dépôt git nommé TEST dans le dossier /home/storage/TEST.

 
Sélectionnez
~# ./dazzle.sh create TEST
Creating project "TEST"...
  -> /usr/bin/git init --bare /home/storage/TEST
  -> /usr/bin/git config --file /home/storage/TEST/config receive.denyNonFastForwards true
  -> echo "*.DMG -delta" >> /home/storage/TEST/info/attributes
  -> chown --recursive storage:storage /home/storage
  -> chmod --recursive o-rwx /home/storage/TEST

Project "TEST" was successfully created.
To link up a SparkleShare client, enter the following
details into the "Add Hosted Project..." dialog:

      Address: ssh://storage@192.168.1.15:
  Remote Path: /home/storage/TEST

To link up (more) computers, use the "dazzle link" command.

~#

Il est possible de créer plusieurs dépôts/projets sur la même machine.

4-3-1. Installation du client sous Windows

Nous lançons l'installation du client depuis le site officiel.

Il vous sera demandé votre adresse mail, car il est possible d'utiliser des dépôts GitHub ou Gitorious comme espace de stockage.

Image non disponible

Un message indique la création d'un dossier de synchronisation, et propose un tutoriel :

Image non disponible

Une fois l'installation effectuée, votre ID client sera affiché. Il sera possible de le réobtenir ultérieurement.

Image non disponible

L'installation est ensuite terminée, reste à créer le connecteur.

La première chose à faire est d'enregistrer le client auprès du serveur :

 
Sélectionnez
~# ./dazzle.sh link
Paste your Client ID (found in the status icon menu) below and press <ENTER>.

 Client ID: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxP/ZXGZ9v3TBK2R3RVR/FeJhsLdZeYtFT62EQ5qKdVCZayZewZRMMoSMUphxyuJlPP88mTvfNiTHczED0fuzhnSDE9MMgDVpm3LXdF/8To5KSB010XQjX2A88AI8lkRIkrEXOAbZEiJfTt8TPXlDWd/pOisqiEpxQ4T+NrkEf4TEc5EpsBH5qxWGc5kMjgd8+1moItJ8BUpqVXcXDtJg1Aj3tzhr1SiuOOdQmny5pA2+yFlT0qJ3sTCaCy8gD6OUeUYLhMvAU8kpyL2dwvbGVUVfKHIMjl6waCRMGhHQmRhF2ADifBSd2CcqFO7LO8N7sUnLICoZ9ROaMKZ6ptUBfw== wam-PC

The client with this ID can now access projects.
Repeat this step to give access to more clients.

~#

Il faut ensuite aller dans le menu contextuel de SparkleShare pour créer le connecteur et sélectionner « add hosted project » :

Image non disponible

Nous sélectionnons ensuite « On my own server » et renseignons les données précédemment communiquées par le serveur (Address et Remote Path)

Image non disponible

..

Image non disponible
Image non disponible

Sous Windows, le dépôt est copié en local dans le dossier %userprofile%\SparkleShare\<nom du projet>. Toute modification de ces fichiers est répercutée sur le serveur.

Il n'est pas possible de sélectionner le dossier à synchroniser dans le dépôt, ou d'en ajouter d'autres.

4-3-2. Suivi de version

Il est possible d'accéder à l'historique de version depuis le menu déroulant SparkleShare. Il faudra sélectionner « Recent changes » :

Image non disponible

En cliquant sur les documents (au niveau de l'heure), il est possible d'accéder aux différentes révisions :

Image non disponible

Cliquer sur « restore » va alors ouvrir une boite de dialogue demandant où enregistrer le fichier. Le nom de fichier par défaut est complémenté par la date et l'heure.

Il n'y a pas de fonction de nettoyage des versions ni de durée de rétention, la rétention est illimitée.

Vous pouvez nettoyer le dépôt avec les commandes suivantes depuis le dossier du dépôt (/home/storage/TEST dans notre exemple) :

 
Sélectionnez
git gc --prune=now --aggressive
 
Sélectionnez
git repack -a -d -l

Cette manipulation va effacer l'ensemble de l’historique dans le dépôt pour ne garder que les versions les plus récentes.
Cette manipulation a été faite suite à une recherche Internet, sans maîtrise de Git, cela peut peut-être avoir des conséquences.

4-4. Pydio

Pydio, acronyme de « Put Your Data In Orbit », a été créée par une startup française. Pydio (anciennement AjaXplorer) est fourni sous deux versions, une version communautaire et une version entreprise avec support et les fonctions supplémentaires suivantes :

  • meilleure personnalisation de l'interface (couleurs, logo…) ;
  • interface simplifiée de partage « easy transfer » similaire à WeTransfer ;
  • possibilité de désactiver l'option de chat dans les Cells ;
  • applications mobiles gratuites préconfigurées ;
  • possibilité de faire des règles de sécurité autour des métadonnées ;
  • politique d'autorisation dans le carnet d'adresses : partage des utilisateurs et des équipes avec d'autres utilisateurs ;
  • politique d’historique de version plus poussée ;
  • Dynamic Nodes Programming (pour des grosses volumétries) ;
  • journaux d'usage séparés des journaux techniques ;
  • possibilité de couper des sessions suspectes ;
  • Role bases ACL (filtrage par IP, terminaux, géographie…..) ;
  • les connecteurs aux annuaires depuis Pydio Cells ne sont plus dans la version gratuite (les connexions Pydio 8 étaient des contributions communautaires).

Il est disponible pour Windows, MacOS X, Linux (64 bits), IOS, et Android.

La version entreprise est disponible pour Linux et Mac OS Server. Des images OVF (Open Virtual machine Format) sont disponibles. Pydio est également disponible dans Docker.

Pydio fonctionnait précédemment en PHP, il a été complètement réécrit en Go. La nouvelle version se nomme Pydio Cells. Le terme Pydio utilisé ci-dessous désigne Pydio Cells.

Pydio nécessite MySQL 5.7 minimum (ou MariaDB >10.3).

Nomenclature Pydio

Pydio utilise les termes suivants dans sa nomenclature :

  • Workspaces : contrôles d'accès principaux gérés par les administrateurs ;
  • Cell : espace de travail dynamique géré par les utilisateurs.

4-4-1. Installation

4-4-1-1. Installation des prérequis

Nous installons MariaDB (sur Debian 9, mysql-server pointe vers MariaDB) :

 
Sélectionnez
apt-get install mysql-server

Nous lançons ensuite le script mysql_secure_installation.

Nous créons ensuite une base de données :

 
Sélectionnez
~# Mysql -u root -p
MariaDB [(none)]> CREATE USER 'pydio'@'localhost' IDENTIFIED BY '<mot de passe>';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> CREATE DATABASE cells;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cells.* TO 'pydio'@'localhost';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> MaFLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
~#
4-4-1-2. Installation et configuration de Pydio

Nous commençons par créer l'utilisateur pydio :

 
Sélectionnez
adduser pydio

Nous nous loguons sous le compte Pydio, téléchargeons le .zip depuis le site et le décompressons.

 
Sélectionnez
~$ wget https://download.pydio.com/latest/cells/release/{latest}/linux-amd64/pydio-cells-{latest}-linux-amd64.zip –no-check-certificate

Une fois le .zip décompressé, nous nous retrouvons avec un exécutable nommé cells (ou cells-enterprise pour la version entreprise) que nous lançons :

 
Sélectionnez
./cells

Celui-ci affichera un résumé de la documentation (équivalent à l’option –-help) dont voici la sortie :

 
Sélectionnez
Thank you for using Pydio Cells.
Comprehensive sync & share solution for your collaborators. Open-source software deployed on-premise or in a private cloud.

### Installation

For the very first run, use './cells install' to load browser-based or command-line based installation wizard. Services
will start at the end of the installation.

### Run

Run './cells start' to load all services.

### Logs level

By default, logs are outputted in console format at the Info level. You can set the --log flag or set the PYDIO_LOGS_LEVEL environment
variable to one of the following values:
 - debug, info, error : logs are written in console format with the according level
 - production : logs are written in json format, for usage with a log aggregator tool.

### Services Discovery

Micro services need a registry mechanism to discover each other. You don't need to install any dependency.
Cells currently only supports NATS (nats.io) implementation. If a gnatsd service is already running, it will be detected.

### Cells working directories

By default, application data is stored under the standard OS application dir :

 - Linux: ${USER_HOME}/.config/pydio/cells
 - Darwin: ${USER_HOME}/Library/Application Support/Pydio/cells
 - Windows: ${USER_HOME}/ApplicationData/Roaming/Pydio/cells

You can customize the various storage locations with the following ENV variables :

 - CELLS_WORKING_DIR : replace the whole standard application dir
 - CELLS_DATA_DIR : replace the location for storing default datasources (default CELLS_WORKING_DIR/data)
 - CELLS_LOG_DIR : replace the location for storing logs (default CELLS_WORKING_DIR/logs)
 - CELLS_SERVICES_DIR : replace location for services-specific data (default CELLS_WORKING_DIR/services)

Usage:
  ./cells [flags]
  ./cells [command]

Available Commands:
  acl         Manage access control lists
  completion  Add auto-completion helper to Cells
  config      Configuration manager
  data        Directly interact with a datasource
  doc         Manage documentation about Cells and this CLI tool
  help        Help about any command
  install     Launch the installation process
  meta        Directly manage metadata on the nodes
  ps          List all available services and their statuses
  start       Start Cells services
  stop        Stop one or more services
  update      Check for available updates and apply them
  user        Manage users
  version     Show Pydio Cells version information

Flags:
      --broker string                     Pub/sub service for events between services (currently nats only) (default "nats")
      --broker_address string             Broker port (default ":4222")
      --enable_metrics                    Instrument code to expose internal metrics
      --enable_pprof                      Enable pprof remote debugging
      --fork                              Used internally by application when forking processes
      --grpc_cert string                  Certificates used for communication via grpc
      --grpc_external string              External port exposed for gRPC (may be fixed if no SSL is configured or a reverse proxy is used)
      --grpc_key string                   Certificates used for communication via grpc
  -h, --help                              help for ./cells
      --log string                        Sets the log level mode (default "info")
      --registry string                   Registry used to manage services (currently nats only) (default "nats")
      --registry_address string           Registry connection address (default ":4222")
      --registry_cluster_address string   Registry cluster address (default ":5222")
      --registry_cluster_routes string    Registry cluster routes
      --transport string                  Transport protocol for RPC (default "grpc")
      --transport_address string          Transport protocol port (default ":4222")

Use "./cells [command] --help" for more information about a command.

Nous procédons comme indiqué à l'installation :

 
Sélectionnez
./cells install

Nous obtenons le résultat suivant :

 
Sélectionnez
[Configs] Upgrading: setting default config services/pydio.web.oauth/secret to WRESXzxulWGn9-gK8.kKeqcwB4xBfVHM
[Configs] successfully saved config after upgrade - Reloading from source
WARNING: File descriptor limit 1024 is too low for running Pydio Cells Home Edition in production. At least 8192 is recommended. Fix with "ulimit -n 8192".

Welcome to Pydio Cells Home Edition installation
Pydio Cells Home Edition will be configured to run on this machine. Make sure to prepare the following data
 - IPs and ports for binding the webserver to outside world
 - MySQL 5.6+ (or MariaDB equivalent) server access
Pick your installation mode when you are ready.

Cannot find vaultKeyPath, creating new one /home/pydio/.config/pydio/cells/cells-vault-key
**************************************************************
     Warning! A keyring is not found on this machine,
        A Master Key has been created for cyphering secrets
   It has been stored in /home/pydio/.config/pydio/cells/cells-vault-key        
   Please make sure to secure this file and update the configs
   with its new location, under the defaults/keyPath key.
***************************************************************
Use the arrow keys to navigate: ↓ ↑ → ←
? Installation mode:
  ▸ Browser-based (requires a browser access)
    Command line (performed in this terminal)

Nous choisissons l'installation via le navigateur (Browser-based). L'installeur va nous proposer l'adresse utilisable correspondant à l'adresse IP de la machine sur le port 8080, que nous sélectionnons :

 
Sélectionnez
- Browser-based (requires a browser access)
Use the arrow keys to navigate: 
Use the arrow keys to navigate: 
  Binding Host (ip:port or yourdomain.tld that the webserver will listen. If internal and external urls differ, use internal here):
+   Other
  - 192.168.1.200:8080
    localhost:8080
 
Sélectionnez
- Browser-based (requires a browser access)
Use the arrow keys to navigate: 
- 192.168.1.200:8080
- External Host (used to access this machine from outside world if it differs from Bind Host): 192.168.1.200:8080

Nous validons par un retour chariot.

L'étape suivante consiste à régler SSL, il nous est proposé :

  • d'entrer le chemin des certificats ;
  • d'utiliser un certificat Let's Encrypt ;
  • de générer un certificat autosigné.
 
Sélectionnez
Use the arrow keys to navigate: ↓ ↑ → ←
? Choose TLS activation mode. Please note that you should enable SSL even behind a reverse proxy, as HTTP2 'TLS => Clear' is generally not supported:
    Provide paths to certificate/key files
  ▸ Use Let's Encrypt to automagically generate certificate during installation processerate your own locally trusted certificate (for staging env or if you are    Generate your own locally trusted certificate (for staging env or if you are

L'installeur depuis la ligne de commande se met ensuite en écoute sur le port web Pydio (8080). Voici l'écran de l'interface d'installation web :

Image non disponible

En version Entreprise, vous aurez un écran supplémentaire vous demandant d'entrer votre clé de licence :

Image non disponible

Une fois les conditions acceptées, nous nous retrouvons dans l'écran de paramétrage de la base de données :

Image non disponible

Nous arrivons ensuite à l'écran nous demandant :

  • le nom de l'application ;
  • la langue par défaut ;
  • le login et mot de passe d'administration.

Image non disponible

Un dernier écran de confirmation avant installation permettant d'afficher un résumé des réglages (détail affiché via l'appui du bouton à cet usage) :

Image non disponible
 

Vous aurez ensuite le message « install successful » indiquant que la fenêtre sera rechargée une fois les services activés :

Image non disponible

Nous nous retrouvons ensuite devant l’écran de connexion :

Image non disponible

Une fois l'installation terminée, il faudra redémarrer cells avec l'option start comme ceci :

 
Sélectionnez
$ ./cells start

Restera ensuite à automatiser le démarrage (par la création d'une Unit systemd).

4-4-2. Découverte de l'interface

Une fois connectés, nous nous trouverons devant une interface assez simple d'utilisation. Dans la partie gauche (1), vous avez les différentes « Cells », pouvant être vues comme une bibliothèque ou unité de partage. Vous avez aussi votre répertoire par défaut (« Personal files »).

Dans la barre en haut, vous avez les fonctions afférentes aux fichiers (2), puis en dessous les fichiers présents (3). Et enfin, dans la partie droite, le détail sur les fichiers (4).

Image non disponible

Il est également possible de faire les manipulations sur les fichiers en cliquant dessus avec le bouton droit de la souris pour obtenir le menu contextuel :

Image non disponible

4-4-2-1. Partage

Pour partager un fichier, vous avez deux possibilités :

  • créer un lien de partage public ;
  • mettre le document dans un Cell pour le partager.

Pour activer le lien public, il faut cliquer sur le bouton droit pour activer le lien public :

Image non disponible

Le lien sera ensuite affiché :

Image non disponible

En cliquant sur Accès, vous pourrez :

  • mettre un mot de passe restreignant l'accès :
  • mettre une date d'expiration :
  • limiter le nombre de fois que le fichier peut être téléchargé.

Image non disponible

Écran correspondant à un lien de partage :

Image non disponible

En cas de téléchargement expiré ou de nombre maximum atteint, vous aurez ce type de message :

 
Sélectionnez
This link as expired (number of maximum downloads has been reached).

Pour partager avec un utilisateur Pydio, il faudra sélectionner celui-ci dans la partie droite en cliquant sous le nom du fichier, ce qui fera apparaître un menu déroulant avec les utilisateurs. Vous pourrez choisir les droits (lecture ou lecture/écriture) :

Image non disponible

Une fois le partage créé, l'entrée du menu contextuel change de « Partager » à « Éditer le partage ».

4-4-3. Administration

Seules les options les plus pertinentes sont détaillées ci-dessous.

L'accès à l'interface d'administration se fait en cliquant sur les trois points en haut à gauche, depuis le compte administrateur :

Image non disponible

Image non disponible

Le retour à l'interface standard se fait en cliquant sur l’icône dossier en haut à droite.

Voici l'interface d'administration pour la version communautaire :

Image non disponible

Pour avoir accès à toutes les fonctionnalités, il faudra cliquer sur l’icône Image non disponible en haut à droite.

Une fois dans l’écran d'administration, vous aurez sur la gauche cinq catégories :

  • Gestion des identités ;
  • Gestion des données ;
  • Logs & autres données ;
  • Configurations globales ;
  • Ressources développeurs.
4-4-3-1. Gestion des identités

La section « Gestion des identités » permet de gérer les utilisateurs et leurs droits.

Pour gérer les utilisateurs, il faut cliquer sur « Utilisateurs » :

Image non disponible

En cliquant sur le crayon à côté du nom d'un utilisateur, nous avons accès au détail de son compte avec notamment la langue (effectif après reconnexion), les Cells auxquels il a accès :

Image non disponible

En cliquant sur les trois petits traits en haut à droite de la fenêtre de l'utilisateur, vous pourrez changer le mot de passe, avec une option forçant le changement immédiatement, et « Exclure » celui-ci. Exclure un utilisateur signifie suspendre son compte (qu'il sera possible de réactiver).

Supprimer un utilisateur n'effacera pas son dossier personnel dans les données de Pydio.

Vous aurez aussi accès à la gestion des droits des dépôts (workspaces) accessibles :

Image non disponible

La gestion des rôles permet de créer des règles par défaut pour un groupe d'utilisateurs (accès à certains dépôts, langue par défaut, etc.).

4-4-3-2. Gestion des données

La partie dépôts vous permettra d'ajouter de nouveaux workplaces pointant sur un sous-dossier du disque (pour créer un nouveau dossier, il faudra taper son nom).

Il est précisé dans l'interface que la synchronisation est expérimentale.

La partie Datasources permet de gérer les volumes accessibles à Pydio, avec par défaut le volume local. Vous pouvez également utiliser un volume Amazon S3. C'est à ce niveau que se gère le versioning. C'est à cet endroit également que vous pourrez activer le chiffrement.

Le système de gestion des versions propose :

  • tout garder (keep all) ;
  • maximum 30 jours : garde trois versions et efface celles supérieures à 30 jours ;
  • Suppressions régulières : rétention jusqu'à 10 versions avec espacement 10 min, puis 3 h, puis 1 jour, etc. (voir détail en cliquant sur la fonction).
4-4-3-3. Configurations globales

Dans la partie options principales, vous retrouverez le titre de l'application ainsi que la langue par défaut. Ce sont les éléments qui ont été demandés lors de l'installation.

Dans la partie envoi de courriels, vous pourrez positionner les réglages permettant à Pydio d’envoyer des mails.

Dans la partie Authentification, vous pourrez régler la longueur minimale du mot de passe.

Dans la partie extensions, vous pourrez activer/désactiver des fonctionnalités optionnelles comme le visualiseur PDF, l'aperçu d'images, le visualiseur OpenDocument, l'accès à Collabora Online.

4-4-4. Utilisation du client

Le client Pydiosync est disponible pour Windows, Mac OS X, et Linux, mais uniquement pour l'ancienne version Pydio 8.

Pas de client PydioSync pour Pydio Cell pour le moment.

Une fois le client Pydiosync installé, la première chose à faire sera de créer une synchronisation :

Image non disponible

Nous entrons ensuite les éléments nécessaires à la connexion (ne pas oublier de préciser le port : 8080 par défaut) :

Image non disponible
4-4-4-1. Stockage des fichiers sur le disque

Les fichiers que vous stockez dans Pydio sont retrouvables dans le compte utilisateur utilisé pour faire fonctionner Pydio dans le dossier ~/.config/pydio/cells/data/ soit dans le sous-dossier cellsdata/[nom d'utilisateur] soit dans personal/[nom d'utilisateur]. Le dossier versions va contenir les différentes versions des fichiers sous forme de nom de fichier UUID.

La sauvegarde de la totalité du dossier .config/pydio/cells permet de conserver les données et la configuration. Il ne faudra pas oublier d'y associer un dump de la base de données.

4-4-5. Version commerciale

La première différence visible concerne le tableau de bord, avec des informations globales pour l'administrateur :

Image non disponible

Contrairement à celui de la version communautaire :

Image non disponible

La différence suivante est l'apparition d'une entrée supplémentaire « External Directories » servant à créer un connecteur LDAP ou Active directory :

Image non disponible

Voici l'écran de réglages :

Image non disponible

Pour plus d'informations, vous pouvez consulter la documentation officielle.

Autre menu supplémentaire : « Appearance ». À cet endroit, vous pourrez mettre votre logo et vos images de fond, fonction non disponible dans la version Community.

Image non disponible

Ici, la page web a été dézoomée (50 %) pour permettre de voir le détail des réglages. La page web s'adapte à l’affichage (responsive).

4-4-6. Bilan

L'ancienne version Pydio 8.2.1 était plus souple et plus facile à installer que son successeur Pydio Cells, car écrit en PHP et s'appuyant sur des plugins faisant référence (tels que SabreDAV). Pydio Cells a un prérequis plus important.

Pas de fonction de connexion à un annuaire LDAP ou Active Directory dans la version Community, contrairement à Pydio 8.2.1. Pour ce type de connexion, il est nécessaire d'utiliser la version commerciale.

Pas de client de synchronisation pour le moment, celui-ci étant en cours de réécriture pour Cells, le client présenté précédemment correspond à celui de Pydio 8, la future version devrait lui ressembler.

La réussite de l'installation semble hasardeuse, celle-ci bloquant à la phase d'installation (peut-être dû au non-respect des prérequis minimums sur ma VM de test).

5. Solution maison

L'idée sera ici de synchroniser un dossier local avec un dossier distant avec une solution créée par moi-même.

Ceci sera implémenté par deux fonctionnalités différentes :

  • la synchronisation d'une source avec une destination (bidirectionnelle ou non) ;
  • le déclenchement de cette synchronisation lors d'une modification dans la source.

5-1. Linux

Pour synchroniser deux dossiers, la solution la plus simple sera d’utiliser rsync. L'utilisation de rsync sera faisable via une connexion SSH vers la destination. rsync permettant la synchronisation de deux dossiers « locaux », il sera possible de synchroniser vers n'importe quel type de partage tant que celui-ci peut être monté dans sur un point de montage de « / » et qu'il respecte les accès fichier POSIX.

Rappel : rsync fait une synchronisation en sens unique. Si vous avez besoin d'une synchronisation bi-directionnelle, vous pouvez utiliser Unison.

Nous pourrons ensuite surveiller les événements se passant sur le dossier source avec incron (Inotify cron).

Incron reprend le principe de fonctionnement de cron en reposant sur un fichier incrontab.

Voici un exemple d'entrée de surveillance pour le dossier /home/test :

 
Sélectionnez
/home/test/  IN_CREATE|IN_MODIFY rsync -avz [source] [destination]

L'entrée précédente va par exemple déclencher rsync à chaque création ou modification de document.

5-2. Windows

Il existe une multitude d'applications permettant la synchronisation entre une source et une destination. Robocopy est une commande système puissante (sans interface graphique) avec beaucoup d'options. En l’utilisant de façon intelligente, notamment dans un script, vous pourrez effectuer des sauvegardes.

Exemple :

 
Sélectionnez
Robocopy.exe "c:\source" "d:\destination" /MIR /z /dcopy:T /XD "toto" /LOG+:"C:\MonRepertoireSource_2020-07-22.txt"

Le dossier c:\source sera synchronisé avec le dossier destination. Explications des options :

  • /MIR : équivalent à /e (copie des sous-répertoires) et /purge (supprime de la destination les fichiers et dossiers n'existant plus dans la source) ;
  • /z : copie en mode redémarrable ;
  • /dcopy : attributs de copie D=données,A=attributs, T=timestamp (DA par défaut) ;
  • /xd : exclusion de dossier (/xf pour exclure un fichier) ;
  • /log+ : nom du fichier de log (le + permet le mode ajout, sinon le fichier est remplacé s’il existe).

plus d'informations sur robocopy ici.

WinSCP permet de synchroniser un dossier local avec un dossier distant via SSH, et ceci de façon automatisée si vous le souhaitez. WinSCP est fourni avec une application en ligne de commande.

Il faudra à cela ajouter un système de contrôle des modifications dans le dossier source, par exemple Watch For Folder, un outil très léger et simple d'utilisation le fera très bien pour vous.

Ci-dessous une copie d'écran :

Image non disponible

Une fois le profil créé, il ne faudra pas oublier de le démarrer en appuyant sur « Start », dans l’écran listant les profils. Écran que l’on obtient après avoir appuyé sur « Apply » :

Image non disponible

Pour un aficionado de PowerShell, il ne devrait pas être compliqué de faire un équivalent simple (sans interface graphique par exemple) en quelques lignes de code.

Il existe des portages de la commande rsync sous Windows, comme deltacopy. Mais autant utiliser une commande native comme robocopy si vous n'avez pas besoin d'interface graphique.

5-3. Mac OS X

Mac OS X inclus rsync. Il existe, comme sur Windows (et quelques fois les mêmes que sous Windows), une multitude de logiciels de synchronisation.

Avec Automator, et une action dossiers, vous pourrez déclencher un événement lors de l'ajout d'un élément, mais Automator ne permet pas d'intercepter une modification ou une suppression de fichier.

Apple fournit une API « File System Event » permettant à une application d'être notifiée d'un changement dans un dossier. Cet API peut être utilisée avec fswatch, un outil cross-platform en ligne de commande (installable sous Mac OS X avec homebrew).

Tri-Backup, logiciel de sauvegarde faisant référence et payant, comporte une option de surveillance de dossier permettant de déclencher une action. Le but premier de tri-backup reste la sauvegarde incrémentale et le clonage de disque.

Hazel est un utilitaire payant permettant d'appliquer des critères à un dossier selon une règle définie, celui-ci n'a pas été testé.

6. Remerciements

Je remercie Mickael Baron, khayyam90, LittleWhite, et Louis-Guillaume Morland pour leur relecture technique.

Je remercie Claude Leloup pour sa relecture orthographique.