Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/04/2012, à 21:39

D3XT3R

[Résolu]Vérifier avant d'envoyer SCP/SSH

Bonjour,

J'ai deux PC dont un sur lequel je met mes dernières musiques.
Je voudrais donc créer un script avec lequel je vérifie si de nouveaux fichiers sont disponibles et si oui je les envoi.

j'ai donc fait la commande :

scp -r login@IP_desti:dossier_principal /home/login/dossier_final

Néanmoins il me remplace les fichiers automatiquement au lieu de vérifier si il existe déjà.

Merci à vous, j'attends vos idées.

Dernière modification par D3XT3R (Le 19/04/2012, à 00:14)

Hors ligne

#2 Le 17/04/2012, à 23:01

Zakhar

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

Utilise rsync, ça fait exactement ça ;-)

rsync -a --delete source destination

-a : mode archive, c'est à dire que la "destination" sera une sauvegarde de la "source"
--delete : permet de propager les suppressions de la source dans la destination. C'est à dire qu'un fichier que tu as supprimé de la source sera aussi supprimé de la destination (ce n'est peut-être pas ce que tu veux, si tu veux te prémunir d'effacements intempestifs, mais dans ce cas là, la destination ne sera plus à l'image exacte de la source, puisqu'elle comprendra aussi tout ce que tu as supprimé avec le temps, ce ne sera donc plus une "sauvegarde exacte").

rsync fonctionne parfaitement à distance, en mode daemon par exemple ça accélère les choses.

Dernière modification par Zakhar (Le 17/04/2012, à 23:02)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 18/04/2012, à 13:24

D3XT3R

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

Ça marche impeccable , je connaissais pas c'est super ! Par contre du coup je viens d'essayer et j'ai 50 000 musiques, cela à l'air de marcher vu qu'il vérifie morceau par morceau tu aurait une idée de comment faire pour accélérer la manœuvre ?
Merci encore

Hors ligne

#4 Le 18/04/2012, à 13:28

Brunod

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

Tu ne peux pas accélérer, ça sera lent la première fois le temps de tout copier; après c'est fulgurant.


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#5 Le 18/04/2012, à 13:33

D3XT3R

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

De tout copier ? Sachant que j'ai déja 99% des fichiers sur le PC ? ( Que j'avais envoyé via FileZilla )

Edit : Je ré-envoi tout via rsync pour voir.

Dernière modification par D3XT3R (Le 18/04/2012, à 13:39)

Hors ligne

#6 Le 18/04/2012, à 13:42

serged

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

D3XT3R a écrit :

De tout copier ? Sachant que j'ai déja 99% des fichiers sur le PC ? ( Que j'avais envoyé via FileZilla )

Edit : Je ré-envoi tout via rsync pour voir.

Peut -être filezilla n'a pas préservé les dates de modification. Du coup, il recopie tout...

Un tour vers la doc de rsync.


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#7 Le 18/04/2012, à 13:47

D3XT3R

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

En fait le problème est réglé, c'est parce que les dossiers de destination et source n'avait pas le même nom j'ai réglé le problème et tout se synchronise désormais, c'est lent mais pour 50 000 fichiers c'est plutôt rapide.

En revanche petite question cela marche t'il dans les deux sens ? Si je modifie le dossier destination va t'il affecter la source ?
Merci smile

Hors ligne

#8 Le 18/04/2012, à 13:55

yohann

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

non


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#9 Le 18/04/2012, à 14:02

D3XT3R

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

En revanche la Latence E/S est à 100% ou presque c'est normal ?

Hors ligne

#10 Le 18/04/2012, à 16:39

Haleth

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

Ben, oui, il fait des IO ..
C'est le but d'une copie, non ?


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#11 Le 18/04/2012, à 21:13

Zakhar

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

Rsync est un truc hyper puissant et tout plein d'options !..

Si tu joues avec, fais attention à bien l'utiliser pour ne pas écraser tes sources, fais de test "à blanc" avant par exemple avec l'option -n (dry-run)
L'option -n est de toute façon intéressante pour examiner ce qu'il va te faire (et en estimer la durée si tu sais que tu a beaucoup à sauvegarder) avant qu'il ne le fasse réellement.

Sinon, si les 2 PC sont Linux, tu peux accélérer le temps de vérification en mettant Rsync en daemon. De la sorte, les listages de répertoire seront faits "en local" sur chaque PC et en parallèle, et ensuite juste échange de la liste via le réseau. Par contre, la copie, si différence il y a, devra toujours se faire. Donc pour un gros paquet de petit fichier comme tu as, ce qui est long étant probablement le temps de listage, ça peut accélérer presque d'un facteur 2 le temps qu'il se rende compte qu'il a juste une 10aine de fichiers à copier (les nouveaux).

Enfin, comme déjà répondu plus haut, le rôle de rsync est de faire des sauvegardes, pas de faire une "synchro bidirectionnelle", bien que son nom pourrait laisser penser le contraire.

La synchro nécessite d'avoir un état de la dernière synchro, et de regarder les différences.
Elle bute cependant toujours sur des cas que le programme ne pourra pas résoudre sans aide humaine.

Exemple,

J'ai le fichier :
machanson.mp3 Taille 4Mo Date dernière modif 1/04/2012

Il est à jour sur PC A et PC B.

Aujourd'hui, je veux faire une synchro, et je constate que
A possède:
machanson.mp3 Taille 4,1Mo Date dernière modif 10/04/2012

B possède:
machanson.mp3 Taille 3,9Mo Date dernière modif 12/04/2012

Lequel est le bon fichier, puisque depuis le dernier état enregistré, il a été modifié des deux côtés de façon différente.

C'est ce qu'on appelle un "conflit" !..
Et ça nécessite une information de la part de l'utilisateur pour "résoudre le conflit".

Certes tu peux mettre des règles automatiques :
- le fichier qui a été modifié en dernier
- le fichier le plus gros
- ...

mais de telles règles générales ne sont pas forcément bonnes pour tous les "conflits".

Et ça se complique encore si tes fichiers sont par exemple de programmes.

Si j'ai

mon_programme.c

Et qu'il a été modifié conflictuellement sur A et B, j'ai peut-être besoin de garder les modifications de lignes de programme faites sur A et sur B, et donc ce que je veux n'est ni l'un ni l'autre fichier, mais une somme des patches appliqué à l'original.

... bref la "synchro bidirectionnelle", est une toute autre histoire même d'un point de vue "fonctionnel".

Si tu veux t'y lancer, tu as des programmes comme Unison qui font ça (dans les dépôts), mais comme ce n'est fonctionnellement pas simple, maîtriser la chose est assez compliqué.

Après bien sûr, tout dépend de ton cas d'usage.
Si par exemple tu es sûr et certain, mais alors à 100%, que tu ne détruis/modifies/renommes jamais de fichiers, mais que ne fais qu'en rajouter (par exemple ton stock de photos perso), tu peux toujours faire un double rsync sans option delete bien sûr !..

Tu fais source => destination, sans le delete ça va rajouter dans destination les fichiers qui sont dans source mais pas dans destination.
Et ensuite tu fais un destination => source pour rajouter au contraire les fichiers qui sont dans destination et pas dans source.


Bref... faut juste réfléchir un peu à ton cas d'usage précis, et il y a sûrement une solution.

Pour mon cas (sauvegarde + backup distant), j'ai pris une solution semi-hardware. Deux disque identiques. J'en ai un de sauvegarde sous la main et l'autre est à distance (à l'autre bout de la France là où je vais en vacances). Et quand je vais en vacances, j'emporte la sauvegarde récente (faite par rsync) et à mon retour je remporte la sauvegarde ancienne que je m'empresse de mettre à jour par le même rsync.
Le jour où on a du VDSL ou de la fibre, j'envisagerai peut-être la sauvegarde en ligne, mode cloud privé !

Dernière modification par Zakhar (Le 18/04/2012, à 21:18)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#12 Le 18/04/2012, à 21:47

D3XT3R

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

Je voudrais remercier à tous,

J'ai eu le temps d'écrire mon petit script et cela marche parfaitement en effet j'ajoute uniquement les musiques sur un PC, je lance le script il liste tout les fichiers ( en 10s ) et télécharge les nouveaux immédiatement, j'ai testé plusieurs fois aucun soucis, c'est impeccable !

Après comme tu dis Zakhar ( j'ai beaucoup apprécié ta présentation, j'en ai appris un peu plus sur rsync c'est sympa de ta part ) d'autres problèmes ne peuvent se résoudre que via intervention humaine mais de mon coté ça ne devrait pas posé de problème ! Merci encore

Hors ligne

#13 Le 18/04/2012, à 23:21

Zakhar

Re : [Résolu]Vérifier avant d'envoyer SCP/SSH

Ravis de t'avoir aidé !

Résolu dans le titre peut-être ?


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne