Aller au contenu

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


Messages recommandés

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,

il y a 8 minutes, 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)

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)
  •  

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)

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)

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) (modifié)

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)

 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)

 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 24/03/2021 à 08:25, 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…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

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.