Avatar billede elskermad.dk Nybegynder
24. april 2006 - 09:51 Der er 28 kommentarer og
1 løsning

Lave et backupscript som skal køres hver nat

Hej Eksperter!

Jeg kunne godt tænke mig lidt hjælp til at lave et backupscript (jeg har ingen idéer om hvordan det skal laves)

Jeg har en ubuntu-server stående og det kunne være lækkert hvis man kunne lave således den hver nat kl 4 kopier alt data fra /home (og underliggende mapper) over på en anden disk (den skal være delt i to således den kopiere skiftevis over på den ene del og den næste dag den anden) og efter den har gjort det skal den genstarte serveren.

Det skal foregå automatisk (altså via et cronjob) og den må gerne (hvis det er muligt) sende en mail om med status om om backuppen er sket korrekt.

Er det noget der kan lade sig gøre? Går ud fra det meste kan laves direkte i en konsol, så det er vel blot en form for bat-fil på windows der skal til?

På forhånd tak :)
Avatar billede kvinther Nybegynder
24. april 2006 - 10:40 #1
Jeg ville bruge rsync til selve kopieringen, da det er velegnet til den slags (inkrementiel) backup. Og ja, det lyder som om det sagtens kan lade sig gøre at lave det hele i et script (f.eks. bash).
Er du ude efter konkret script-kode?
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 11:22 #2
ja eller vejledning til hvor man kan læse om det - jeg kender ikke rigtig noget til linux-verdenen men er indstillet på at lære noget! evt. ved at se hvordan andre scripts virker...
Avatar billede keld_simonsen Nybegynder
24. april 2006 - 12:02 #3
Hvilket system kører du? Nogen systmer (Bla Mandriva, PCLinuxOS og Keldix) har backupsystemer indbygget, som du bare skal aktivere.
Avatar billede kvinther Nybegynder
24. april 2006 - 12:48 #4
Jeg kender ikke Ubuntu, men det er klart at visse systemer har sådanne funktioner indbygget. Derfor skal det selvfølgelig undersøges først.

Ellers er der en gut her, som giver en række eksempler på backup scripts.
http://www.mikerubel.org/computers/rsync_snapshots/
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 14:10 #5
pis så havde man lige skrevet en hel smøre også vælger eksperten lige at lade vær med at sende det :S
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 14:14 #6
MAILTO=jeg@elskermad.dk
0 3 * * 0 rsync -a --delete home/ home1/
0 3 * * 1 rsync -a --delete home/ home2/
0 3 * * 2 rsync -a --delete home/ home1/
0 3 * * 3 rsync -a --delete home/ home2/
0 3 * * 4 rsync -a --delete home/ home1/
0 3 * * 5 rsync -a --delete home/ home2/
0 3 * * 6 rsync -a --delete home/ home1/

0 5 * * * shutdown -r now

Følgende kode i root's cronjob-fil burde kunne gøre hvad jeg efterspørger?
Jeg har læst det meste af kvinthers artiklenlink og kun forstået den linie :)

Er det muligt at få rsync til at fortælle 'nu er jeg færdig - værs'go at fortsætte' således at genstartningen ikke er fastsat til et bestemt tidspunkt? jeg går ikke ud fra det tager 2 timer at overføre filerne, men det kunne være rart at genstartningen skete lige efter overførslen så man sikrede sig den ikke rebootede midt i overførslen?

Ang. den mailadresse man sætter: Kan Ubuntu af sig selv sende mails? jeg har ikke opsat noget mail-halløj?
Avatar billede kvinther Nybegynder
24. april 2006 - 14:34 #7
Det er en meget simpel løsning, men det er jo det der skal til en gang imellem :).

Hvis du gerne vil genstarte lige efter du har kørt rsync, kan man hægte kommandoer sammen med "&&".

Dvs. rsync -a --delete home/ home1/ && shutdown -r now

Mht. Mail: Prøv at skrive "mail" i kommandolinier. Hvis du har det ville din linie blive noget a la (husk at teste):
rsync -a --delete home/ home1/ | mail -S "subject" user@domain.com && shutdown -r now

| hedder "pipe", og leder output fra et program over i det næste. Her vil outputtet fra rsync bliver sendt over i mail, som så sender det til en emailadresse.
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 14:51 #8
det ser ikke ud til at mail findes i mit system... En anden ting jeg kan se er at rsync ikke virkede med home/ men der skulle /home/ til - ellers kom den med fejl... kan det passe?

har du en anden løsning til det med mailen?
Avatar billede kvinther Nybegynder
24. april 2006 - 15:11 #9
Har lige kigget lidt mere i det linkede dokument.

Prøv at tage et kig under overskriften: Putting it all together.

Her foreslår de følgende simple script.

mv backup.3 backup.tmp
mv backup.2 backup.3
mv backup.1 backup.2
mv backup.0 backup.1
mv backup.tmp backup.0
cp -al backup.1/. backup.0
rsync -a --delete source_directory/ backup.0/

Det skulle spare dig en del diskplads i forhold til dit forslag. Her bruger man ikke to forskellige directories, men man roterer mellem tre.
Desuden skal du nok overveje hvor du vil lægge din backup. Sker der noget med din disk, er et subdirectory jo også væk.

Bemærk, at du nok er nød til at lægge det ned i en script fil, som du så kalder fra cron. F.eks.:
0 3 * * * bash /root/bin/backupscript.sh | mail -S "subject" user@domain.com && shutdown -r now
Avatar billede kvinther Nybegynder
24. april 2006 - 15:16 #10
Det med /home/ lyder rigtigt.

Mht. mail, så kan du evt. prøve Ubuntus forum eller dokumentation - inden du begynder at installere noget nyt.
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 15:22 #11
skal vist lige have lidt hjælp til at sætte det op i cron...

Hvis jeg gemmer indholdet (fx det du lige har skrevet) i en fil (og kalder den hvad?) hvor skal det så ligge for at cron ved det er der?
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 15:23 #12
argh noget med bash kommando?
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 15:33 #13
skal vist lige have helt slået fast hvordan det cron noget virker..

har en fil (/home/cronjob) med indholdet: "shutdown -r now" og i min cronjob (som jeg rediger via crontab -e i consolen) har jeg "25 15 * * * bash /home/cronjob" men den restarter stadig ikke serveren klokken 15:25 ?

(jeg gemmer min backup over på en anden harddisk på serveren så lidt sikkerhed burde der være (: )
Avatar billede kvinther Nybegynder
24. april 2006 - 15:40 #14
Der er lige noget der slår mig.
Så vidt jeg husker, sender Cron vist altid en mail til root@localhost, når et job er kørt. Så det er ikke sikkert du har brug for at gøre noget selv. Hvordan du for root's mail til at blive sendt til dig, er lidt "forskelligt fra system til system" (en sætning du nok vil støde på en del gange når du kommer ind i Linux-verdenen).
Avatar billede kvinther Nybegynder
24. april 2006 - 15:43 #15
Hmm. Lukker den ned, hvis du kører det manuel?
Prøv en gang at lave linien om til
25 15 * * * bash /home/cronjob > /tmp/cron.log
Bare lidt for at se, om der kommer en fejlbesked ud.
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 15:53 #16
Min echo i filen bliver gemt fint i cron.log men den genstarter ikke... filen ser sådan her ud:

echo "Genstarter systemet - Vent venligst..."
shutdown -r now
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 16:07 #17
Hvis jeg laver det om til nedenstående kommer alt echo-tekst over i logfilen så det må vel være noget med shutdown-funktionen der er galt?

echo "Genstarter systemet - Vent venligst..."
shutdown -r now
echo "Farvel!"
Avatar billede kvinther Nybegynder
24. april 2006 - 16:09 #18
Jeg prøver lige at se på det.
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 16:30 #19
den vil heller ikke rigtig lege med variabler...

fx giver dette ingen effekt:

#!/bin/bash
dato = $(date)
echo "$dato: Genstarter systemet"
shutdown -r now
echo "Farvel!"

udskriver:

: Genstarter systemet
Farvel
Avatar billede elskermad.dk Nybegynder
24. april 2006 - 16:38 #20
min rsync virker også hvis jeg kører den i en cron så det er åbenbart shutdownen den er galt med (er logget ind som root)
Avatar billede keld_simonsen Nybegynder
25. april 2006 - 10:17 #21
jeg ville være betænkelig ved kun at køre rsync. bruger du kun rsync, vil dine egne fejl, såsom vis du kommer til at slette en hel fil, eller flere filer, eller dele af en fil, ikke kunne reddes. Typisk har man i dag store diske, 200 GB kan købes for under 700 kr, og derfor masser af diskplads. Jeg ville nok lave noget af:

1. køre raid-1 spejlet hvis jeg har mere end én disk på maskinen. Med dette sikrer du dig at du kan køre videre hvis den ene disk står af.

2. køre rsync op mod en anden maskine, og sørge for at denne rsync er "live" - dvs umiddelbart funktionsdygtig. Med dette sikrer du dig at du kan køre videre hvis maskine brænder sammen, eller du ikke kan få den til at fungere.

3. køre noget incrementalbackup, nok med tar. Med dette sikrer du at du kan redde data du selv har slettet.

4. Jeg ville også gerne have systembackup, så jeg kan vende tilbage til en tidligere version af systemet, hvis jeg eller det sutomatiske opdateringssystem er kommet til at lave en fejl i systemet.
Avatar billede keld_simonsen Nybegynder
25. april 2006 - 10:19 #22
Du skal huske at lukke kørende processer, der genererer vigtige data, som databaser ned under backuppen.
Avatar billede elskermad.dk Nybegynder
25. april 2006 - 11:14 #23
Da det ikke som sådan er vigtige data ("kun" billeder, dokumenter og andet hjemme-halløj) er det ikke helt så vigtigt med et 100% sikkert system... skal blot kunne hentes frem igen...

Har lavet det således at den hver mandag kopierer over til et ekstra sted så jeg altid kan gå en uge tilbage også overfører den hver dag over på en ny disk... Tror det er fint nok...

Ang. forrige problemer har jeg fået mails fra cron om kørslerne og der står at funktionen shutdown ikke findes - hvad kan det skyldes?
Avatar billede kvinther Nybegynder
26. april 2006 - 09:00 #24
Ahh.

Det kan skyldes at den ikke er i den PATH der er i cron.
Prøv at skrive: "which shutdown"
Så skulle du kunne se under hvilken sti den ligger, og kald shutdown med fuld sti.
På min maskine ville det være "/sbin/shutdown".

@keld_simonsen: Uden at ville lægge hovedet på blokken, mener jeg at rsync tager højde for igangværende processor på en eller anden måde, så man netop undgår den slags problemer.
Desuden, hvis man kører den form for rotations-backup som den linkede guide foreslår, så skulle det vel være muligt at redde "slettede data". Man kunne evt. overveje at bruge mere en tre rotationer...
Avatar billede elskermad.dk Nybegynder
26. april 2006 - 09:42 #25
hvordan kan jeg lave lidt bedre logning? både så den ikke nulstiller loggen hver gang og sådan der kommer dato+klokkeslet? (hvis du ser mit virker variablen ikke)
Avatar billede kvinther Nybegynder
26. april 2006 - 11:41 #26
Når man skal tilføje til enden af en fil bruges >> istedet for >.
Altså: script.sh >> logfil.txt

Jeg tror ikke der må være mellemrum når man sætter variable:
DATE=$(date)
Ellers bare:
echo $(date) "Genstarter"
Avatar billede elskermad.dk Nybegynder
26. april 2006 - 13:05 #27
hvordan kan jeg formatere date-variablen lidt flottere? nu er det en lang engelsk format - vil gerne have år-måned-dato time:minut
Avatar billede elskermad.dk Nybegynder
26. april 2006 - 13:05 #28
...:sekund
Avatar billede keld_simonsen Nybegynder
27. april 2006 - 16:59 #29
kvinther: nej, rsync tager ikke højde for at kørende processer ligger og opdaterer samtidigt på de filer, som rsync er i gang med at kopiere.

Det er rigtigt at hvis man laver rsync til forskellige områder, ja, så er der en mulighed for at finde filer man ellers har slettet, og hvor fejlen ikke er lavet før den ældste rsync er lavet. Traditionelt bruger man inkrementalbackup til dette, og det er også dette som Mandriva/PCLinuxOS/Keldix gør.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester