#!/bin/bash
# # Menustyret udførelse af oprydning, opdatering og backup. flemming christensen (laoshi) version 3 - nu med indbygget kontrol af, om harddisk eller usb-nøgle er tilsluttet samt afmontering af harddisk og usb-nøgle gennem menuen - 9. juni 2009
#Scriptet gemmes som /usr/local/bin/vedligehold_menu.sh og skal gøres udførbart (sudo chmod +x /usr/local/bin/vedligehold_menu.sh) og kan så kaldes fra terminalen eller en launcher med 'sudo vedligehold_menu.sh'. Ved indtastning af menu-nr. udføres den pågældende opgave.
#Herunder skal du tilpasse scriptet så du erstatter 'disk' med navnet på din egen eksterne harddisk, 'DISK_IMG' med navnet på din egen usb-nøgle, og 'Billeder' med navnet på den mappe hvor du gemmer dine billeder.
exthd=disk
usbd=DISK_IMG
pict_dir=Billeder
#Herunder er redigering unødvendig
#Opdatering af systemets programpakker
function opdatere {
clear
dpkg --configure -a
aptitude safe-upgrade -y
}
#Der dannes en liste over alle installerede programpakker. Den gemmes i filen pakkeliste som ligger i home-mappen. Listen overskrives med de aktueller oplysninger hver gang denne funktion køres
function pakkelistehome {
clear
dpkg --get-selections | grep '[[:space:]]install$' | \awk '{print $1}' > $HOME/pakkeliste
}
#Der udføres oprydning af gemte programpakker, brudte programpakker fjernes og konfigurationsfiler for fjernede programpakker fjernes. Desuden ryddes der op i evolutions database, uaktuelle logfiler fjernes, og skraldespanden tømmes
function ryddeop {
clear
aptitude clean -y
aptitude autoclean -y
aptitude purge ~b
aptitude purge ~c
find ~/.thumbnails -type f -exec rm {} \;
rm -rf ~/.evolution/mail/local/folders.db
rm -rf $HOME/.local/share/Trash/*
rm -rf /var/log/*.gz
}
#Der foretages backup til ekstern harddisk af /etc/ og ændrede/slettede filer gemmes i mappen etc-ugedagsnavn. Efter en uge overskrives de gemte filer i denne mappe.
function fuldbackup {
clear
echo "Backup af etc til ekstern disk"
echo ""
rsync -vrtplz --progress --stats --delete --backup --backup-dir=/media/$exthd/etc-`date +%A` /etc/ /media/$exthd/etc
#Der foretages backup af /usr/local til ekstern harddisk og ændrede/slettede filer gemmes i mappen usr_local-ugedagsnavn. Efter en uge overskrives filerne i denne mappe.
echo ""
echo "Backup af usr/local til ekstern disk"
echo ""
rsync -vrtplz --progress --stats --delete --backup --backup-dir=/media/$exthd/usr_local-`date +%A` /usr/local/ /media/$exthd/usr_local
echo ""
#Der foretages backup af home-mappen med samtlige (også skjulte) filer til ekstern harddisk i mappen 'ditnavn'. Ændrede/slettede filer gemmes i mappen ændret-ugedagsnavn. Efter en uge overskrives filerne i denne mappe.
echo "Backup af home til ekstern disk"
echo ""
rsync -vrtplz --progress --stats --delete --backup --backup-dir=/media/$exthd/ændret-`date +%A` $HOME /media/$exthd/
echo ""
echo "Backup er afsluttet"
}
#Der foretages overførsel af Dokumenter-mappen til en usb-nøgle.
function docsbackup {
clear
rsync -vrtplz --progress --stats --delete $HOME/Dokumenter /media/$usbd/
}
#Der foretages overførsel af Billeder-mappen til en usb-nøgle.
function billedbackup {
clear
rsync -vrtplz --progress --stats --delete $HOME/$pict_dir/media/$usbd/
}
#Der dannes en liste over samtlige installerede programpakker, og denne overføres til en usb-nøgle. Næste gang denne overførsel foretages overskrives filen med de nye data.
function pakkelistebackup {
clear
dpkg --get-selections | grep '[[:space:]]install$' | \awk '{print $1}' > /media/$usbd/pakkeliste
}
#Afmontering af ekstern harddisk
function afmonter_hd {
if [ ! -e /media/$exthd ]; then
echo -e "\n\tEkstern harddisk er ikke tilsluttet"
echo -en "\n\tTryk på en vilkårlig tast for at fortsætte "
else
clear; umount /media/$exthd; echo -en "\n\t\tHarddisken kan nu fjernes - \n\tTryk på en vilkårlig tast for at fortsætte "
fi
}
#Afmontering af usb-nøgle
function afmonter_usb {
if [ ! -e /media/$usbd ]; then
clear
echo -e "\n\t\tusb-nøgle er ikke tilsluttet"
echo -en "\n\tTryk på en vilkårlig tast for at fortsætte "
else
clear
umount /media/$usbd
echo -en "\n\t\tusb-nøglen kan nu fjernes - \n\tTryk på en vilkårlig tast for at fortsætte "
fi
}
#Selve menu-funktionen (strukturen).
function menu {
clear
echo
echo -e "\tOprydning, opdatering og backup\n"
echo -e "\t1. Rydde op"
echo -e "\t2. Gemme pakkeliste"
echo -e "\t3. Systemopdatering"
echo -e "\t4. Daglig backup til ekstern harddisk"
echo -e "\t5. Backup af dokumenter til usb"
echo -e "\t6. Backup af billeder til usb"
echo -e "\t7. Backup af pakkeliste til usb"
echo -e "\t8. Afmonter ekstern harddisk"
echo -e "\t9. Afmonter usb-nøgle"
echo -e "\t0. Luk\n\n"
echo -en "\t\tVælg menu nr: "
read -n 1 option
}
#Menuvalgene som bruger de ovenfor definerede funktioner
while [ 1 ]
do
menu
case $option in
0) break ;;
1) ryddeop ;;
2) pakkelistehome;;
3) opdatere ;;
4) fuldbackup ;;
5) docsbackup ;;
6) billedbackup ;;
7) pakkelistebackup ;;
8) afmonter_hd ;;
9) afmonter_usb ;;
*) clear
echo -e "\n\t\tDette valg er ikke muligt";;
esac
echo -e "\n\t\t\tOpgaven er udført".
echo -en "\n\tTryk på en tilfældig tast for at fortsætte "
read -n 1 line
done
clear