problème avec les wilcard (*) et sudo+rsync - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 19-08-2005 à 16:27:14
Tu peux esayer un truc du style
Code :
|
Edit : j'ai peut etre pas compris ton probleme
Marsh Posté le 19-08-2005 à 16:29:32
ouaip, mais là ça me fait appeller rsync et ouvrir une session ssh pour chaque fichier, pas classe...
Marsh Posté le 19-08-2005 à 16:37:56
c'est pas faux...
tu as combien de fichiers dans ton rep ?
Marsh Posté le 19-08-2005 à 16:39:30
quelques centaines.
Je ne pense pas que tu ai compris le blème, malheureusement je ne sais pas comment l'expliquer mieux
Marsh Posté le 19-08-2005 à 16:41:30
On va essaye de faire mieux
Code :
|
Marsh Posté le 19-08-2005 à 16:43:35
duch a écrit : quelques centaines. |
J'ai compris que tu as tellement de fichiers que le shell "expand" tous ces fichiers en arguments et au final, ta commande a trop d'arguments.
Marsh Posté le 19-08-2005 à 16:46:01
alors au choix :
tu casses en quelques morceaux :
rsync -u -e ssh [a-l]* xxx.xxx.xxx.xxx:/var/www/mondossierdistant |
PB : totalement bricolage
tu bricoles avec find :
find $directory -type f -name '*' -exec blabla {} \; |
PB : c'est long
tu te fais une fonction qui tue :
function kitue () { |
PB : euh chai po faut tester... a priori aussi long que find, voire plus vu que find doit être optimisé
tu recompiles le noyau en changeant
#define MAX_ARG_PAGES |
PB : c'est ptet un peu trop extreme l33t
Marsh Posté le 19-08-2005 à 16:49:20
Bon, avec tout ca, tu vas y arriver ;-)
Marsh Posté le 19-08-2005 à 16:50:17
quelle brute.
j'ai trouvé une méthode moins brutale, bien que moins joli.
je vais faire mon rsync en récursif sur le dossier et exclure explicitement les sous-dossiers par leur nom, c'estpossible car la structure des dossiers est assez figée, mais j'avais pas trop envie de faire ça car le jour où il y'aura un nouveau sous-dossier il faudra que je pense à l'exclure aussi.
merci pour vos bonnes idées qd même ;-)
Marsh Posté le 20-08-2005 à 16:37:11
cd /var/www/mondossier; sudo -u monuser rsync -u -e ssh * xxx.xxx.xxx.xxxvar/www/mondossierdistant
ne serait-il pas équivalent à
sudo -u $monuser rsync -u -e ssh /var/www/mondossier $IPvar/www/mondossierdistant
Marsh Posté le 20-08-2005 à 16:40:08
Et accessoirement tu échanges les clés entre tes deux machines pour qu'il te casse pas la tête à demander le mdp.
Marsh Posté le 22-08-2005 à 17:40:29
chaica > j'ai déjà échangé les clés pas besoin de mot passe
Marsh Posté le 16-08-2005 à 16:17:39
salut à tous,
j'ai une fois de plus un problème tout con mais chiant.
J'utilise sudo+rsync pour synchroniser 2 machines (depuis apache).
voilà la commande que j'utilise :
cd /var/www/mondossier; sudo -u monuser rsync -u -e ssh * xxx.xxx.xxx.xxxvar/www/mondossierdistant
Mon problème c'est que tout fonctionne bien tant que la liste des fichiers à synchroniser ne dépasse pas la longueur maxi des arguments de rsync, mais dès que c'est le cas j'ai une erreur "Argument list too long" car sudo interprete la wilcard "*" et passe le résultat à rsync, donc au lieu d'avoir une commande rsync du type :
rsync -u -e ssh * xxx.xxx.xxx.xxxvar/www/mondossierdistant
j'ai :
rsync -u -e ssh fichier1 fichier2 fichiern xxx.xxx.xxx.xxxvar/www/mondossierdistant
et ça dépasse la capacité de rsync.
Précisions :
- la commande marche sur d'autres dossiers plus petits
- la commande rsync marche sans le sudo
- je ne veux synchroniser que les fichiers et pas les sous dossiers, c'est pour cela que j'utilise "*" au lieu "./" couplé au flag -r.
Comment faire?