bash: prendre le plus lourd fichier trouvé

bash: prendre le plus lourd fichier trouvé - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 23-08-2007 à 22:34:56    

Salut,
j'ai fait un script pour transferer un fichier par scp:
scp /home/fichier.txt machine:/home/user
 
Mais en fait le fichier à envoyer est une sauvegarde effectuée tous les jours. Il y a 6 fichiers, et la machine enregistre à sa guise (enfin on ne sait à quel rhytme) sur un des 6 à chaque fois, le plus lourd étant la sauvegarde la plus récente. Plutot que d'envoyer les 6 fichiers, je souhaiterais envoyer seulement le plus récent.
Mais je n'ai aucune idée de comment réaliser cela...
 
Merci de me donner des pistes.
 :hello:  
dupdup

Reply

Marsh Posté le 23-08-2007 à 22:34:56   

Reply

Marsh Posté le 23-08-2007 à 23:03:13    

find avec les options de temps pour le plus recent, avec un exec de scp


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 23-08-2007 à 23:17:50    

ca me ferait un truc du genre:

Code :
  1. find /home/ -mmin 23 exec scp machine:/home/user


si je fais ca il regarde que dans /home,
-mmin 23 il prend celui qui a été modifié il y a moins de 23 heures (en theorie 1 seul),
et exec scp machine:/home/user, il envoie le fichier trouvé dans le /home sur la machine distante.
 
ca fonctionnerait comme ca ?

Reply

Marsh Posté le 23-08-2007 à 23:22:53    

lis le man: y a {} pour representer le fichier (scp {} machine:/path;)
sinon ouai ça dois être ça ^^


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 23-08-2007 à 23:29:59    

J'avais loupé ca dans le man  :pt1cable:  
 

Code :
  1. find /home/ -mmin 23 exec scp {} machine:/home/user;


 
Aussi c'est pas 23 si je veux 23 heures, il faut des minutes derriere le mmin.
 
Merci A toi  :jap:

Message cité 1 fois
Message édité par Profil supprimé le 23-08-2007 à 23:30:20
Reply

Marsh Posté le 24-08-2007 à 00:32:37    


éhéh find est une commande assez énorme :o
mais de rien l'ami ;), amsue toi bien :)


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 07-10-2007 à 21:03:46    

Bon, un ptit up, juste parsque:
 
J'ai corrigé la forme du script (autrement il etait po content  :o ):
find /cygdrive/c/ -mmin 1380 -exec scp {} labas:/home/;
 
Mais maintenant, il me dit:
missing argument to '-exec'
 
Un idée ?
A+

Reply

Marsh Posté le 07-10-2007 à 21:08:12    

\; à la fin ?


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 07-10-2007 à 21:16:19    

C'est-a-dire ?
Oui, ca sauvegrda dans /home, le ; pour fermer la commande ?

Reply

Marsh Posté le 07-10-2007 à 21:20:31    

Ce que je veux dire, c'est qu'à la fin c'est \; et pas seulement ;


Message édité par o'gure le 07-10-2007 à 21:26:38

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 07-10-2007 à 21:20:31   

Reply

Marsh Posté le 07-10-2007 à 21:22:04    

Toujours faire man find

Citation :

Both  of  these constructions might need to be escaped (with a ‘\’) or quoted to protect them from expansion by the shell.


Message édité par o'gure le 07-10-2007 à 21:28:08

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 07-10-2007 à 21:49:53    

Peut importe la combinaision \,; avec ou sans ; c'est la même erreur.

 

edit: Désolé j'ai encore édité un post pas à moi  :/ bouton trop proche...


Message édité par o'gure le 07-10-2007 à 21:59:27
Reply

Marsh Posté le 07-10-2007 à 21:58:19    

> cat run.sh
#!/bin/sh
find . -mmin 1380 -exec mv {} ../ ;
> ./run.sh
find: missing argument to `-exec'
zsh: exit 1     ./run.sh


 

> cat run.sh  
#!/bin/sh
find . -mmin 1380 -exec mv {} ../\;  
> ./run.sh    
find: missing argument to `-exec'
zsh: exit 1     ./run.sh


> cat run.sh  
#!/bin/sh
find . -mmin 1380 -exec mv {} ../ \;
> ./run.sh    
 


 
Tu mets bien un espace avant le \; ?


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 07-10-2007 à 22:05:44    

find /cygdrive/c/ -mmin 1380 -exec scp {} serv:/home/ \;

 

oui, avec espace

Message cité 1 fois
Message édité par Profil supprimé le 07-10-2007 à 22:15:09
Reply

Marsh Posté le 07-10-2007 à 22:15:46    

je viens de tester ça et ça fonctionne :

find /home/jules/tmp -mmin 2 -exec mv {} /home/jules/ \;


 

[jules@tue-amour ~]$ find --version
« find » de GNU version 4.2.30
Options activées: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION  


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 07-10-2007 à 22:21:15    


J'ai essayé en remplacant mon mv par un scp pour avoir exactement la même commande que toi et ca marche bien chez avec espace + \; [:spamafote]
Essaye en mettant des " " autour de scp {} serv:/home/ pour voir

 

edit: d'ailleurs en reprenant exactement la commande que tu donnes, find accepte [:spamafote]


Message édité par o'gure le 07-10-2007 à 22:25:48

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 07-10-2007 à 22:37:15    

Bah, maintenant, elle remarche , donc peut-etre qu'en supprimant les guillemets rajoutés ca a changé qqch  :)  
 
Bon, donc c'est bon pour ca:
find /cygdrive/c/ -mmin -1380 -exec scp {} serv:/home/ \;
Mais, par contre, dans le resultat, j'ai le  
/cugdrive/c/file1
mais aussi directement le /cygdrive/c/
 
Et pour ce dernier, il me dit que ca n'est pas un fichier (normal)
 
Bon, va falloir ameliorer ca, pour qu'il me fasse un log, enfin on verra ce que celui que j'ai mis dans cron me sort  :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed