Recherche logiciel opensource permet synchronisation unidirectionnelle fichiers

Bonjour,
j’aimerais savoir si l’un d’entre vous a installé et configuré une solution qui permet de faire une synchronirsation unidirectionnelle. L’objectif est que le serveur 1 reçoive des fichiers qu’il transmet au serveur 2. Ce dernier stocke les fichiers reçus. Le serveur 1 les supprime progressivement au bout de 60 jours.

Actuellement, j’ai essayé syncthing et resilio sync sur Docker. Le partage fonctionne actuellement correctement, mais lorsque je supprime sur le serveur 1, il supprime également sur le serveur 2 de fichiers, chose que je ne veux pas.

Avez-vous une idée d’une solution logiciel capable de le faire ?

Salut

Ma réponse va te surprendre.
Je n’y connais rien en serveur web et serveur de mail perso et je me suis dirigé vers l’IA et oui sur openAI exactement.
Et surprise j’ai un serveur qui tourne comme un pro et je reçois les fichiers que je veux par mail mais aussi sur un autre disque.

Donc résultat des courses, l’IA est peut être celui qui va même te faire les fichiers dont tu as besoin.
Alors c’est très long car il ne retiens pas vraiment ce que tu lui demande mais pas contre au final cela fonctionne.

Bon courage mais je suis persuader que tu trouveras ton bonheur

Bonne journée

PS: Je vie en camping car jamais branché à l’électricité et mon serveur web tourne h24
Donc tout est possible…

edité à 13:12
voici ce que l’AI me donne une solution : Bonjour !

Ce que vous cherchez à mettre en place ressemble à une synchronisation unidirectionnelle, où les fichiers sont envoyés du serveur 1 vers le serveur 2, mais la suppression des fichiers sur le serveur 1 ne doit pas affecter ceux sur le serveur 2.

Solutions possibles :

1. Rsync (avec des scripts personnalisés)

Une solution classique pourrait être l’utilisation de Rsync pour gérer la synchronisation des fichiers. Vous pourriez configurer un script cron qui effectue la synchronisation à intervalles réguliers, en veillant à ce que la suppression des fichiers sur le serveur 1 ne soit pas répercutée sur le serveur 2.

  • Problème actuel avec rsync : Par défaut, rsync est bidirectionnel et il peut supprimer des fichiers à destination si les fichiers ont été supprimés source. Cependant, en configurant correctement les options, cela peut être évité.

Voici une commande basique qui pourrait répondre à vos besoins :

bash

CopierModifier

rsync -av --ignore-existing /chemin/serveur1/ /chemin/serveur2/
  • --ignore-existing permet d’éviter que les fichiers existants sur le serveur 2 ne soient écrasés ou supprimés.

Ensuite, pour gérer les fichiers supprimés sur le serveur 1 après 60 jours, vous pouvez créer un script pour supprimer les fichiers plus anciens sur le serveur 1, mais ne pas affecter ceux sur le serveur 2.

2. Rclone (avec une configuration unidirectionnelle)

Rclone est un autre outil qui peut gérer des synchronisations unidirectionnelles. Il est souvent utilisé pour gérer des transferts de fichiers vers des solutions cloud, mais il peut aussi être utilisé pour une configuration serveur-serveur.

Pour une synchronisation unidirectionnelle, vous pouvez utiliser la commande rclone sync qui va pousser les fichiers du serveur 1 vers le serveur 2 tout en respectant un flux unidirectionnel.

Voici un exemple de commande pour cela :

bash

CopierModifier

rclone sync /chemin/serveur1/ remote:/chemin/serveur2/

Cela va :

  • Synchroniser tous les fichiers du serveur 1 vers le serveur 2.
  • Ne pas supprimer les fichiers existants sur le serveur 2.

En ajoutant l’option --delete-during, vous pouvez spécifier que seules les nouvelles données seront envoyées, et cela n’affectera pas les fichiers existants du serveur 2.

3. Unison (en mode unidirectionnel)

Unison est un autre outil qui peut synchroniser des répertoires entre deux serveurs. En utilisant un mode spécifique (par exemple, -batch), vous pouvez spécifier que le serveur 2 ne doit pas être modifié par des suppressions sur le serveur 1.

Vous pouvez configurer un profil de synchronisation unidirectionnelle avec Unison. Il existe une option pour éviter les suppressions, ce qui permettrait de ne pas toucher aux fichiers sur le serveur 2 lorsqu’ils sont supprimés du serveur 1.

Voici un exemple de commande :

bash

CopierModifier

unison /chemin/serveur1 /chemin/serveur2 -prefer /chemin/serveur1

Cela fait en sorte que serveur 1 est préféré, et les suppressions sur serveur 1 n’affecteront pas serveur 2.

4. Syncthing avec une configuration avancée (réfléchir à l’option de partage unidirectionnel)

Syncthing peut théoriquement répondre à vos besoins, mais il est par défaut bidirectionnel. Toutefois, il existe une option dans la configuration des dossiers qui vous permet de spécifier un « mode de lecture seule » sur le serveur 2. Cela signifie que les fichiers seront poussés vers le serveur 2 mais les suppressions ne seront pas répercutées.

  • Dans l’interface de Syncthing, vous pouvez définir un dossier sur le serveur 2 comme « Lecture seule ». Cela permettra au serveur 1 de transférer des fichiers, mais les suppressions sur le serveur 1 ne se répercuteront pas.

Pour ce faire :

  1. Allez dans les paramètres de Syncthing sur le serveur 2.
  2. Activez l’option « Read Only » sur le dossier que vous partagez avec le serveur 1.
  3. Cela garantit que les fichiers seront reçus et stockés, mais aucune suppression ne se fera sur le serveur 2.

5. Resilio Sync (en configuration unidirectionnelle)

Bien que Resilio Sync soit principalement conçu pour la synchronisation bidirectionnelle, il offre des fonctionnalités avancées dans sa version Pro, comme des permissions spécifiques pour les dossiers. Vous pouvez configurer un dossier comme étant en « mode de lecture seule » sur le serveur 2.

Si vous n’utilisez pas la version Pro de Resilio Sync, vous pourriez être limité. Sinon, vous pouvez configurer la synchronisation unidirectionnelle en activant « lecture seule » sur le serveur 2.

Conclusion

Parmi les solutions proposées :

  • Rsync et Rclone semblent les plus simples et les plus flexibles pour répondre à votre besoin de synchronisation unidirectionnelle.
  • Syncthing et Resilio Sync peuvent aussi fonctionner si vous configurez correctement les permissions pour que le serveur 2 soit en mode « lecture seule ».

Si vous avez une préférence pour une de ces solutions, je peux vous aider à affiner la configuration !

Bonjour,
Je pense que ta solution, c’est rsync avec derrière un fichier batch qui supprime les fichiers âgés de plus d’un mois, avec cron tu dois pouvoir automatiser tout ça si tu es sur linux, sur windows je sais pas.
Par défaut rsync ne supprime pas les fichiers sur la destination qui sont effacés sur la source.

mince ce n’est pas la solution esperée

Parce que tu espérais quoi comme solution ?

Bonjour,

Je confirme, pour de la synchro unidirectionnelle sous Linux, c’est bien rsync qui est l’outil le plus utilisé et recommandé et probablement le plus efficace et simple à mettre en œuvre.

A+

Bonjour, existe-t-il une interface web compatible ?

Bonjour,

Pour ma part, je suis adepte des lignes de commande, toutefois il existe grsync que je ne connais pas.

https://fr.linux-terminal.com/?p=4567

A tester.

A+

je l’ai installé mais je m’attendais à y avoir accès via un navigateur WEB

Salut,
C’est simple.
C’est Rsync et cron.
Point barre.
Scripts bash basiques et usage de cron pour les lancer régulièrement
C’est plié.

Pourquoi une interface Web ?

  • Le serveur1 reçoit les fichiers.
  • Rsync toutes les 5 minutes pour pousser les nouveaux fichier vers serveur2 (tache cron)
  • find avec rm si mtime +60 qui tourne en cron toutes les 12h (par exemple)

=> Une interface web n’a aucune utilité.
Au pire, tu en fais une pour lancer les scripts à la main par clic, mais un Terminal et la CLI seront nettement plus pratiques.
++