Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Lisää komentoja tiedostojen hallintaan

Tiedostojen etsiminen find-komennolla

find-komentoa käytetään tiedostojen etsimiseen Linuxin tiedostojärjestelmästä. Komento vaatii kaksi argumenttia:

  1. sen hakemiston nimen, josta tiedostoa etsitään
  2. hakuehdon

Komennon perussyntaksi on:

find directory search_condition 

Hakuehto perustuu tavallisesti tiedoston nimeen (-name value), mutta voit käyttää myös päivämääriin tai käyttöoikeusasetuksiin liittyviä valintoja. find-komennolla voi olla myös kolmas argumentti, joka määrittää, mitä löydetyille tiedostoille tehdään. Oletustoiminto, jota käytetään, jos komentoargumenttia ei anneta, on -print, joka tulostaa osuvien tiedostojen polun ja nimen. Seuraava esimerkkikomento etsii tiedostoa nimeltä dataset27.dat nykyisestä hakemistosta. Tässä tapauksessa tiedosto löytyy alihakemistosta dataset3.

$ find ./ -name dataset27.txt
./dataset3/dataset27.txt

Nimeen perustuvissa hakuehdoissa voi käyttää myös jokerimerkkejä. Huomaa kuitenkin, että tällöin hakuehto täytyy laittaa lainausmerkkeihin. Seuraava komento etsii kotihakemistostasi ($HOME) kaikki tiedostot, joiden pääte on .tmp.

find $HOME/ -name "*.tmp"

Viimeisissä find-komennon esimerkeissä käytämme -mtime-hakuehtoa, joka valitsee tiedostot niiden muokkausajan perusteella. Seuraavalla komennolla voit tarkistaa, mitä tiedostoja hakemistossa /scratch/project_2001234 ei ole käytetty viimeisten 28 päivän aikana:

find /scratch/project_2001234 -mtime +28

Tässä +28 tarkoittaa "yli 28 päivää". Vastaavasti miinusmerkki (-) tarkoittaa alle. Jos siis haluat nähdä, mitä tiedostoja on muokattu nykyisessä hakemistossasi alle 24 tuntia sitten, voit käyttää komentoa:

find ./ -mtime -1

file-komento kertoo tiedostotyypin

file-komento arvioi annetun tiedoston tyypin. Komennon syntaksi on:

file file_name

Komento tulostaa tiedoston nimen ja yhden rivin kuvauksen tiedostotyypistä. file-komento tunnistaa useimmat yleiset tekstitiedosto- muodot, pakatut tiedostot ja Linuxin suoritettavat tiedostot. Se tutkii myös tiedoston sisältöä ja yrittää arvioida esimerkiksi, sisältääkö tavallinen tekstitiedosto ohjelmakoodia tai joitakin yleisesti käytettyjä datan muotoilutyyppejä, kuten XML:ää. Huomaa kuitenkin, että file ei usein onnistu luokittelemaan oikein sovelluskohtaisia tiedostoja. Jos tiedosto on binääritiedosto, jota file-komento ei tunnista, se ilmoitetaan data-tiedostoksi.

Alla olevassa esimerkissä luetellaan kaikkien nykyisessä työhakemistossa olevien tiedostojen tyypit.

$ file ./*
./a.out:                   ELF 64-bit MSB MIPS-IV executable, MIPS, version 1
./common.py:               a python script text executable .
/data_old.gz:              gzip compressed data, from Unix
./data.txt:                ASCII text
./instrction.html:         HTML document text
./molecule.msv:            data
./output4.jpg:             JPEG image data, JFIF standard 1.01
./outout4.png:             PNG image data, 640 x 480, 4-bit colormap
./output4.xml:             XML document text
./poster1.pdf:             PDF document, version 1.4
./report.doc:              Microsoft Office Document

Laske rivit ja merkit wc:llä

Komento wc (Word Count) on työkalu, jolla voidaan laskea merkkien (-m), sanojen (-w) tai rivien (-l) määrä, jonka Linuxin tekstitiedosto sisältää. wc-komennon yleisin käyttötapa on tarkistaa nopeasti tiedoston rivimäärä:

wc -l file_name

Toinen yleinen käyttötapa on tarkistaa, kuinka monta riviä komennon tuloste sisältää. Esimerkiksi seuraava komento antaisi nykyisessä hakemistossa olevien .dat-päätteisten tiedostojen määrän.

ls *.dat | wc -l

Kahden tiedoston vertailu diff:llä

diff-komentoa voidaan käyttää kahden tiedoston vertailuun. diff käy tiedostot läpi rivi riviltä ja tulostaa rivit, jotka eivät ole identtisiä. diff on hyödyllisimmillään silloin, kun sinun täytyy verrata kahta lähes samanlaista tiedostoa, kuten saman ohjelmatiedoston kahta versiota. Perus- syntaksi on:

diff file1 file2

Tarkistussummien käyttäminen onnistuneen datan tallennuksen tai siirron varmistamiseen

Tarkistussummat tarjoavat keinon varmistaa, että datatiedosto säilyy täysin muuttumattomana tallennuksen tai kopioinnin aikana. Tarkistussummien idea perustuu algoritmiin, joka laskee tiedoston sisällön perusteella luvun tai merkkijonon. Tarkistussummamerkkijono lasketaan ja tallennetaan ennen kuin tiedosto siirretään tallennusmedialle tai kopioidaan uuteen sijaintiin. Myöhemmin, kun data haetaan tallennuksesta tai kopiointiprosessi on valmis, haetuille tai kopioiduille tiedostoille lasketaan uusi tarkistussumma. Jos uusi tarkistussumma on sama kuin aiemmin laskettu, voimme olla melko varmoja siitä, että data on säilynyt täysin muuttumattomana.

Yksi yleisimmistä tarkistussumma-algoritmeista on md5, jota käytetään usein datatiedostojen oikeellisuuden varmistamiseen. Esimerkiksi monien internetissä saatavilla olevien tieteellisten aineistojen mukana toimitetaan luettelo md5-summista. Md5-summa on aina 32 merkkiä pitkä tekstimerkkijono. Tällä merkkijonolla on hyvän tarkistussumman ominaisuudet: se ei kerro mitään lähdetiedoston varsinaisesta sisällöstä, ja mikä tahansa muutos alkuperäiseen tiedostoon tuottaa täysin erilaisen tarkistussumman. Muita usein käytettyjä tarkistussumma-algoritmeja ovat SHA (Secure Hash Algorithm), jota käytetään usein kryptografiassa, ja CRC (Cyclic Redundancy Check), joka on yleinen datansiirrossa.

Alla oleva esimerkki näyttää, miten md5sum-komentoa käytetään CSC:n ympäristössä. Tiedoston md5-tarkistussumma lasketaan komennolla:

md5sum file_name

Esimerkiksi:

$ md5sum poster1.pdf
cc494699398122a6b6d93a5a69bd2667 poster1.pdf

Voit tallentaa tarkistussumman helposti tiedostoon ohjaamalla komennon tulosteen uuteen tiedostoon >-merkillä.

md5sum poster1.pdf > poster1.pdf.md5

Yllä oleva komento tallentaa tarkistussumman ja tiedoston nimen uuteen tiedostoon nimeltä poster1.pdf.md5.

Tiedostojoukon tarkistaminen md5-summaluetteloa vasten tehdään käyttämällä valintaa -c.

md5sum -c checksum_list

Esimerkiksi tiedoston poster1.pdf oikeellisuuden tarkistamiseen aiemmin luodun tarkistussummatiedoston poster1.pdf.md5 avulla käytä komentoa:

$ md5sum -c poster1.pdf.md5
poster1.pdf: OK

Tiedostojen salaaminen GPG:llä

Huomaa

Jos työskentelet CSC:llä sensitiivisen datan kanssa, katso sensitiivisen datan palveluiden opas.

Tiedostojen salausta voidaan käyttää datasi turvallisuuden parantamiseen. Normaaleissa olosuhteissa (eli silloin, kun et työskentele sensitiivisen datan kanssa) CSC:ssä sijaitsevien tiedostojen salaaminen ei ole tarpeen. Tiedostoihin pääsee oletusarvoisesti käsiksi vain käyttäjä itse. Periaatteessa CSC:n järjestelmänvalvojat voivat kuitenkin lukea kaiken datan CSC:n palvelimilla. Joissakin tilanteissa ylläpitäjien voi olla tarpeen tarkistaa tiedostojen nimet ja koot, mutta CSC:n ylläpitäjäkäytäntö kieltää tiukasti käyttäjien datatiedostojen sisällön lukemisen. Salaus voi kuitenkin olla järkevää esimerkiksi silloin, jos sinun täytyy kopioida dataa CSC:n ulkopuolelle tai jos datan omistaja vaatii salausta.

CSC:llä voit käyttää GPG-ohjelmaa tiedostojesi salaamiseen. GPG:tä käytetään usein salausavainparien luomiseen sähköpostin ja muun datansiirron suojaamiseksi. Tässä luvussa näytämme kuitenkin vain, miten GPG:tä voidaan käyttää yksittäisten tiedostojen salaamiseen.

Perussyntaksi tiedoston salaamiseen gpg-komennolla on:

gpg -c file_name

Komento pyytää käyttäjää määrittämään tiedostolle salasanan. Tämä salasana ei ole eikä sen pidä olla millään tavalla yhteydessä CSC- salasanaasi. Kun salasana on vahvistettu, komento tekee salatun kopion annetusta tiedostosta. Oletusarvoisesti salaus tehdään CAST5- algoritmilla, mutta myös useita muita algoritmeja voidaan käyttää.

GPG-salatun tiedoston avaamiseen anna komento:

gpg gpg_encrypted_file 

GPG-esimerkki

Oletetaan, että meillä on tiedosto my_file.txt, jonka haluamme salata. Tämä voidaan tehdä komennolla:

gpg -c my_file.txt

Kun komento käynnistetään, näkyviin tulee seuraava kehote:

Enter passphrase:

Nyt voit kirjoittaa tiedostolle minkä tahansa salasanan. Tässä tapauksessa käytämme seuraavaa salasanaa: y8kIeg%a. Kun salasana on kirjoitettu, ohjelma pyytää sinua vahvistamaan sen:

Repeat passphrase:

Kun salaus on valmis, meillä on kaksi tiedostoa: alkuperäinen tiedosto ja sen salattu versio, jonka pääte on .gpg.

$ ls  -l
-rw-------+ 1 kkayttaj csc 1291176 Feb 11 15:57 my_file.txt
-rw-------+ 1 kkayttaj csc  313848 Feb 11 16:05 my_file.txt.gpg

Huomaa, että tässä tapauksessa salattu tiedosto on alkuperäistä pienempi. Nyt voimme poistaa alkuperäisen tiedoston.

rm my_file.txt

Myöhemmin, esimerkiksi sen jälkeen kun tiedosto on kopioitu johonkin toiseen sijaintiin, voit purkaa datan komennolla:

gpg my_file.txt.gpg

Ohjelma pyytää nyt salasanaa, jota käytit salauksessa (tässä tapauksessa: y8kIeg%a). Tämän jälkeen sinulla on jälleen kaksi tiedostoa: salattu tiedosto my_file.txt.gpg ja alkuperäinen, luettava tiedosto my_file.txt. Huomaa, että jos unohdat salatun tiedostosi salasanan, kukaan ei voi avata tiedostoa!

Tiedostojen ja hakemistojen käyttöoikeuksien hallinta

Sadat käyttäjät käyttävät CSC:n laskenta- ja tallennusympäristöjä. Jotta tiedostot pysyvät yksityisinä ja järjestyksessä, jokainen CSC:n Linux- ympäristön tiedosto ja kansio on tietyn käyttäjätilin omistuksessa. Linux- järjestelmissä jokaisella tiedostolla on kolme käyttäjäluokkaa: owner, group ja others. Kullekin näistä käyttäjäluokista on kolme käyttöoikeusasetusta: luku-, kirjoitus- ja suoritusoikeus.

Oletusarvoisesti vain tiedoston omistaja voi lukea ja muokata (eli kirjoittaa) luomiaan tiedostoja ja hakemistoja. Muilla käyttäjillä ei ole tiedostoihin mitään käyttöoikeuksia. Tavallisesti tämä asetus on hyvä, koska se pitää datasi yksityisenä. Jos kuitenkin haluat jakaa dataa tai suorittaa itse kirjoittamiasi ohjelmia, käyttöoikeuksia täytyy muuttaa.

Huomaa, että Puhdin ja Mahdin projektikohtaiset levyalueet ovat poikkeus tähän sääntöön. Niissä myös muut samaan UNIX-ryhmään kuuluvat projektin jäsenet saavat oletusarvoisesti täydet oikeudet muiden käyttäjien luomiin tiedostoihin.

Voit tarkistaa käyttöoikeudet komennolla ls -l. Katsotaanpa esimerkkitiedostolistausta, jota käytettiin aiemmin ls -la -esimerkissä. Tässä tiedostolistauksessa toisen ja kymmenennen sarakkeen väliset merkit sisältävät tiedot käyttöoikeuksista.

Näistä käyttöoikeusmerkeistä kolme ensimmäistä näyttävät omistajan oikeudet, seuraavat kolme näyttävät UNIX-ryhmän jäsenten käyttöoikeudet ja viimeiset kolme merkkiä kaikkien muiden käyttäjien oikeudet. Alla on ls -la-komennon esimerkkituloste:

total 26914
drwx------+  3 kkayttaj csc       10 Dec 22 09:12 .
drwxr-xr-x  20 root     root       0 Dec 22 09:12 ..
drwx------+ 42 kkayttaj csc      472 Dec 22 09:07 ..
-rwxr-x---+  1 kkayttaj csc     1648 Dec 22 09:01 .cshrc
-rw-------+  1 kkayttaj csc       93 Dec 22 09:01 .my.cnf
-rw-------+  1 kkayttaj csc       48 Dec 22 09:05 Test.txt
-rw-------+  1 kkayttaj csc   878849 Jan 19  2009 input.table
drwxr-xr-x+  2 kkayttaj csc        2 Dec 22 09:11 project1
-rw-------+  1 kkayttaj csc 26432051 Dec 22 09:08 results.out
-rw-------+  1 kkayttaj csc       25 Mar 27  2009 sample.data
-rw-------+  1 kkayttaj csc       49 Mar 27  2009 test.txt

Tiedoston Test.txt tapauksessa asetus on: rw-------. Tämä tarkoittaa, että tiedoston omistajalla (kkayttaj) on oikeus lukea (r) ja kirjoittaa (w) tiedostoa. Muilla käyttäjillä ei ole oikeuksia tähän tiedostoon. Tiedoston .cshrc tapauksessa määrittely on: rwxr-x---. Tässä tapauksessa omistajalla on myös suoritusoikeus (x) tiedostoon, ja myös muilla ryhmään csc kuuluvilla käyttäjillä on oikeus lukea (r) ja suorittaa (x) tiedosto.

Käyttöoikeuksien hallinta komentorivillä

Komentorivillä käyttöoikeuksia voidaan muuttaa komennolla chmod. Tämä komento tarvitsee kaksi argumenttia:

  1. merkkijonon, joka määrittää, mitä muutoksia tehdään, ja
  2. argumentin, joka määrittää kohdetiedoston tai -hakemiston

Ensimmäisessä argumentissa määritetään ensin käyttäjäluokka: u (user eli omistaja), g (group) tai o (others). Sen jälkeen määritetään plus- tai miinusmerkillä, ollaanko oikeuksia lisäämässä (+) vai poistamassa (-). Lopuksi määritetään, mitä oikeuksia lisätään tai poistetaan. Jos esimerkiksi haluat sallia kaikkien ryhmän jäsenten lukea tiedoston Test.txt, anna komento:

chmod g+r Test.txt

Voit tarkistaa vaikutuksen ls -l-komennolla:

$ ls -l Test.txt
-rw-r-----+  1 kkayttaj csc       48 Dec 22 09:05 Test.txt 

Voit määrittää useita käyttäjäluokkia ja oikeuksia samalla kertaa. Esimerkiksi

chmod go+rwx Test.txt

lisäisi kaikki käyttöoikeudet kaikille käyttäjille tiedostoon Test.txt. Jos haluat poistaa oikeudet, vaihda +-merkki --merkiksi.

chmod go-rwx Test.txt

Huomaa, että oletusarvoisesti hakemiston käyttöoikeuksien muuttaminen ei muuta kohdehakemiston tiedostojen ja alihakemistojen käyttöoikeuksia. Siksi komento

chmod g+w project1

ei sallisi muiden ryhmän jäsenten muokata hakemiston project1 tiedostoja. Voit käyttää valintaa -R, jotta sama käyttöoikeusmuutos tehdään rekursiivisesti eli kaikille kohdehakemiston tiedostoille ja alihakemistoille:

chmod -R g+w project1

Voit käyttää komentoa groups tarkistaaksesi, mihin ryhmiin kuulut.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta