Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1255 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script rsync et dossier avec espaces

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script rsync et dossier avec espaces

n°963118
guepe
J'ai du noir sur la truffe ?
Posté le 12-10-2007 à 01:32:40  profilanswer
 

J'ai ecris un script bash qui lit une liste de répertoires et les envoie a un serveur distant par rsync.
Ca marche bien, sauf que si je desire sauvegarder mettont le répertoire : /home/guepe/Rep avec_unespacedanslenom et tout ce qu'il y a dessous (sous rep) ca plante : rsync tente d'envoyer /home/guepe/Rep et ensuite avec_unespacedanslenom
Si un sous repertoire possede un espace, camarche bien apr contre..

 

Mon script est tout petit :

 
Code :
  1. #!/bin/bash
  2. # backup.sh
  3. # basic rsync-based backup script
  4. host_user="root"
  5. host_addr="***********"
  6. host_path="/volume1/public/etienne/backup/"
  7. for i in `cat ~/.backup/listfile`; do
  8. #echo $i
  9.     echo $i > ~/.backup/cur_file
  10. more ~/.backup/cur_file
  11. rsync -e 'ssh' -azv $i $host_user@$host_addr:$host_path$(more ~/.backup/cur_file |cut -d '/' -f $(grep -o "/" ~/.backup/cur_file |wc -l)-)
  12. rm -f ~/.backup/cur_file
  13. done
  14. rm -f ~/.backup/cur_file


Quelle erreur peut bien causer ce probleme ?

Message cité 1 fois
Message édité par guepe le 12-10-2007 à 05:51:38

---------------
Un blog qu'il est bien
mood
Publicité
Posté le 12-10-2007 à 01:32:40  profilanswer
 

n°963123
sputnick
bip...bip...bip...bip...bi...b
Posté le 12-10-2007 à 03:11:14  profilanswer
 

Salut,
 
tu n'a a prioris pas fait d'erreur, mais c'est le comportement par defaut de bash.
 
je te propose cette version qui doit fonctionner :
 

Code :
  1. #!/bin/bash
  2. # backup.sh
  3. # basic rsync-based backup script
  4. IFS=$'\n'
  5. host_user="root"
  6. host_addr="88.167.88.171"
  7. host_path="/volume1/public/etienne/backup/"
  8. for i in `cat ~/.backup/listfile`; do
  9. #echo $i
  10.     echo $i > ~/.backup/cur_file
  11. more ~/.backup/cur_file
  12. rsync -e 'ssh' -azv $i $host_user@$host_addr:$host_path$(more ~/.backup/cur_file |cut -d '/' -f $(grep -o "/" ~/.backup/cur_file |wc -l)-)
  13. rm -f ~/.backup/cur_file
  14. done
  15. rm -f ~/.backup/cur_file


 
 
 
 
 
 
 
Tout est dans la variable IFS qui est un espace par defaut.
 
man bash


Message édité par sputnick le 12-10-2007 à 03:14:31
n°963131
Fork Bomb
Obsédé textuel
Posté le 12-10-2007 à 08:29:34  profilanswer
 

guepe a écrit :

J'ai ecris un script bash qui lit une liste de répertoires et les envoie a un serveur distant par rsync.
Ca marche bien, sauf que si je desire sauvegarder mettont le répertoire : /home/guepe/Rep avec_unespacedanslenom et tout ce qu'il y a dessous (sous rep) ca plante : rsync tente d'envoyer /home/guepe/Rep et ensuite avec_unespacedanslenom
Si un sous repertoire possede un espace, camarche bien apr contre..

 

Mon script est tout petit :

 
Code :
  1. #!/bin/bash
  2. # backup.sh
  3. # basic rsync-based backup script
  4. host_user="root"
  5. host_addr="***********"
  6. host_path="/volume1/public/etienne/backup/"
  7. for i in `cat ~/.backup/listfile`; do
  8. #echo $i
  9.     echo $i > ~/.backup/cur_file
  10. more ~/.backup/cur_file
  11. rsync -e 'ssh' -azv $i $host_user@$host_addr:$host_path$(more ~/.backup/cur_file |cut -d '/' -f $(grep -o "/" ~/.backup/cur_file |wc -l)-)
  12. rm -f ~/.backup/cur_file
  13. done
  14. rm -f ~/.backup/cur_file


Quelle erreur peut bien causer ce probleme ?

 

Oh, c'est très simple en fait: tu dois juste protéger ta variable avec des double quote:

 
Code :
  1. #!/bin/bash
  2. # backup.sh
  3. # basic rsync-based backup script
  4. host_user="root"
  5. host_addr="***********"
  6. host_path="/volume1/public/etienne/backup/"
  7. for BACKUP in `cat ~/.backup/listfile`; do
  8. #echo "${BACKUP}"
  9.     echo "${BACKUP}" > ~/.backup/cur_file
  10. more ~/.backup/cur_file
  11. rsync -e 'ssh' -azv "${BACKUP}" $host_user@$host_addr:$host_path$(more ~/.backup/cur_file |cut -d '/' -f $(grep -o "/" ~/.backup/cur_file |wc -l)-)
  12. rm -f ~/.backup/cur_file
  13. done
  14. rm -f ~/.backup/cur_file
 

J'ai changé le nom de ta variable pour un truc plus causant.
Avec cette protection, ton backup devrait se passer comme un charme. :)


Message édité par Fork Bomb le 12-10-2007 à 09:47:44

---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°963302
Taz
bisounours-codeur
Posté le 12-10-2007 à 16:01:49  profilanswer
 

berk berk berk
 
t'as des option include/exclude pour donner la liste des fichiers à backuper


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script rsync et dossier avec espaces

 

Sujets relatifs
Script automatique LFTP[RESOLU] besoin aide script shell (pb sur boucle while)
Temps d'exécution maximum d'un script bashcréation de dossier depuis ooo
Script SHELL. Executer du code dans une 2eme fenetre...react os : comment acceder a mes dossier
[Résolu]petit script shellShell : mini script pour l'utilisation de sed
Problème script LinuxScript / programme pour analyser %CPU
Plus de sujets relatifs à : Script rsync et dossier avec espaces


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR