Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: laatste tar-archief kopieren  (gelezen 1204 keer)

Offline i12know

  • Lid
  • Steunpunt: Nee
laatste tar-archief kopieren
« Gepost op: 2009/10/11, 17:12:42 »
Vraagje,

Heb een backupscript (cronjob) dat dagelijks een incrementele backup maakt op een tweede harde schijf (tar-archief), wekelijks een volle.
Nu wil ik met nog een script maandelijks het laatste volle tar archief over het netwerk op een netwerk server zetten.

Mijn vraag hoe selecteer ik het laatste tar archief. Door bijvoorbeeld gebruik te maken van de timestamp

Marius

 

Offline Cumulus007

  • Lid
  • Steunpunt: Nee
Re: laatste tar-archief kopieren
« Reactie #1 Gepost op: 2009/10/11, 18:47:31 »
Als volgt:
ls -t | grep -v string | head -n 1

Offline i12know

  • Lid
  • Steunpunt: Nee
Re: laatste tar-archief kopieren
« Reactie #2 Gepost op: 2009/10/11, 23:40:28 »
Als volgt:
ls -t | grep -v string | head -n 1

thnx lijkt te werken.

Kan alleen nu nog in mijn script niet /mnt/nas umounten? Het lukt wel om mijn netwerk te koppelen. Als ik dan gewoon in een terminal sudo umount /mnt/nas doe lukt het wel.
Zal niet de schoonheidsprijs krijgen, heb wat verschillende scriptjes bij elkaar geveegd. Zal ongeveer gaan doen wat ik wil maar kijg het met mijn gebrekkige programmeer kennis nog niet goed.

#!/bin/bash

# thnx Paul Pepper & Linux Magazine april 2005

# opties
if [ $1 = -i ] ; then
      TYPE='inc'
fi

if [ $1 = -f ] ; then
        TYPE='full'
fi

if [ $1 = -m ] ; then
TYPE='mon'
fi

# instellingen

ID=/usr/bin/id
ECHO=/bin/echo
MOUNT=/bin/mount
UMOUNT=/bin/umount
RM=/bin/rm
MV=/bin/mv
CP=/bin/cp
TOUCH=/bin/touch
RSYNC=/usr/bin/rsync

# ===========================
# FILENAME en locaties
# ===========================

NAME=home-backup
BACKUPDIR=/home/
MOUNT_DEVICE=//192.168.1.100/backup
MOUNT_POINT=/mnt/nas/
BACKUP_FROM_DIR=/mnt/sdb1/backup-home/
SNAPSHOT=snapshot
EXCLUDES=
BACKUP_TO_PATH=${MOUNT_POINT}${SNAPSHOT}/
STORAGEDIRINC=/mnt/sdb1/backup-home-inc/
STORAGEDIRFULL=/mnt/sdb1/backup-home-full/
TIMESTAMP=`date +%F`

# procedure
if [ $TYPE = 'inc' ]; then
        FILENAME=$STORAGEDIRINC$NAME-$TIMESTAMP-inc.tar.gz
        tar cfzp $FILENAME -N $BACKUPDIR.lastbackup $BACKUPDIR --exclude='*/.gvfs' 2> /dev/null
        touch $BACKUPDIR.lastbackup
elif [ $TYPE = 'full' ]; then
        touch $BACKUPDIR.lastbackup
        FILENAME=$STORAGEDIRFULL$NAME-$TIMESTAMP-full.tar.gz
tar cfzp $FILENAME $BACKUPDIR --exclude='*/.gvfs' 2> /dev/null
elif [ $TYPE = 'mon' ]; then
if [ `$ID -u` != '0' ]; then
        $ECHO "$0 must be executed as root. Exiting!"
        exit 1
fi
 
# Attempt to mount the backup device, else abort
 
$MOUNT -t cifs $MOUNT_DEVICE -o credentials=/etc/.cifspw $MOUNT_POINT
 
if [ $? -ne 0 ]; then
        $ECHO "$0: Kan $MOUNT_DEVICE $MOUNT_POINT niet koppelen"
        exit 1
fi
 
# Stap 1. verwijder de oudste backup, indien aanwezig

if [ -d ${BACKUP_TO_PATH}.3 ] ; then
        $RM -rf ${BACKUP_TO_PATH}.3
fi
 
# Stap 2. schuif de middelste backup een positie op
 
if [ -d ${BACKUP_TO_PATH}.2 ] ; then
        $MV ${BACKUP_TO_PATH}.2 \
        ${BACKUP_TO_PATH}.3
fi
 
if [ -d ${BACKUP_TO_PATH}.1 ] ; then
        $MV ${BACKUP_TO_PATH}.1 \
            ${BACKUP_TO_PATH}.2
fi

# Stap 3: Maak een hardlink (muv directory's) copy van de laatste
# backup indien aanwezig.
 
if [ -d ${BACKUP_TO_PATH}.0 ] ; then
        $CP -alp ${BACKUP_TO_PATH}.0 \
                 ${BACKUP_TO_PATH}.1
 
FILENAME=`ls -t /mnt/sdb1/backup-home-full | grep -v string | head -n 1`

# Stap 4: rsync naar de laatste snapshot (let op dat rsync net als cp
# --remove-destination by default, zodat de bestemming in "unlinked"
# als dit niet zo was zou dit ook over de andere snapshots kopieeren?
 
$RSYNC -va --delete --delete-excluded \
        --exclude-from="$EXCLUDES"    \
        ${FILENAME} ${BACKUP_TO_PATH}.0
 
# Stap 5: update de mtime van de meest recente snapshot.

$TOUCH ${BACKUP_TO_PATH}.0
 
# Unmount de backup device
 
$UMOUNT $MOUNT_DEVICE

if [ $? -ne 0]; then
         $ECHO "$0: Could not unmount ${MOUNT_POINT}"
        exit 1
fi

fi
fi
« Laatst bewerkt op: 2009/10/11, 23:44:15 door i12know »

Offline Scormen

  • Lid
    • LinuxOntdekt.Be
  • Steunpunt: Nee
Re: laatste tar-archief kopieren
« Reactie #3 Gepost op: 2009/10/13, 17:30:23 »
Een tijd geleden heb ik ook in Bash een back-up scriptje in elkaar gestoken.
Misschien dat je er nog iets kan uithalen: http://www.linuxontdekt.be/2009/06/09/back-up-linux-script-in-bash/

Kris
Ubuntu gebruiker #18341 | Linux gebruiker #456955
ยท Mijn persoonlijke Linux blog

Offline i12know

  • Lid
  • Steunpunt: Nee
Re: laatste tar-archief kopieren
« Reactie #4 Gepost op: 2009/10/13, 23:55:42 »
Een tijd geleden heb ik ook in Bash een back-up scriptje in elkaar gestoken.
Misschien dat je er nog iets kan uithalen: http://www.linuxontdekt.be/2009/06/09/back-up-linux-script-in-bash/

Kris

Thnx, zal er zeker naar kijken, wordt waarschijnlijk mijn volgende project. Wil namenlijk een server bij mijn moeder zetten die periodiek backups van mijn servertje trekt. Dit wil ik dan met ssh doen en komt jouw script denk ik aardig van pas.
Maar nu heb ik het over een backup binnen mijn lan en hou ik het (ook door gebrek aan kennis) zo simpel mogelijk.

Toch bedankt, ga me er zeker in verdiepen en zal vast wel wat ideen opdoen.

Marius