I Ubuntu t.o.m. 10.04 er pakkehåndteringsprogrammet aptitude, som bruges i det følgende, installeret som standard. Men fra og med Ubuntu 10.10 er det ikke længere standard og skal derfor installeres for at scriptet kan fungere. Det gør du med
Kode: Vælg alt
sudo apt-get install aptitude
For at scriptet kan udføre de ønskede opgaver skal programmet rsync være installeret:
Kode: Vælg alt
sudo aptitude install rsync
For at få notifikations-popups med statusmeddelelser skal du installere libnotify-bin:
Kode: Vælg alt
sudo aptitude install libnotify-bin
Herunder er der et screenshot som viser hvordan menuen ser ud i Tilda-terminalen
![Billede](http://stromata.dk/Grafik/Ubuntu/vedl_menu.png)
Scriptet er selvforklarende. Det kan blot kopieres med de rettelser som er angivet i kommentaren. Min eksterne harddisk hedder 'disk' og min usb-nøgle hedder 'DISK_IMG', og jeg gemmer mine billeder i mappen Billeder. Du skal rette disse navne til navnene på din egen disk og usb-nøgle samt navnet på den mappe hvor du gemmer dine billeder.
Det gør du i scriptets linje 8,9 og 10 hvor ordene er markeret med rødt
Navnet på din eksterne harddisk og din usb-nøgle finder du let: tilslut dem og brug flg. kommando:
Kode: Vælg alt
ls /media/
Efter rettelserne skal scriptet placeres i /usr/local/bin/ og gøres udførbart. Har du det liggende på dit Skrivebord, så bruger du terminalen sådan - en linje ad gangen:
Kode: Vælg alt
cd Skrivebord
sudo mv vedligehold_menu.sh /usr/local/bin/
cd /usr/local/bin
sudo chmod +x vedligehold_menu.sh
Du kan så kalde scriptet fra en terminal med kommandoen
Kode: Vælg alt
sudo vedligehold_menu.sh
Du kan også tilføje det til en launcher, så det kun kræver et klik at kalde scriptet:
[*] Højreklik på panelet > Tilføj til panel > Brugerdefineret programgenvej
[*] Vælg Program i terminal og skriv Navn: Administration | Kommando: sudo /usr/local/bin/vedligehold_menu.sh | Vælg evt. et andet ikon end det med fjederen ved at klikke på ikonet og vælge blandt de mulige
[*] Luk, og så er genvejen tilføjet til panelet og du er klar til at bruge scriptet
Hvis du bruger awn (avant-window-navigator) kan du tilføje en launcher. Proceduren er beskrevet her: https://ubuntudanmark.dk/forum/viewtopic.php?f=3&t=10985&p=68356&hilit=awn#p68356
Edit 22. maj 2010: Version 4.1 af scriptet - nu med indbygget kontrol af om extern harddisk eller usb-nøgle er tilsluttet og kontrol af, om der er tilstrækkelig plads til backup'en, en fintuning af selve backupen, automatisk afmontering af ekstern harddisk/usb-nøgle efter endt backup, samt mulighed for at afmontere ekstern harddisk og usb-nøgle fra interfacet - og oprettelse af filen 'backup_fejl' med eventuelle fejlmeldinger i brugerens hjemmemappe kan downloades herfra:http://stromata.dk/Ubuntu/vedligehold_menu.sh
Hvis du har downloadet scriptet før 19. maj 2010 har du en lidt primitivere udgave af det - har du downloadet i perioden 19. maj - 21. maj har du en udgave med problemer mht. beregning af pladsforbruget. Så vil du have den bedst mulige udgave, så hent denne:
#!/bin/bash
# Menustyret udførelse af oprydning, opdatering og backup. flemming christensen (laoshi) version 4.1 - nu med indbygget kontrol af, om harddisk eller usb-nøgle er tilsluttet og om der er tilstrækkelig plads til backup'en, samt automatisk afmontering af harddisk og usb-nøgle efter endt backup. Afmontering kan også foretages manuelt gennem menuen. Notifikations-pop-ups i Ubuntu 9.04 og senere udgaver er tilføjet 15. juni 2009. For at bruge disse pop-ups skal du installere libnotify-bin som ligger i universe-repository (sudo aptitude install libnotify-bin). 19. maj 2010 er tilføjet fejlrapportering til filen backup_fejl som lægges i brugerens hjemmemappe. Fra /etc/ laves ikke backup af fstab, og fra $HOME ikke at .gvfs og .local/share/ubuntuone/syncdaemon/ Tomme mapper på destinationsdisken slettes. Fejlmeldinger lægges i $HOME/backup_fejl. Arbejdet med denne udgave er afsluttet 22. maj 2010. Eventuelle kommentarer eller problemer med scriptet kan sendes til mig på mail fcATstromata.dk
#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, 'USB' med navnet på din egen usb-nøgle, og 'Billeder' med navnet på den mappe hvor du gemmer dine billeder. Du finder navnet på disken og usb-nøglen ved at køre kommandoen 'ls /media/ når de er tilsluttet.
exthd=disk
usbd=USB
pict_dir=Billeder
#Herunder er redigering unødvendig
#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, Chromium-browserens og Firefox' cache tømmes, og skraldespanden tømmes
function ryddeop {
exec 2> $HOME/backup_fejl
clear
aptitude clean -y
aptitude purge -y ~b
aptitude purge -y ~c
rm -rf ~/.evolution/mail/local/folders.db
rm -rf $HOME/.local/share/Trash/*
rm -rf $HOME/.mozilla/firefox/gyger6fy.default/Cache/*
rm -rf $HOME/.cache/chromium/Cache/Cache/*
rm -rf $HOME/.cache/chromium/Cache/Media\ Cache/*
rm -rf /var/log/*.gz
notify-send "Oprydning af systemet" "er gennemført." -i gnome-fs-trash-empty
echo -e "\n\t\tOprydningen af systemet er gennemført."
echo -en "\n\tTast Y for at vende fortsætte "
}
#Opdatering af systemets programpakker
function opdatere {
exec 2> $HOME/backup_fejl
clear
notify-send "Opdatering af systemet" "er i gang." -i update-manager
dpkg --configure -a
aptitude safe-upgrade -y
notify-send "Opdatering af systemet" "er gennemført." -i update-manager
echo -e "\n\t\tOpdateringen er udført"
echo -en "\n\tTast Y for at vende fortsætte "
}
#Der dannes en liste over alle installerede programpakker. Den gemmes i filen pakkeliste som ligger i home-mappen. Listen overskrives med de aktuelle oplysninger hver gang denne funktion køres
function pakkelistehome {
exec 2> $HOME/backup_fejl
clear
dpkg --get-selections | grep '[[:space:]]install$' | awk '{print $1}' > /$HOME/pakkeliste
notify-send "Oversigt over installerede programpakker" "er nu gemt i filen $HOME/pakkeliste." -i gnome-fs-home
echo -e "\n\t\tPakkelisten er nu gemt i din hjemmemappe"
echo -en "\n\tTast Y for at vende fortsætte "
}
#Der dannes en liste over samtlige installerede programpakker, og denne overføres til den eksterne harddisk. Næste gang denne overførsel foretages overskrives filen med de nye data.
function hdd_pakkelistebackup {
exec 2> $HOME/backup_fejl
clear
if [ ! -e /media/$exthd ]; then
echo -e "\n\t\t\tEkstern harddisk ikke tilsluttet"
echo -e "\n\tTilslut harddisken og tast Y for at fortsætte"
notify-send "Ekstern harddisk" "er ikke tilsluttet. Sæt den i og tast Y for at fortsætte" -i gnome-dev-floppy
else
dpkg --get-selections | grep '[[:space:]]install$' | awk '{print $1}' > /media/$exthd/pakkeliste
notify-send "Oversigt over installerede programpakker" "er gemt på ekstern harddisk." -i gnome-dev-floppy
echo -e "\n\t\tPakkelisten er nu gemt på ekstern harddisk"
echo -en "\n\tTast Y for at vende fortsætte "
fi
}
#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 {
exec 2> $HOME/backup_fejl
clear
if [ ! -e /media/$usbd ]; then
echo -e "\n\t\t\tUSB ikke tilsluttet"
echo -e "\n\tSæt usb-nøglen i og tast Y for at fortsætte"
notify-send "USB-nøgle" "er ikke tilsluttet. Sæt den i og tast Y for at fortsætte" -i gnome-dev-floppy
else
dpkg --get-selections | grep '[[:space:]]install$' | awk '{print $1}' > /media/$usbd/pakkeliste
notify-send "Oversigt over installerede programpakker" "er gemt på usb-nøglen i filen pakkeliste." -i gnome-dev-floppy
echo -e "\n\t\tPakkelisten er nu gemt på usb-nøglen"
echo -en "\n\tTast Y for at vende fortsætte "
fi
}
#Der foretages overførsel af Dokumenter-mappen til en usb-nøgle.
function docsbackup {
exec 2> $HOME/backup_fejl
clear
if [ ! -e /media/$usbd ]; then
echo -e "\n\t\t\tUSB ikke tilsluttet"
echo -e "\n\tSæt usb-nøglen i og tast Y for at fortsætte"
notify-send "USB-nøgle" "er ikke tilsluttet. Sæt den i og tast Y for at fortsætte" -i gnome-dev-floppy
elif
[ $(du -s $HOME/Dokumenter/ | awk '{print $1}') -gt $(df /media/$usbd | awk '/^\// {print $4}') ]; then
notify-send "Mangler plads" "Der er ikke plads nok på usb-nøglen til en fuld backup"
echo -e "\n\t\tDer er ikke plads nok på usb-nøglen til en fuld backup."
return
else
echo -e "\n\tMappen Dokumenter gemmes på usb-nøglen"
notify-send "Mappen Dokumenter" "gemmes på usb-nøglen." -i gnome-dev-floppy
rsync -vrtplz --progress --stats --delete $HOME/Dokumenter /media/$usbd
notify-send "Mappen Dokumenter" "er gemt på usb-nøglen." -i gnome-dev-floppy
echo -e "\n\t\tMappen Dokumenter er nu gemt på usb-nøglen"
echo -en "\n\tTast Y for at vende fortsætte "
fi
}
#Der foretages overførsel af billed-mappen til en usb-nøgle.
function billedbackup {
exec 2> $HOME/backup_fejl
clear
if [ ! -e /media/$usbd ]; then
echo -e "\n\t\t\tUSB ikke tilsluttet"
echo -e "\n\tSæt usb-nøglen i og tast Y for at fortsætte"
notify-send "USB-nøgle" "er ikke tilsluttet. Sæt den i og tast Y for at fortsætte" -i gnome-dev-floppy
elif
[ $(du -s $HOME/$pict_dir | awk '{print $1}') -gt $(df /media/$usbd | awk '/^\// {print $4}') ]; then
notify-send "Mangler plads" "Der er ikke plads nok på usb-nøglen til en fuld backup"
echo -e "\n\t\tDer er ikke plads nok på usb-nøglen til en fuld backup.\n\t\tTast Y for at fortsætte"
return
else
echo -en "\n\tMappen Billeder gemmes på usb-nøglen"
notify-send "Mappen Billeder" "gemmes på usb-nøglen." -i gnome-dev-floppy
rsync -vrtplz --progress --stats --delete $HOME/$pict_dir /media/$usbd
notify-send "Mappen Billeder" "er gemt på usb-nøglen." -i gnome-dev-floppy
echo -e "\n\t\tMappen Billeder er nu gemt på usb-nøglen"
echo -en "\n\tTast Y for at vende fortsætte "
fi
}
#Der foretages backup til ekstern harddisk af /etc/
function etcbackup {
exec 2> $HOME/backup_fejl
clear
if [ ! -e /media/$exthd ]
then
echo -e "\n\tTilslut den eksterne harddisk og tast Y for at fortsætte"
notify-send "Ekstern harddisk" "er ikke tilsluttet. Sæt den i og tast Y for at fortsætte" -i drive-harddisk
elif
[ $(du -s /etc/ | awk '{print $1}') -gt $(df /media/$exthd | awk '/^\// {print $4}') ]; then
notify-send "Mangler plads" "Der er ikke plads nok på harddisken til en fuld backup"
echo -e "\n\t\tDer er ikke plads nok på harddisken til en fuld backup.\n\t\tTast Y for at fortsætte"
return
else
echo "Backup af /etc/ til ekstern harddisk"
notify-send "/etc/" "er gemt på ekstern harddisk." -i drive-harddisk
rsync -vrtplz --progress --stats --exclude='fstab' --delete --backup --backup-dir=/media/$exthd/etc-`date +%A` /etc/ /media/$exthd/etc
fi
}
#Der foretages backup til ekstern harddisk af /usr/local/
function usrlocalbackup {
exec 2> $HOME/backup_fejl
clear
if [ ! -e /media/$exthd ]
then
echo -e "\n\tTilslut den eksterne harddisk og tast Y for at fortsætte"
notify-send "Ekstern harddisk" "er ikke tilsluttet. Sæt den i og tast Y for at fortsætte" -i drive-harddisk
elif
[ $(du -s /usr/local/ | awk '{print $1}') -gt $(df /media/$exthd | awk '/^\// {print $4}') ]; then
notify-send "Mangler plads" "Der er ikke plads nok på harddisken til en fuld backup"
echo -e "\n\t\tDer er ikke plads nok på harddisken til en fuld backup.\n\t\tTast Y for at fortsætte"
return
else
echo "Backup af usr/local til ekstern disk"
notify-send "/usr/local/" "er gemt på ekstern harddisk." -i drive-harddisk
rsync -vrtplz --progress --stats --delete --backup --backup-dir=/media/$exthd/usr_local-`date +%A` /usr/local/ /media/$exthd/usr_local
fi
}
#Der foretages backup af $HOME til ekstern disk.
function homebackup {
exec 2> $HOME/backup_fejl
clear
if [ ! -e /media/$exthd ]
then
echo -e "\n\tTilslut den eksterne harddisk og tast Y for at fortsætte"
notify-send "Ekstern harddisk" "er ikke tilsluttet. Sæt den i og tast Y for at fortsætte" -i drive-harddisk
elif
[ $(du -s $HOME | awk '{print $1}') -gt $(df /media/$exthd | awk '/^\// {print $4}') ]; then
notify-send "Mangler plads" "Der er ikke plads nok på harddisken til en fuld backup"
echo -e "\n\t\tDer er ikke plads nok på harddisken til en fuld backup.\n\t\tTast Y for at fortsætte"
return
else
echo "Backup af home til ekstern disk"
rsync -vrtplz --progress --stats --prune-empty-dirs --delete-excluded --exclude='.gvfs/' --exclude='.local/share/ubuntuone/syncdaemon/' --delete --backup --backup-dir=/media/$exthd/ændret-`date +%A` $HOME /media/$exthd/
notify-send "$HOME" "er gemt på ekstern harddisk." -i drive-harddisk
fi
}
#Samlet udførelse af backup af /etc/ /usr/local/ og $HOME til ekstern harddisk
function fuldbackup {
clear
etcbackup
usrlocalbackup
homebackup
umount /media/$exthd
notify-send "Backup" "er afsluttet og ekstern harddisk afmonteret" -i drive-harddisk
}
#Samlet udførelse af oprydning, opdatering, gemning af pakkeliste til harddisk og backup til ekstern harddisk
function samlet_hdd {
clear
ryddeop
opdatere
hdd_pakkelistebackup
fuldbackup
umount /media/$exthd
notify-send "Systemet" "er opryddet og opdateret, backup afsluttet og ekstern harddisk afmonteret" -i drive-harddisk
echo -e "\n\t\tSystemet er opryddet og opdateret,\n\t\tbackup afsluttet\n\t\tog ekstern harddisk afmonteret"
echo -e "\n\t\tTast Y for at fortsætte"
}
#Afmontering af ekstern harddisk
function afmonter_hd {
if [ ! -e /media/$exthd ]; then
echo -e "\n\tEkstern harddisk er ikke tilsluttet"
echo -en "\n\tTast Y for at fortsætte "
notify-send "Ekstern harddisk" "er ikke tilsluttet. Tast Y for at fortsætte" -i drive-harddisk
else
clear; umount /media/$exthd; echo -en "\n\t\tHarddisken kan nu fjernes - \n\tTast Y for at fortsætte "
notify-send "Ekstern Harddisk" "er nu afmonteret og kan fjernes. Tast Y i terminalen for at vende tilbage" -i drive-harddisk
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\tTast Y for at fortsætte "
notify-send "USB-nøgle" "er ikke tilsluttet. Tast Y for at fortsætte" -i gnome-dev-floppy
else
clear
umount /media/$usbd
echo -en "\n\t\tusb-nøglen kan nu fjernes - \n\tTast Y for at fortsætte "
notify-send "Usb-nøglen" "er nu afmonteret og kan fjernes. Tast Y i terminalen for at fortsætte" -i gnome-dev-floppy
fi
}
#Selve menu-funktionen (strukturen)
function menu {
clear
echo
echo -e "\tOprydning, opdatering og backup\n"
echo -e "\ta. Oprydning, opdatering og backup til ekstern harddisk"
echo -e "\t1. Rydde op"
echo -e "\t2. Systemopdatering"
echo -e "\t3. Gemme pakkeliste"
echo -e "\t4. Daglig backup til ekstern harddisk"
echo -e "\t5. Backup af dokumenter til usb-nøgle"
echo -e "\t6. Backup af billeder til usb-nøgle"
echo -e "\t7. Backup af pakkeliste til usb-nøgle"
echo -e "\ts. Afmonter ekstern harddisk"
echo -e "\td. Monter ekstern harddisk"
echo -e "\tf. Afmonter usb-nøgle"
echo -e "\tg. Monter 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) clear; break ;;
1) ryddeop ;;
2) opdatere ;;
3) pakkelistehome ;;
4) fuldbackup ;;
5) docsbackup ;;
6) billedbackup ;;
7) pakkelistebackup ;;
a) samlet_hdd ;;
s) afmonter_hd ;;
d) afmonter_usb ;;
*) clear
echo "Dette er ikke en valgmulighed"
esac
read -n 1 line
echo -en "\n\tTast Y for at vende fortsætte "
done
Hvis du får brug for din backup, så vær opmærksom på flg.:
[*] du skal ikke ukritisk kopiere /etc/ tilbage, og specielt ikke i en ny installation. Men har du f.eks. konfigureret apache, så kan du genbruge /etc/apache2. Dine crontab-filer ligger også i /etc/ og der kan være andre konfigurationer som du vil bevare. Men særlig fstab skal du ikke genbruge - det vil kun skabe store problemer - den er derfor nu undtaget fra backup.
[*] fra $HOME skal du også vurdere, hvilke skjulte filer du vil genbruge. Der sker for så vidt ikke noget galt i at bruge dem alle, for så får du din nuværende konfiguration med. Men har du problemer med den, så skal du måske nøjes med at genbruge dem, som du ved du har sat op efter ønske.
Vær opmærksom på at dine mails ligger i skjulte mapper, (ex. .evolution/ hvis du bruger Evolution, .thunderbird/<Profil navn>/, hvis du bruger Thunderbird), og din Firefox-opsætning i .mozilla/
.oces får du brug for - her er bl.a. oplysninger om din digitale signatur.
.gnupg er også meget vigtig, for her ligger dine krypteringsnøgler - og uden dem får du intet forståeligt ud af dine krypterede filer.
Til at bevare din tema-opsætning kan du installere og bruge programmet Phrank's themesaver http://ubuntu.online02.com/pts.