Gå til innhold

[Løst] Ubuntu Server backup script hjelp


Anbefalte innlegg

Jeg fant ett skript på nettet som så veldig greit ut da det eneste jeg trengte å gjøre var å bytte på 4 ting og så skal det funke. Men jeg prøver nå å kjøre det bare for å se om det funker men den gjør ingenting som jeg da lurer på om er pga det er lagd for å kjøre kl 1 hver dag.

#!/bin/bash
# full and incremental backup script
# created 07 February 2000
# Based on a script by Daniel O'Callaghan <[email protected]>
# and modified by Gerhard Mourani <[email protected]>
#Change the 5 variables below to fit your computer/backup
COMPUTER=ubuntu							# name of this computer
DIRECTORIES="/home"					  # directoris to backup
BACKUPDIR=/media/temporary/backup			   # where to store the backups
TIMEDIR=/media/temporary/backup/last-full	   # where to store time of full backup
TAR=/bin/tar							 # name and locaction of tar
#You should not have to change anything below here
PATH=/usr/local/bin:/usr/bin:/bin
DOW=`date +%a`				# Day of the week e.g. Mon
DOM=`date +%d`				# Date of the Month e.g. 27
DM=`date +%d%b`			  # Date and Month e.g. 27Sep
# On the 1st of the month a permanet full backup is made
# Every Sunday a full backup is made - overwriting last Sundays backup
# The rest of the time an incremental backup is made. Each incremental
# backup overwrites last weeks incremental backup of the same name.
#
# if NEWER = "", then tar backs up all files in the directories
# otherwise it backs up files newer than the NEWER date. NEWER
# gets it date from the file written every Sunday.

# Monthly full backup
if [ $DOM = "01" ]; then
	NEWER=""
	$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DM.tar $DIRECTORIES
fi
# Weekly full backup
if [ $DOW = "Sun" ]; then
	NEWER=""
	NOW=`date +%d-%b`
	# Update full backup date
	echo $NOW > $TIMEDIR/$COMPUTER-full-date
	$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
# Make incremental backup - overwrite last weeks
else
	# Get date of last full backup
	NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`"
	$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
fi

Den er over 13 år gammel så jeg lurer på da om denne vil virke. Om ikke den gjør det så tar jeg gjerne i mot hjelp på dette siden jeg har null niks peiling men vil lære :p

Lenke til kommentar
Videoannonse
Annonse

Hvis du ikke vet hva skriptet gjør, eller kjenner bash nok til å kunne de-bugge, så vil jeg anbefale deg å bruke et eget back-up program. Det finnes massevis av dem tilgjengelig. Her har du et utvalg for KDE som gir et inntrykk av hvor mye som ligger ferdig:

http://kde-apps.org/...contentmode=272

Jeg vet det finnes en del program jeg kan bruke til å ta back-up's og jeg har allerede lagd meg mitt eget script som tar back-up av hva enn jeg vil ha. Men jeg vil finne ut hvordan jeg lager ett script som gjør det samme som det jeg har allerede skrevet i min første post.

 

Jeg skal lage en ubuntu server og sitter nå med ubuntu dekstop og prøver å lære meg forskjellige ting.

Med det så vil jeg sørge for at jeg ikke bare sitter å installerer ett program som gjør en jobb som jeg ikke forstår noenting av.

 

Jeg kunne fint lagt den script filen jeg selv har lagd i /etc/cron/daily men det scriptet er så simpelt at da måtte jeg manuelt slettet den forrige backupen hver dag om ikke jeg tar feil.

 

Så da tenkte jeg meg det er på tide å lære meg incremental backuping.

Jeg har satt meg til å lese litt om cron jobber så begynner å skjønne litt men det er fortsatt en del detaljer jeg ikke har forstått og skjønt hvordan jeg kan lære uten å starte med linux fra bånden av.

 

Simpelt og greit så er jeg ute etter ett ferdig incremental backup script som jeg kan sitte å tukle med :p

Lenke til kommentar

Når du har slengt det inn i den mappa, har du da gjort det kjørbart også?

 

(hint: man chmod)

Jeg skrev chmod +x filnavn

Så klippet jeg den ut fra skrivebordet

og limte inn i etc/cron.daily

 

MEN, så tok jeg den ut igjen fordi jeg ville ikke bare la den ligge der uten å vite om den kommer til å virke.

Det er derfor jeg er her.

Lenke til kommentar

En liten double post her men det får bare være.

 

Jeg har gitt opp på det scriptet jeg skrev i min første post da jeg har vært utolmodig og funnet ut litt mer om crontab og rsync. Nå har jeg lagd meg en liten command som gjør den jobben jeg vil utenom EN.

Jeg vet ikke hvordan jeg skal få pakket inn og komprimert mappen jeg tar backup av.

* 01 * * * rsync --delete -azvv /fra-backup-dir /til-backup-dir

Det den gjør er å synkroniserer min backup kl 01:00 hver natt.

Men skulle gjerne har gjort dette komprimert om noen kunne kommet med den lille ekstra kommandoen jeg trenger.

Lenke til kommentar

@Kman3107:

 

Til backup anbefaler jeg å bruke rdiff-backup i stedet for rsync. Rdiff-backup gir inkrementell backup direkte og lagrer eldre versjoner i stor grad som komprimerte filer. Men som Del skriver, det kan være like greitt å bruke et backupprogram.

 

Ja, han bruker to script - men ikke slik som du tror. Han har et script som kjører mysqldump på mysqldatabasene og gzipper (komprimerer disse). Det andre scriptet bruker ikke rsync, men tar til å lage en komprimert backup. Ingen av scripta her lager inkrementell backup - tar-scriptet lager en ny backup for hver dag.

 

Scriptet i første post synes jeg ikke var av de beste - prinsippene er helt greie. Her er en nyere versjon som komprimerer filene. http://www.digitalpeer.com/id/backup

Lenke til kommentar

Nå er jeg nesten der! :D

#!/bin/bash
# Backup files.
backup_files="/home"
# Backup destination.
dest="/media/temporary/usbbackup"
# Backup name.
date=$(date +%d-%m)
hostname=$(hostname)
archive_file="$hostname-$date.tgz"
# Make backup using tar.
tar -cvpzf $dest/$archive_file $backup_files
# Find and delete old backups.
find . -name 'backup_*' -mtime +13 -delete
# Print end status message.
echo
echo "Backup finished"
date
# Long listing of files in $dest to check file sizes.
ls -lh $dest

Nå lurer jeg først og fremst på hvordan jeg kan lage kommando for navn på filen.

Jeg finner bare ut hvordan jeg kan kalle den hostename, domainname, ypdomainname, ypdomainname og ypdomainname.

 

Si at jeg vil at filen skal bli hetende "backup-dag-måned"

Lenke til kommentar

Er ikke helt sikker på om jeg forstår deg riktig, men du kan for eksempel bytte ut

hostname=$(hostname) med navn="backup" og

archive_file="$hostname-$date.tgz" med archive_file="$navn-$date.tgz"

 

Da får du i alle fall ut backup-dag-måned.

Endret av RattleBattle
  • Liker 1
Lenke til kommentar

Er ikke helt sikker på om jeg forstår deg riktig, men du kan for eksempel bytte ut

hostname=$(hostname) med navn="backup" og

archive_file="$hostname-$date.tgz" med archive_file="$navn-$date.tgz"

 

Da får du i alle fall ut backup-dag-måned.

Det var så simpelt ja :p Takk det var bare det jeg var ute etter til mitt ukentlige full backup script.

 

Nå lurer jeg på en siste ting om. (håper jeg :p)

Vil dette scriptet virke?

#!/bin/bash
# What files to sync.
backup_files="/"
# Where to sync files.
dest="[email protected]:/user/backup"
# Print status message.
echo
echo "Backup starting"
date
# Make backup using rsync.
rsync -azve ssh --delete $backup_files $dest
# Print end status message.
echo
echo "Backup finished"
date

Jeg har ikke mulighet til å sjekke det siden serveren ikke er oppe enda. Venter fortsatt på min ødelagte prosessor skal bli enten fikset eller byttet av komplett.no

Endret av Kman3107
Lenke til kommentar

Så da tenkte jeg meg det er på tide å lære meg incremental backuping.

Jeg har satt meg til å lese litt om cron jobber så begynner å skjønne litt men det er fortsatt en del detaljer jeg ikke har forstått og skjønt hvordan jeg kan lære uten å starte med linux fra bånden av.

Ønske om læring er et glimrende utgangspunkt :thumbup:

Det var så simpelt ja :p Takk det var bare det jeg var ute etter til mitt ukentlige full backup script.

 

Nå lurer jeg på en siste ting om. (håper jeg :p)

Vil dette scriptet virke?

#!/bin/bash
# What files to sync.
backup_files="/"
# Where to sync files.
dest="[email protected]:/user/backup"
# Print status message.
echo
echo "Backup starting"
date
# Make backup using rsync.
rsync -azv --delete $backup_files $dest
# Print end status message.
echo
echo "Backup finished"
date

Jeg har ikke mulighet til å sjekke det siden serveren ikke er oppe enda. Venter fortsatt på min ødelagte prosessor skal bli enten fikset eller byttet av komplett.no

Ser greit nok ut, men det spørs hva du vil det skal gjøre.
Lenke til kommentar

Ser greit nok ut, men det spørs hva du vil det skal gjøre.

I følge det som står i det scriptet vil jeg har en rsync kommando som tar backup av "/" (root) til en delt mappe som heter backup på en annen pc (windows/ntfs) ved hjelp av ssh.
Lenke til kommentar

Vil ikke funke med mindre windows pc kjører ssh server, men det gjør den neppe.

Nei det har jeg funnet ut nå. Men det skal vel ikke være særlig å sette opp? Jeg mener å ha hatt en ssh server for ett par år tilbake (da kunne jeg enda mindre enn nå, sånn ca null niks), men jeg fjernet det pga jeg ikke kunne nok om det så fikk ikke brukt det særlig og det var bare enda fler muligheter for hackere og virus inn. Så det jeg trenger er en ssh server som jeg gir tilgang til en viss mappe som jeg da sender backups til når rsync scriptet blir kjørt av crontab.

 

PS: Jeg vet at jeg må få gjort dette uten å få passord prompt men det har jeg ikke lært meg enda så en ting av gangen :p

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...