16 april, 2009

Linux/Ubuntu: Radera 5 äldsta backup filerna

Just nu arbetar jag med att försöka lära mig GNU/Linux Ubuntu v8.10 eftersom det är en del av mitt och en klasskompis examensarbete.

Jag sitter och försöker konfigurera och ändra lite inställningar via terminalen och har därför automatiskt skapat säkerhetskopior (eng. backup) av filerna jag ändrar ifall något skulle gå snett. Men nu är det så att antalet säkerhetskopior börjar bli väldigt många och det börjar bli svårt att hantera.

Därför har jag skapat ett Shell skript som raderar de fem filerna som har ändrats för längst tid sedan (eng. modification time) och skriver ut ett fint litet meddelande för att informera användaren. För att detta skall ske måste det finnas minst sex stycken säkerhetskopior som har suffixet (filändelsen) *.bak

Allt detta sker innan jag skapar en säkerhetskopia. Här nedanför kan ni se koden för mitt Shell skript.

deloldbak.sh

#!/bin/bash
#
#test
#if expr length $(echo hello) '<' 6 >/dev/null; then
# echo mindre än 6 tecken
#fi
#
#-----------------
# expr length -- beräknar längden på strängen som parameter
# expr -- beräknar utrycket som parameter
#------------------
#
# License: Open source but leave this comments if you want to use my code
# Licens: Öppen källkod men lämna dessa kommentarer om du vill använda min kod
# Date: 2009-04-16
# Owner: Waschman
# URL: http://waschman.blogspot.com
#


# Tar bort de fem äldsta backup filerna från aktuell katalog men
# bara om det existerar fler än 6 säkerhetskopior
if expr $(ls -lt | grep '\.bak$' | wc -l) '>' 6 >/dev/null; then
echo 'Too many backups... removing the 5 oldest backups'
# För varje fil som hittas i utskriften så körs kommandot 'rm'.
# '{} \;' anger att kommandot är slut.
find $(ls -t | grep '\.bak$' | tail -5) -exec rm {} \;
else
echo 'We only have a small amount of backups: not removing any backups'
fi
Ni kan skapa filen med kommandot gedit, nano, vim, eller någon annan textredigerare:
Exempel:
~$ gedit deloldbak.sh
Gör den sedan körbar:
Exempel:
~$ chmod +x deloldbak.sh
Kör skriptet i terminalen:
Exempel:
~$ ./deloldbak.sh
Jag kände bara för att dela med mig av skriptet till allmänheten.

Tips!
I shell-skriptet använder jag $(...) vilket omvandlar utskriften från kommandot innanför paranteserna till en text (eng. string, sv. sträng) som sedan kan behandlas av ett annat kommando. I mitt fall skickas strängen till kommandot expr.

Nu tänker jag gå och lägga mig för i morgon (egentligen idag) skall jag bara slappna av och ta en åktur på mina inlines. Tills dess önskar jag er "happy programming".

Källor
http://www.howtogeek.com/howto/ubuntu/delete-files-older-than-x-days-on-linux/

Inga kommentarer:

Välkomna till bloggen

Välkomna ska ni vara kära besökare. Jag skriver om IT för att det är kul och för att jag vill dela med mig av information och kunskap. Jag försöker hålla bloggen så kategoriserad som möjligt för att ni enklare ska hitta intressanta länkar och artiklar.