Help - Zoeken - Gebruikers - Kalender
Volledige versie: UPDATE aanpasbaar backupscript naar Windows
MandrivaClub.NL > Forum > Documentatie en Programmeren
HJH
Er zaten in de vorige versie van het script toch enige fouten.
Dit maakte het script in zoverre onbruikbaar dat de "umount" en de "backup-leeftijd " evaluaties niet werkten, en dus niets deden. In deze versie werken ze wel.
Welliswaar nog niet zo zoals ik eigenlijk wil, maar het voldoet in eerste instantie zo wel.

Ik wil eigenlijk vooral een betere oplossing voor de umount eval. Dus wanneer iemand hier een mooie oplossing heeft (eentje die lijkt op wat ik aan het begin van het script beschrijf denk ik), dan houd ik me aanbevolen!

Ook ander commentaar is natuurlijk welkom!

CODE


#!/bin/bash

# Backup script voor het maken van een backup van een bepaalde map

# naar een Windows share

# Door: Hendrik-Jan Heins ( hjh@NOSPAM.passys.nl )

# Versie 0.2   3-5-2004

# Dit script is vrijgegeven onder de voorwaarden van de GNU/GPL

# Mogelijke/ gewenste verbeteringen:

# De evaluatie van de backup-bestandsnaam moet beter.

# ALLE bestanden ouder dan 5 weken moeten worden weggegooid.

# De huidige oplossing werkt, maar is foutgevoelig.

# De umount-eval werkt niet geheel zoals gewenst.

# liefst een eval op true of false daar, en op basis daarvan een umount commando

# misschien als ik hier beter in wordt...



echo off



# Variabelen voor samba mount definitie



Samba=//<pcnaam>/<map>

Mountpunt=/mnt/<map_naar_keuze>



# Map die te back-uppen is

Backup_map=<map waarvan je een backup wilt>



# Variabele voor Windowsnaam



Naam=<gebruikersnaam>



# Variabele voor Windowswachtwoord



Wachtwoord=<wachtwoord>



# Vanaf hier is alles geautomatiseerd

# Het commando "smbmount"/"smbumount" moet mogelijk vervangen worden

# door "mount"/"umount"

# Datum aan backupbestand





Backupnaam=backup`date +%Y%W`.zip



# De naam van het bestand dat 5 weken oud is



Naam_oud=backup$((`date +%Y%W`-5)).zip



# Variabele voor bestandsnaam (grep op datum? -> ja dus!)



Zipfile=/tmp/$Backupnaam





#

#

# het echte script



zip -r9 $Zipfile $Backup_map





sleep 1



smbmount $Samba $Mountpunt -o username=$Naam,password=$Wachtwoord,sync





cp -dpR $Zipfile $Mountpunt



# Voor het verwijderen van backup bestanden die ouder zijn dan 5 weken





Verwijderen ()

{

Zipfile1=`ls $Mountpunt | grep $Naam_oud`

 if [ $Zipfile1 = $Naam_oud ]

  then rm -f "$Mountpunt/$Zipfile1"

else echo "niets te verwijderen"

fi

}



Verwijderen



sleep 1



ontkoppelen ()

{

smbumount $Mountpunt

# controle

Mount=`cat /proc/mounts | grep $Mountpunt | gawk '{print $2}'`

if [ $Mount = $Mountpunt ]

then smbumount $Mountpunt

else echo "afgekoppeld"

fi

}



ontkoppelen



rm -f $Zipfile





exit 0



Hendrik-Jan
HJH
Ik ben bijna tevreden!
De umount procedure werkt nu naar behoren, en controleert of er nog aangekoppelde mappen zijn.
De backup wordt weggegooid als ie 5 dagen oud is. de evaluatie daarvan is nog niet geheel naar mijn zin, maar hij werkt, en zal ongetwijfeld voldoen.

Commentaar is nog steeds welkom!

CODE


#!/bin/bash -x

# Backup script voor het maken van een backup van een bepaalde map

# naar een Windows share

# Door: Hendrik-Jan Heins ( hjh@NOSPAM.passys.nl )

# Versie 0.3   5-5-2004

# Dit script is vrijgegeven onder de voorwaarden van de GNU/GPL

# Mogelijke/ gewenste verbeteringen:

# De evaluatie van de backup-bestandsnaam moet beter.

# ALLE bestanden ouder dan 5 weken moeten worden weggegooid.

# De huidige oplossing werkt, maar is foutgevoelig.

# misschien als ik hier beter in wordt...



echo off



# Variabelen voor samba mount definitie



Samba=//<machinenaam>/<sharenaam>

Mountpunt=<koppelpunt>



# Map die te back-uppen is

Backup_map=<naam_backup-bare_map>



# Variabele voor Windowsnaam



Naam=<windows_gebruikersnaam>



# Variabele voor Windowswachtwoord



Wachtwoord=<windows_wachtwoord>



# Vanaf hier is alles geautomatiseerd

# Het commando "smbmount"/"smbumount" moet mogelijk vervangen worden

# door "mount"/"umount"

# Datum aan backupbestand





Backupnaam=backup`date +%Y%W`.zip



# De naam van het bestand dat 5 weken oud is



Naam_oud=backup$((`date +%Y%W`-5)).zip



# Variabele voor bestandsnaam (grep op datum? -> ja dus!)



Zipfile=/tmp/$Backupnaam





#

#

# het echte script



zip -r9 $Zipfile $Backup_map





sleep 1



smbmount $Samba $Mountpunt -o username=$Naam,password=$Wachtwoord,sync





cp -dpR $Zipfile $Mountpunt



# Voor het verwijderen van backup bestanden die ouder zijn dan 5 weken



Zipfile1=`ls $Mountpunt | grep $Naam_oud`



while [ $Zipfile1 = $Naam_oud ]

do

rm -f $Mountpunt/$Naam_oud

done



#Verwijderen ()

#{

#Zipfile1=`ls $Mountpunt | grep $Naam_oud`

#  if [ $Zipfile1 = $Naam_oud ]

#   then rm -f "$Mountpunt/$Zipfile1"

# else echo "niets te verwijderen"

# fi

#}



#Verwijderen



sleep 1



# mount afkoppelen



Mount=`cat /proc/mounts | grep $Mountpunt | gawk '{print $2}'`



ontkoppelen ()  {

Mount=`cat /proc/mounts | grep $Mountpunt | gawk '{print $2}'`

for x in $Mount

do

 smbumount $Mountpunt

done

}



ontkoppelen



# verwijderen tijdelijk bestand



rm -f $Zipfile





exit 0



Hendrik-Jan
Dit is een "Print" versie van onze forums. Om de volledige versie met meer informatie, afbeeldingen en opmaakte bekijken, a.u.b. klik hier.