Bandbackup i Linux
Att använda band är väldigt annorlunda mot att använda externa hårddiskar eller
USB-stickor att göra backup på. Istället för att bara skicka filerna till en
monterad enhet i systemet måste man här använda speciella program och hålla reda
på vart på bandet man är. Ett band är precis vad det låter som, ett band, precis
som de gamla kasettbanden eller VHS-banden. Det innebär att datan lagras i en
lång sekvens på bandet, alla filerna efter varandra. En fil på bandet är då en
tar
-fil som har en början och ett slut. tar
-filen i sin tur innehåller alla
de filer som vi har gjort backup på. De flesta band som idag används i
backupsyfte rymmer långt över 1 gb. Den bandstationen jag själv använder och som
jag kommer att använda i denna artikel är en DAT-bandare som rymmer 72 gb
data. Fast egentligen ryms inte 72 gb data på bandet då dessa 72 gb avser
komprimerad data. Notera här att komprimeringen är inget jag behöver bry mig om
själv eftersom bandstationen sköter allt detta i
hårdvaran. Hårdvarukomprimeringen har många fördelar jämfört med om vi skulle
komprimerat datan själv. Den största fördelen är att vår dators CPU inte
belastas med komprimeringen, allt sker i bandstationen. I princip alla
bandstationer använder inbyggd komprimering.
Nedan visas en enkel skiss på hur band lagrar data. Tar-filerna nedan på bandet är just tar-filerna, inte de enskilda filerna som vi har tagit backup på.
Bandstationer under Linux
Bandstationer i Linux dyker upp som /dev/st0
för första SCSI-bandstationen
(samt även USB-enheter), och som /dev/ht0
för första
IDE-bandstationen. I mitt system är min bandstation /dev/st0
eftersom det är
en extern USB-enhet. Använder man enheten /dev/st0
så kommer bandet
automatiskt att spolas tillbaks till början efter varje operation. Vill man att
bandet skall stanna där den senaste operationen tog slut måste man istället
använda enheten /dev/nst0
(n för non-rewinding). Detsamma gäller för
IDE-enheterna, här heter alltså den icke-tillbakaspolande enheten /dev/nht0
.
Om vi ska förflytta oss på bandet måste vi använda oss av en non-rewinding
enhet, annars kommer bandet spolas tillbaks från början så fort kommandot har
utförts.
Program
De program vi kommer att använda här för att göra backup och för att styra
bandstationen är tar
och mt
. tar
använder vi ofta för att packa ihop och
skicka filer över internet. Men tar
är faktiskt egentligen avsett för just
bandbackuper. Namnet tar
kommer just från tape archive.
Vi gör en backup
Det enklaste sättet att förstå sig på bandbackuper är att testa sig fram lite. Så här kommer jag att visa hur man kan göra flera backuper på samma band, enligt skissen ovan. Här kommer vi att göra backup på tre hemkataloger på systemet, där varje hemkatalog ligger för sig själv på bandet. Så om vi enbart vill återställa Lisas hemkatalog kan vi spola fram bandet till Lisas tar-fil och återställa endast den.
Skapa backupen
/home
ser ut som följande på mitt system.
root@red-dwarf:/home# ls -l
total 40
drwxr-xr-x 2 joakim joakim 4096 okt 11 22:00 joakim
drwxr-xr-x 2 kalle kalle 4096 okt 11 22:05 kalle
drwxr-xr-x 3 lisa lisa 4096 okt 11 22:03 lisa
drwx------ 2 root root 16384 apr 27 19:50 lost+found
Det är alltså katalogerna joakim, kalle och lisa som vi ska ta backup på. Vi
börjar med att starta vår bandstation, sätta i ett band och kontrollera
statusen. Statusen kontrollerar vi med kommandot mt
.
root@red-dwarf:/home# mt -f /dev/st0 status
drive type = 114
drive status = 1191182336
sense key error = 0
residue count = 0
file number = 0
block number = 0
Här ser vi att vi står i början av bander (file number = 0
och block number =
0
). Inga fel har heller detekteras på bandet eller bandstationen så vi går
vidare med backupen.
Först gör vi backup av joakims hemkatalog. Därefter kontrollerar vi var på bandet
vi befinner oss med mt
-kommandot igen. Observera att jag här hela tiden
använder /dev/nst0
för att bandet inte ska spolas tillbaks automatiskt.
root@red-dwarf:/home# tar cvf /dev/nst0 joakim/
joakim/
joakim/.bashrc
joakim/story.txt
joakim/.bash_history
joakim/wallpaperimage.jpg
joakim/.bash_logout
joakim/toys-wallpaper-hd-16339-17046-hd-wallpapers.jpg
joakim/2iphone.jpg
joakim/.profile
joakim/alice.txt
joakim/.viminfo
root@red-dwarf:/home# mt -f /dev/nst0 status
drive type = 114
drive status = 1191182336
sense key error = 0
residue count = 0
file number = 1
block number = 0
Vi befinner oss nu på filnummer ett. Kom ihåg att vi alltid börjar räkna från noll, så filnummer ett är egentligen den andra filen. Det vill säga att vi står efter den första filen (fil 0). Nu fortsätter vi med backupen av Kalles hemkatalog och kontrollerar sedan återigen vart vi befinner oss på bandet.
root@red-dwarf:/home# tar cvf /dev/nst0 kalle/
kalle/
kalle/spreadsheet.csv
kalle/.bashrc
kalle/.bash_history
kalle/hugesheet.csv
kalle/.bash_logout
kalle/417259.jpg
kalle/Sample-Spreadsheet-500000-rows.csv
kalle/.profile
root@red-dwarf:/home# mt -f /dev/nst0 status
drive type = 114
drive status = 1191182336
sense key error = 0
residue count = 0
file number = 2
block number = 0
Mycket riktigt befinner vi oss nu på filnummer två (alltså vid starten av den tredje filen, som inte finns än). Se bilden här nedan vart vi befinner oss på bandet.
Nu bestämmer vi oss för att göra klart Lisas backup en annan dag och spolar
tillbaks bandet och stänger av bandstationen. Detta gör vi med mt -f /dev/st0
rewind
.
När vi några dagar senare vill fortsätta med backup och återgå till
filnummerposition två (starten till den tredje filen) använder vi återigen
mt
-kommandot, denna gång med fsf 2
. Vi kontrollerar därefter att vi befinner
oss på rätt plats med status
och gör sedan backupen med tar
.
root@red-dwarf:/home# mt -f /dev/nst0 fsf 2
root@red-dwarf:/home# mt -f /dev/nst0 status
drive type = 114
drive status = 1191182336
sense key error = 0
residue count = 0
file number = 2
block number = 0
root@red-dwarf:/home# tar cvf /dev/nst0 lisa/
lisa/
lisa/.bashrc
lisa/visualization_-_sun_and_sky_demo.dwg
lisa/.bash_history
lisa/FL_insurance_sample.csv.zip
lisa/.bash_logout
lisa/.profile
lisa/__MACOSX/
lisa/__MACOSX/._FL_insurance_sample.csv
lisa/big_buck_bunny_720p_2mb.mp4
lisa/Sample-SQL-File-10000rows.sql
root@red-dwarf:/home# mt -f /dev/nst0 status
drive type = 114
drive status = 1191182336
sense key error = 0
residue count = 0
file number = 3
block number = 0
Nu befinner vi alltså på filnummer tre (fyra eftersom vi börjar på noll). Nu ska
kontrollera så att allting verkligen stämmer. Låt oss börja med att se så att
Joakims filer fortfarande finns som första filen på bandet (filnummer noll). Här
använder vi asf
till mt
som betyder att vi vill gå till den absouluta
positionen (samma sak som att spola tillbaks bandet till noll, och sedan utgå
därifrån).
root@red-dwarf:/home# mt -f /dev/nst0 asf 0
root@red-dwarf:/home# tar tvf /dev/st0
drwxr-xr-x joakim/joakim 0 2016-10-11 22:00 joakim/
-rw-r--r-- joakim/joakim 3526 2016-10-11 21:56 joakim/.bashrc
-rw-r--r-- joakim/joakim 9 2016-10-11 21:59 joakim/story.txt
-rw------- joakim/joakim 499 2016-10-11 22:00 joakim/.bash_history
-rw-r--r-- joakim/joakim 185615 2015-12-19 14:25 joakim/wallpaperimage.jpg
-rw-r--r-- joakim/joakim 220 2016-10-11 21:56 joakim/.bash_logout
-rw-r--r-- joakim/joakim 501977 2016-09-03 08:46 joakim/toys-wallpaper-hd-16339-17046-hd-wallpapers.jpg
-rw-r--r-- joakim/joakim 200051 2015-12-19 14:28 joakim/2iphone.jpg
-rw-r--r-- joakim/joakim 655 2016-10-11 21:56 joakim/.profile
-rw-r--r-- joakim/joakim 6 2016-10-11 22:00 joakim/alice.txt
-rw------- joakim/joakim 599 2016-10-11 22:00 joakim/.viminfo
Mycket riktigt, här finns alla joakims filer. Nu spolar vi fram bandet till filnummer två och ser efter ifall lisas filer finns där.
root@red-dwarf:/home# mt -f /dev/nst0 asf 2
root@red-dwarf:/home# tar tvf /dev/st0
drwxr-xr-x lisa/lisa 0 2016-10-11 22:03 lisa/
-rw-r--r-- lisa/lisa 3526 2016-10-11 21:56 lisa/.bashrc
-rw-r--r-- lisa/lisa 553297 2011-11-08 20:10 lisa/visualization_-_sun_and_sky_demo.dwg
-rw------- lisa/lisa 414 2016-10-11 22:03 lisa/.bash_history
-rw-r--r-- lisa/lisa 866400 2013-01-29 21:51 lisa/FL_insurance_sample.csv.zip
-rw-r--r-- lisa/lisa 220 2016-10-11 21:56 lisa/.bash_logout
-rw-r--r-- lisa/lisa 655 2016-10-11 21:56 lisa/.profile
drwxrwxr-x lisa/lisa 0 2013-01-29 21:51 lisa/__MACOSX/
-rw-r--r-- lisa/lisa 603 2013-01-29 21:50 lisa/__MACOSX/._FL_insurance_sample.csv
-rw-r--r-- lisa/lisa 2107842 2016-10-08 21:40 lisa/big_buck_bunny_720p_2mb.mp4
-rw-r--r-- lisa/lisa 870367 2016-10-08 21:40 lisa/Sample-SQL-File-10000rows.sql
Japp, även lisas filer låg precis där de skulle, vid filposition två.
På detta viset arbetar man med bandbackuper. Mer information om
tar
och mt
finns i manualsidorna (man mt
och man tar
).
CyberInfo Sverige är ett IT-företag i NV-Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, BSD och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.