Tiedostojärjestelmä
Linuxissa, kuten muissakin UNIX-tyyppisissä käyttöjärjestelmissä, tiedostojärjestelmä on toteutettu yhtenä
puurakenteena, jolla on yksi juuri. Juuresta käytetään merkintää /
.
Koko muu tiedostojärjestelmä sijoittuu juuren alle hakemistoista muodostuvana
puuna. (Windows-ympäristöissä hakemistoista käytetään nimitystä kansio.)
Absoluuttinen polku
Kunkin tiedoston sijainti tiedostojärjestelmässä voidaan ilmaista sen absoluuttisena polkuna,
eli /
-merkeillä eroteltuna reittinä juuresta hakemistorakenteen läpi itse tiedostoon saakka.
Esimerkiksi, kun tiedostojärjestelmän juuren /
alla on hakemisto etc/
, jonka sisällä on
toinen hakemisto cups/
ja tämän sisällä tiedosto nimeltä classes.conf
,
niin tämän tiedoston absoluuttinen polku on:
/etc/cups/classes.conf
Suhteellinen polku
Huomattavaa on, että hakemistorakenteen erotinmerkkinä on kauttaviiva, eli "etukeno", kun Windows-järjestelmissä
erottimena on \
, eli "takakeno". Jos tiedoston sijainti halutaan ilmaista suhteessa johonkin muuhun
hakemistoon kuin juureen, käytetään suhteellista polkua. Esimerkiksi hakemiston /etc
suhteen edellä
tarkastellun tiedoston sijainti on cups/classes.conf
. Absoluuttisen ja suhteellisen polun erottaa
siitä, että absoluuttinen polku alkaa aina juuresta, eli merkillä /
.
Jokaisessa hakemistossa on lisäksi kaksi erityistä hakemistoa, .
ja ..
. Yhdellä pisteellä tarkoitetaan
hakemistoa itseään ja kahdella pisteellä sen "edeltäjää", eli "vanhempaa", eli hakemistoa, joka on yhden askeleen
juuren suuntaan. Siis esimerkiksi hakemistossa /etc/cups/
yksi piste tarkoittaa tätä hakemistoa itseään.
Toisin sanoen hakemisto /etc/cups/./
on sama kuin hakemisto /etc/cups/
. Vastaavasti hakemisto /etc/cups/../
on puolestaan sama kuin hakemisto /etc/
. Näin suhteellisella polulla voidaan viitata mihin tahansa
tiedostojärjestelmän tiedostoon. Esimerkiksi hakemistosta /etc/cups/
nähden suhteellinen polku
../X11/rgb.txt
viittaa samaan tiedostoon kuin absoluuttinen polku /etc/X11/rgb.txt
.
Liittäminen eli "mounttaaminen"
Windowsissa kullekin järjestelmään asennetulle kiintolevylle, optiselle levylle,
usb-muistille tai muulle siirrettävälle medialle annetaan oma levyasematunnus, esimerkiksi
C:\
, D:\
jne. Linuxissa ei tällaisia levyasematunnuksia käytetä vaan koko levyn sisältö liitetään
yhtenä puun haarana johonkin kohtaan hakemistopuuta. Esimerkiksi usb-porttiin kytketyn
muistitikun sisältö saatetaan liittää vaikka hakemiston /media/pesasa/6365-3030/
alle.
- Joku levyosio on tiedostojärjestelmän juurena
/
- Muut osiot ja mediat, kuten usb-levyt ja optiset levyt liitetään, eli mountataan, johonkin hakemistoon puussa.
- Ennen, ja joskus nykyäänkin, esimerkiksi
/home
ja/usr
olivat omilla levyosioillaan tai jopa toisella koneella. - Hakemistot
/bin
,/sbin
ja/lib
ovat siksi juuressa, että ne olisivat järjestelmän käytettävissä vaikka/usr
ei jostain syystä olisikaan liitettynä.
Vakiohakemistot
Järjestelmässä ovat tietyt vakiohakemistot, joilla ovat omat merkityksensä:
Hakemisto | Merkitys |
---|---|
/ |
Juurihakemisto, eli tiedostojärjestelmän hakemistopuun juuri. Kaikki tiedostot ja levyt ovat samassa puussa. |
/bin |
Järjestelmän oleellisimmat ajettavat tiedostot. Varmasti käytettävissä. |
/boot |
Käynnistykseen tarvittavia tiedostoja |
/cdrom |
Paikka johon optinen levy liitetään. |
/dev |
Kaikki laitteet ovat tässä hakemistossa edustettuina tiedostoina. Tiedostot eivät ole oikeasti levyllä vaan ovat virtuaalisia. Esim. /dev/sda on kiintolevy ja /dev/sda1 sen ensimmäinen osio. |
/etc |
Ohjelmien järjestelmänlaajuiset asetukset. |
/home |
Käyttäjien kotihakemistot. Esimerkiksi: /home/pesasa/ , /home/matti/ |
/lib |
Oleellisimpia ohjelmakirjastoja, joita ohjelmat hyödyntävät. Varmasti käytettävissä. |
/lost+found |
Levyntarkistuksessa löydetyt vaurioituneet tiedostot, joiden oikeaa paikkaa ei tiedetä. |
/media |
Hakemisto, jonka alle siirrettävät levyt, esim. muistitikut liitetään. |
/mnt |
Satunnaisia hakemistopuuhun liitettäviä tiedostojärjestelmiä varten. |
/opt |
Paketinhallinnan ulkopuolelta asennettuja ohjelmia. |
/proc |
Virtuaalisia tiedostoja, jotka edustavat käynnissä olevaa järjestelmää. Esim. /proc/cpuinfo sisältää tietoa prosessorista. |
/root |
root-käyttäjän kotihakemisto |
/run |
Käynnissä olevien ohjelmien ja palveluiden tietoja. Esim. palvelinprosessien prosessi-id:itä. |
/sbin |
Järjestelmän oleellisimmat ajettavat järjestelmätiedostot. Varmasti käytettävissä. |
/sys |
Virtuaalisia tiedostoja liittyen järjestelmään. |
/tmp |
Tilapäistiedostoille |
/usr |
Ohjelmat asentuvan tämän hakemiston alle. |
/usr/bin/ |
Ajettavat tiedostot |
/usr/sbin/ |
Ajettavat järjestelmän ylläpidon tiedostot |
/usr/lib/ |
Kirjastoja |
/usr/local/ |
Paketinhallinnan ulkopuolelta asennettuja ohjelmia |
/usr/share/ |
Mm. ohjelmien tiedostot omissa hakemistoissaan |
/usr/share/doc/ |
Pakettien dokumentaatioita |
/var |
Järjestelmän muuttuvia tiedostoja. Esim. www-palvelimen tarjoilemat tiedostot hakemiston /var/www/ tai /var/www/html/ alla ja logitiedostot hakemiston /var/log/ alla. |
Hakemistorakenne
Vaikka yllä oleva lista antaa selityksen, miksi UNIX-järjestelmien hakemistorakenne on sellainen kuin se on, on olemassa myös vähemmän kullattu selitys hakemistorakenteelle:
- Kirjoitus Busybox-listalla
- "Ken Thompsonilla ja Dennis Ritchiellä oli käytössään kaksi 1.5 MB:n kiintolevyä, joista toisessa oli järjestelmä ja toisessa käyttäjien tiedostot (
/usr
-hakemistossa). Kun järjestelmälevy tuli täyteen, sen hakemistorakenne (/bin
,/lib
, jne.) kopioitiin toiselle levylle/usr
:n alle. Kun tilaa saatiin taas lisää (uusi levy), liitettiin se/home
:ksi ja siirrettiin käyttäjien tiedostot sinne." - Jälkikäteen keksittiin selitykset, että
/bin
,/lib
,/sbin
jne. sisältävät ensin tarvittavat osat ja/usr
:n alla ovat vähemmän kriittiset jutut.
Tiedostojen hallinta
Ubuntun tiedostonhallinta aukeaa vasemman reunan palkin kuvakkeesta, sillä voi selata hakemistoja ja avata, siirtää sekä kopioida tiedostoja.
Tutki, mitä tiedostoja ja hakemistoja löydät sillä.
Tehtäviä
Tehtävät 3
Kirjoita vastaukset tiedostoon tehtava-3.txt
tai tehtava-3.odt
.
- Mitkä seuraavista tiedostopoluista ovat absoluuttisia ja mitkä suhteellisia?
/proc/cpuinfo
etc/X11/rgb.txt
/var/log/./messages
/etc/cups/../../usr/share/doc/nano/
doc/nano/../bash/README
- Kirjoita seuraavat polut "sievempään" muotoon:
/etc/X11/../skel/./.bashrc
/./././home/../
/usr/lib/.././share/doc/
/etc/X11/../cron.d/././anacron
- Seuraavassa on annettu hakemisto, jossa olet sekä suhteellinen polku johonkin tiedostoon.
Muodosta tiedoston absoluuttinen polku.
- Olet hakemistossa:
/etc/apache2/
suhteellinen polku:../cron.d/anacron
- Olet hakemistossa:
/home/pekka/
suhteellinen polku:../../media/pekka/MULTIBOOT/home-rw
- Olet hakemistossa:
/home/paula/Documents/
suhteellinen polku:../Music/./Juice/Marilyn.ogg
- Olet hakemistossa: