Aller au contenu

Transfert de données d'un dossiers A vers un dossiers B ( synchro) en cli via planificateur de tache (Synology)

Featured Replies

Posté(e)

Bonjour,

Pour une question de sécurité je dois créé 2 dossiers partagés sur mon Synology,

Un dossiers est nommé A et le deuxième B

La question est la suivante comment faire une synchro de dossiers en interne? ces à dire:

 

je met un fichier dans le dossier A, puis il est déplacé vers le dossier B

j'ai trouvé un script que j'utilise avec planifcation de tache, cela fonctionne plutôt pas mal

le voici:

find /volume1/OUT-A/* -maxdepth 0 -amin +1 -exec mv '{}' /volume1/OUT-B/ \;

Mais il y a 2 problemes:

Les médias que je transfère font pour la plupart du temps entre 20G et 500G (médias video)

Donc lorsque je copie un média dans le dossier A, le Synology déplace le média dans le dossier B, sans attendre la fin de la copie.

Je me retrouve avec un médias corrompu,j'ai ajouté l'option -cmin +10, mais 10minutes, cela peut etre suffisant comme insuffisant.

Existe t'il une option qui permette de dire que le fichier est terminé de copier, ou que le fichier est fermé.

2 eme probleme:

Lorsque je met des dossiers dans le dossier A, la commande n'attend pas que la copie soit terminée, il me déplace le dossier, du coup cela met la copie en erreur.

L'idée serait qu'il ne prenne en considération le fichier ou le dossier une fois la copie terminée.

 

Merci d'avance

lolo

Posté(e)

@lolo2000

Bonjour,

  Le 3/9/2021 à 10:08 AM, lolo2000 a dit :

La question est la suivante comment faire une synchro de dossiers en interne?

Et as-tu essayé tout simplement avec le package Synology Drive ?

Cordialement

oracle7😉

Posté(e)

Ce n'est pas une synchro que tu fais là, c'est un déplacement, il faudrait a minima une copie pour parler de synchronisation. Mais une synchronisation c'est plus complexe que ça.

Posté(e)
  • Auteur

Oui effectivement ce n'est pas une synchro, c'est un MOVE.

Il me semble que drive ne fait pas de déplacement inter dossier partagé.

Posté(e)

salut.

je ne comprend pas l’intérêt de déplacer un fichier de A vers B puis bak again. Si tu peux nous donner ton intention on comprendra peux être mieux  ce que tu veux faire, et te donner d'autres solutions. 

je sais ça ressemble un peu a "dite moi vos besoins, je vous dirai comment vous en passer" mais sinon je vois pas.

la seule piste que j'aurais, c'est comme on est sur le même filesystem je ferait un link (soit Hard soit symbolique) entre les fichiers A/fic et B/fic pour traitement en B/ ... mais bon ... sans savoir pourquoi ...

bonne chance.

Posté(e)
  • Auteur
  •  

Bonjour
La norme de sécurité draconiennes qu'est le TTPN, nous est imposé si nous voulons travailler avec eux.
En gros :
Le serveur de récupération de données doit être sur un vlan1 et avoir internet et passer obligatoirement par un Firewall. Dans mon cas un watchguard m270.
Les stations audio et vidéo pas d'internet et Vlan2. chaque workstation à un ou plusieurs disque audio et vidéo monté ou en FC ou iscsi.

Ce serveur de récupération dépose les médias dans un NAS, dans le dossier À.
Ce dossier est scanner par l anti-virus du Synology.

Puis via le script, le média qui est dans le dossier À passe dans un dossier B pour être mis à dispo dans un serveur de production (quantum)
Tout cela afin que si une personne entre par effraction dans le serveur de récupération de données et veuille récupèrer des médias très important, il ne puisse pas.

 

En gros une personne entrant par effraction sur le serveur de réception. Ne pourra atteindre les stations de travail.

Le Nas étant la pour faire barrière

J'espère avoir été clair.

En arrivant au travail je vous transmets un synoptique de l'infra demandé par TTPN.

Cela vous aidera

Posté(e)
  • Auteur

En fait ce qu'il me faudrait, c'est script qui puisse déterminer si la taille du fichier ou du dossier augmente ou non

 Si taille augmente pas de déplacement, si taille augmente pas déplacement du fichier ou dossie

Posté(e)

Plus que vérifier l'augmentation de la taille du fichier, je vérifierais le checksum.
Tu pars sur l'idée d'un script qui fait deux vérifications sur un intervalle de X secondes. Si l'output est le même c'est que le fichier n'a pas changé.
De là tu peux partir sur une boucle if qui s'occupera de déplacer le fichier d'un dossier à l'autre. Sinon ne rien faire.
Un peu de biblio : https://stackoverflow.com/questions/12900538/fastest-way-to-tell-if-two-files-have-the-same-contents-in-unix-linux

Posté(e)
  • Auteur

Je suis pas un expert du bach ou shell ou autre, mais dans le dossier A, vont etre copiées des médias avec des noms, qui ne sont jamais les memes, je ne vois pas comment faire du diff sur de multiples fichiers ou dossiers?

Bonne journée

lolo

  • 2 semaines après...
Posté(e)

personnellement je ne me fierais pas à la taille, car il est commun pour un transfert FTP de s’arrêter et de reprendre. je préférerais utiliser une commande comme 

lsof /mon/path/to/fichier 

ce donne dans une boucle

until [ -z "$(lsof /mon/path/to/fichier.txt)" ];do sleep 1;done;echo fini

qui dit fini, ou qui attend que le fichier soit  libéré

sur Synology il y a un pseudo lsof dans le package de  la synocommunity ->  synocli-monitor

ce qui donne sur synology :

until [ -z "$(lsof|grep /mon/path/to/fichier.txt)" ];do sleep 1;done;echo fini

En dernier recours il y a le lsof du pauvre (sans install de package de la commutity)

until [ -z "$(ls -l /proc/{1,2,3,4,5,6,7,8,9}*/fd/ |grep '/tmp/toto.txt')" ];do sleep 1;done;echo fini

 

Modifié par dominix.pf

  • 6 mois après...
Posté(e)
  • Auteur

Bonjour merci pour la réponse.

La il n'y a pas de ftp

Juste une copie dans le dossier A

Mais effectivement la copie peu planter.

Je vais tenter cela

Merci

Posté(e)
  • Auteur

 Ma ligne de command devrait a peu près comme ça.

 

until [ -z "$(lsof|grep /volume1/out-A)" ];do sleep 1;done;echo fini

If fini mv /Volume1/out-B

À savoir que je  scan un dossier partagé dans lequel il y a des dossiers avec des médias. Ou des médias à la racine de out-A

J'ai fait une command qui me permet de déplacer dans Out-B tout medias de plus de 5mn.

Find /volume1/A* - mindepth 1 - max depth 3 - type f - clin +1-exec mv '{}'  /volume1/B/ \;

Mais avec un dossier cela ne fonctionne pas. Il déplace les médias dans le dossier avant que ceux ci ne soit fermé.

 

  • 4 mois après...
Posté(e)
  • Auteur

 Bonjour

je reviens un peu apres et en retard, mais cela fonctionne avec lsof

until [ -z "$(lsof|grep /mon/path/to/fichier.txt)" ];do sleep 1;done;echo fini

Mais pour ameliorer cette command est t'il possible de mettre une option de ne prendre que les dossiers.Par exemple

  Le 3/24/2021 à 7:25 AM, dominix.pf a dit :

 

Bonjour

je reviens un peu apres et en retard, mais cela fonctionne avec lsof

until [ -z "$(lsof|grep /mon/path/to/fichier.txt)" ];do sleep 1;done;echo fini

Mais pour ameliorer cette command est t'il possible de mettre une option de ne prendre que les dossiers.Par exemple type d

 

until [ -z "$(lsof|grep /volumes1/A)" ] -type d ;do sleep 1;done;echo fini

puis

find /volume1/A/* -type d -exec mv '{}' /volume1/B/ \;

 

merci d'avance

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.