/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Hvorfor virker dette simple BASH ikke?
Fra : Hans J


Dato : 17-10-07 15:47

Dette virker:

#!/bin/bash
srv=srv1
this=`date +"%Y%m%d"`
rsync -e ssh -avzP --exclude "/home/" --exclude "/media/" $srv:/
/rsync/$srv/$this

Dette virker IKKE (den tager også de ting med i $exclude):

#!/bin/bash
srv=srv1
this=`date +"%Y%m%d"`
exclude="--exclude \"/home/\" --exclude \"/media/\""
rsync -e ssh -avzP $exclude $srv:/ /rsync/$srv/$this

Jeg fatter ikke hvorfor der er forskel på disse!?
En echo "rsync -e ssh -avzP $exclude $srv:/ /rsync/$srv/$this" ser helt
rigtig ud!?

[root@srv2 ~]# bash --version
GNU bash, version 3.00.15(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.



 
 
Hans J (17-10-2007)
Kommentar
Fra : Hans J


Dato : 17-10-07 17:00

> Dette virker IKKE (den tager også de ting med i $exclude):
>
> #!/bin/bash
> srv=srv1
> this=`date +"%Y%m%d"`
> exclude="--exclude \"/home/\" --exclude \"/media/\""
> rsync -e ssh -avzP $exclude $srv:/ /rsync/$srv/$this

Jeg forstår stadigt ikke hvorfor det ikke fungere, men problemet er løst ved
at undlade " i --exclude.
RSYNC man-siden viser ellers eksempler med det i, men det er nok ikke så
brugbart i scripts.
Tjaaa!?



Mogens Kjaer (18-10-2007)
Kommentar
Fra : Mogens Kjaer


Dato : 18-10-07 08:37

Hans J wrote:
>> Dette virker IKKE (den tager også de ting med i $exclude):
>>
>> #!/bin/bash
>> srv=srv1
>> this=`date +"%Y%m%d"`
>> exclude="--exclude \"/home/\" --exclude \"/media/\""
>> rsync -e ssh -avzP $exclude $srv:/ /rsync/$srv/$this
>
> Jeg forstår stadigt ikke hvorfor det ikke fungere, men problemet er løst ved
> at undlade " i --exclude.
> RSYNC man-siden viser ellers eksempler med det i, men det er nok ikke så
> brugbart i scripts.

Dine "-er er til for shell'en skyld, rsync må ikke se dem.

De er også overflødige når du ikke har mellemrum, *, etc. i
dine exclude patterns.

Mogens


--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

Hans J (18-10-2007)
Kommentar
Fra : Hans J


Dato : 18-10-07 10:44

> Dine "-er er til for shell'en skyld, rsync må ikke se dem.
>
> De er også overflødige når du ikke har mellemrum, *, etc. i
> dine exclude patterns.

Jo, men jeg fulgte bare man-siden:

[root@srv ~] man rsync

[CUT]
Here are some examples of exclude/include matching:
--exclude "*.o" would exclude all filenames matching *.o
--exclude "/foo" would exclude a file called foo in the transfer-root
directory
--exclude "foo/" would exclude any directory called foo
--exclude "/foo/*/bar" would exclude any file called bar two levels below a
directory called foo in the transfer-root directory
[CUT]



Mogens Kjaer (18-10-2007)
Kommentar
Fra : Mogens Kjaer


Dato : 18-10-07 11:04

Hans J wrote:
>> Dine "-er er til for shell'en skyld, rsync må ikke se dem.
>>
>> De er også overflødige når du ikke har mellemrum, *, etc. i
>> dine exclude patterns.
>
> Jo, men jeg fulgte bare man-siden:
>
> [root@srv ~] man rsync

Nej, det gjorde du ikke.

De "-er der er vist på man-siden bliver spist af shell'en.

I dit eksempel putter du \"'er i en variabel som ikke bliver fjernet
af shell'en:

$ echo --exclude "/home/"
--exclude /home/
$ exclude="--exclude \"/home/\""
$ echo $exclude
--exclude "/home/"

Mogens

--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste