Kopiera filer med logg?

Här diskuteras programmering och utveckling
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Kopiera filer med logg?

Inlägg av devos »

Hej,
Det är så att jag försöker få till det att ett script skall köras och kopiera allt i en speciell mapp till en annan mapp när scriptet körs.

Problemet är bara det att jag vill att scriptet skall komma ihåg vilka mappar den kopierar så att det inte kopierar samma mappar varje gång.

Någon som har ett script för detta?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

rsync har det där inbyggt... ;)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Okej,

För det jag vill är att det hamnar filer löpande i mappen "Other" och jag vill att allt innehåll som är nytt kopieras från "Other" till en annan mapp.
Saker i Other raderas även löpande detta är inget som jag vill skall påverka den mappen som jag kopierar filerna till.

Klarar rsync detta?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

Jadå, det ska rsync klara av... :)

(Om du vill ha ett enkelt gränssnitt mot rsync så kan du kika på luckybackup...)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Osprey skrev:Jadå, det ska rsync klara av... :)

(Om du vill ha ett enkelt gränssnitt mot rsync så kan du kika på luckybackup...)

Hej,
Jag prövade med följande commando:

Kod: Markera allt

rsync -ah /media/w01/Downloads/Other/ /media/m01/New/
Vilket fungerade jätte bra, om mappen finns i mottagar mappen så kopieras inget nytt.

Men om den kopierade mappen raderas i mottagarmappen och den kopierade mappen finns kvar i send mappen så kopieras mappen åter igen, detta är något som jag skulle vilja förhindra är det möjligt?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

Det där blir liksom lite komplexa villkor, det innebär att en fil som heter "a" ska endast kopieras om det inte tidigare har kopierats en fil som heter "a", oavsett om den gamla och den nya "a" är samma fil eller inte, eller?

Och visst, det går säkert att åstadkomma genom att plocka filnamn ur en loggfil och sedan lägga dem i en fil man använder ihop med --exclude-from=FILE...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Osprey skrev:Det där blir liksom lite komplexa villkor, det innebär att en fil som heter "a" ska endast kopieras om det inte tidigare har kopierats en fil som heter "a", oavsett om den gamla och den nya "a" är samma fil eller inte, eller?

Och visst, det går säkert att åstadkomma genom att plocka filnamn ur en loggfil och sedan lägga dem i en fil man använder ihop med --exclude-from=FILE...

Kör på att endast köra kopiering till en början.
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Osprey skrev:Det där blir liksom lite komplexa villkor, det innebär att en fil som heter "a" ska endast kopieras om det inte tidigare har kopierats en fil som heter "a", oavsett om den gamla och den nya "a" är samma fil eller inte, eller?

Och visst, det går säkert att åstadkomma genom att plocka filnamn ur en loggfil och sedan lägga dem i en fil man använder ihop med --exclude-from=FILE...

Detta fungerade riktigt bra med exclude listan m.m.

Men sista frågan, när mitt program kör scriptet så kan jag endast fylla i följande i programmet: /hej/test.sh

hur gör jag så att test.sh körs genom det där lilla?

Jag vet att i terminalen så räcker det att skrvia bash /hej/test.sh men kan inte fylla i bash innan i config filen i programmet.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

Prova med att göra "chmod 755 /hej/test.sh" en gång så ska det funka sedan...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Osprey skrev:Prova med att göra "chmod 755 /hej/test.sh" en gång så ska det funka sedan...
hmm verkar inte fungera:

Kod: Markera allt

snurre@snurre:/media/w01/Downloads/Script$ /media/w01/Downloads/Script/transmission.sh
-bash: /media/w01/Downloads/Script/transmission.sh: /: bad interpreter: Permission denied
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

devos skrev:
Osprey skrev:Prova med att göra "chmod 755 /hej/test.sh" en gång så ska det funka sedan...
hmm verkar inte fungera:

Kod: Markera allt

snurre@snurre:/media/w01/Downloads/Script$ /media/w01/Downloads/Script/transmission.sh
-bash: /media/w01/Downloads/Script/transmission.sh: /: bad interpreter: Permission denied
Den utskriften säger förmodligen bara i stort sett att du måste göra samma sak med transmission.sh, dvs.

Kod: Markera allt

sudo chmod 755 /media/w01/Downloads/Script/transmission.sh
...det som det här kommandot gör, är att ge dig rättighet att köra den filen du anger, som ett program/script...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Osprey skrev:
devos skrev:
Osprey skrev:Prova med att göra "chmod 755 /hej/test.sh" en gång så ska det funka sedan...
hmm verkar inte fungera:

Kod: Markera allt

snurre@snurre:/media/w01/Downloads/Script$ /media/w01/Downloads/Script/transmission.sh
-bash: /media/w01/Downloads/Script/transmission.sh: /: bad interpreter: Permission denied
Den utskriften säger förmodligen bara i stort sett att du måste göra samma sak med transmission.sh, dvs.

Kod: Markera allt

sudo chmod 755 /media/w01/Downloads/Script/transmission.sh
...det som det här kommandot gör, är att ge dig rättighet att köra den filen du anger, som ett program/script...

La in det i crontab istället och det fungerade jätte bra där.
Dock så vill jag att det körs var 3:de minut.

Finns det på något sätt, att scriptet kollar om rsync arbetar och om rsync arbetar så ska inte scriptet köra igång så att säga?
Man vill ju inte att det körs två samtidigt osv.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

devos skrev:La in det i crontab istället och det fungerade jätte bra där.
Dock så vill jag att det körs var 3:de minut.

Finns det på något sätt, att scriptet kollar om rsync arbetar och om rsync arbetar så ska inte scriptet köra igång så att säga?
Man vill ju inte att det körs två samtidigt osv.
crontab ska klara av att köra var 3:dje minut om du anger "*/3" i minutfältet.

Att den inte ska köra om scriptet redan är igång kan du fixa med:

Kod: Markera allt

script_running=$(ps -ef | grep scriptnamn)
if [[ -z $script_running ]]; then
   # gör allt som ska göras...
fi
Tänk på att ha ett klart och entydigt scriptnamn bara, som inte kan förväxlas med något annat du kan få ut med "ps -ef"... det går också att använda en låsfil, även om det inte är en lika smidig lösning...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Just nu håller jag på att försöker rensa upp rsync log-filen.
Jag har en exclude fil, men kan inte använda rsync logfilen för den består av massa "dravel" går det inte att den endast listar dom filer som den har flyttat?

Tänkte så man kan använda den som exclude fil också.

Edit:

Så här ser scriptet ut just nu.

Kod: Markera allt

#! / bin / sh
script_running=$(ps -ef | grep move.sh)
if [[ -z $script_running ]]; then
rsync -ah --exclude-from='/home/snurre/Script/transmission/move_exclude.txt' --log-file='/home/snurre/Script/transmission/move_log.txt' /media/w01/Downloads/TV/ /media/m01/New/TV/
rsync -ah --exclude-from='/home/snurre/Script/transmission/move_exclude.txt' --log-file='/home/snurre/Script/transmission/move_log.txt' /media/w01/Downloads/Movie/ /media/m01/New/Movie/
rsync -ah --exclude-from='/home/snurre/Script/transmission/move_exclude.txt' --log-file='/home/snurre/Script/transmission/move_log.txt' /media/w01/Downloads/Swesub/ /media/m01/New/Swesub/
rsync -ah --exclude-from='/home/snurre/Script/transmission/move_exclude.txt' --log-file='/home/snurre/Script/transmission/move_log.txt' /media/w01/Downloads/Other/ /media/m01/New/Other/
fi

och det körs var 3:de minut med crontab.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

devos skrev:Jag har en exclude fil, men kan inte använda rsync logfilen för den består av massa "dravel" går det inte att den endast listar dom filer som den har flyttat?
Jag vet faktiskt inte om man kan styra loggen från rsync. Men det är inte helt omöjligt, så sök med "rsync log format" på nätet...

Scriptet ser fint ut och det är enkelt och stabilt... :)

Men första raden borde inte se ut som "#! / bin / sh", utan som "#! /bin/bash"...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
devos
Inlägg: 56
Blev medlem: 18 jan 2014, 14:14
OS: Ubuntu

Re: Kopiera filer med logg?

Inlägg av devos »

Osprey skrev:
devos skrev:Jag har en exclude fil, men kan inte använda rsync logfilen för den består av massa "dravel" går det inte att den endast listar dom filer som den har flyttat?
Jag vet faktiskt inte om man kan styra loggen från rsync. Men det är inte helt omöjligt, så sök med "rsync log format" på nätet...

Scriptet ser fint ut och det är enkelt och stabilt... :)

Men första raden borde inte se ut som "#! / bin / sh", utan som "#! /bin/bash"...

När jag lägger till din del i scriptet så funkar det inte, dvs inget händer när jag försöker köra scriptet.
Men när jag tar bort det så fungerar det.

Vad kan det tänkas vara för feL?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Kopiera filer med logg?

Inlägg av Osprey »

devos skrev:När jag lägger till din del i scriptet så funkar det inte, dvs inget händer när jag försöker köra scriptet.
Men när jag tar bort det så fungerar det.
Vilken del är det du lägger till..?

Den första raden i ett script i Linux och Unix anger vilken interpretator som ska tolka scriptet, eller med andra ord alltså vilken shell som ska köra det. I din första rad så står det "/bin/sh" med en massa mellanslag, medan "/bin/bash" är det vanliga i Linux.

Och bash bygger på sh, som är en äldre och enklare variant av det hela. Allting som är skrivet för sh kan köras i bash, men inte alltid omvänt. Bland annat så lär inte en if-sats av formen "if [[...", funka i sh.
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Skriv svar

Återgå till "Programmering och webbdesign"