Ero sivun ”Cpio” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(Tar-ohjelman aliarvostettu isoveli.)
 
p (Lisätty linkkejä ja muuta pientä.)
Rivi 1: Rivi 1:
Komentoriviohjelma <tt>cpio</tt> on tiedostojen arkistointityökalu. Ohjelman nimi tulee sanoista '''C'''o'''p'''y '''I'''n '''O'''ut. <tt>Cpio</tt> käyttää omaa arkistoformaattia; arkistojen tiedostopääte on tyypillisesti <tt>.cpio</tt>. <tt>Cpio</tt>-ohjelma pystyy kuitenkin lukemaan ja kirjoittamaan muitakin kuin omaa tiedostoformaattia, esimerkiksi <tt>tar</tt>-arkistoja.
Komentoriviohjelma <tt>cpio</tt> on [[tiedosto|tiedostojen]] arkistointityökalu. Ohjelman nimi tulee sanoista '''C'''o'''p'''y '''I'''n '''O'''ut. <tt>Cpio</tt> käyttää omaa arkistoformaattia; arkistojen tiedostopääte on tyypillisesti <tt>.cpio</tt>. <tt>Cpio</tt>-ohjelma pystyy kuitenkin lukemaan ja kirjoittamaan muitakin kuin omaa tiedostoformaattia, esimerkiksi <tt>tar</tt>-arkistoja.


<tt>Cpio</tt> ei ole saavuttanut yhtä suurta suosiota kuin [[tar]]-ohjelma, mikä saattaa johtua cpio-ohjelman käyttötavasta, joka poikkeaa hieman muiden arkistointiohjelmien käyttötavasta. <tt>Cpio</tt>:lla on kuitenkin joitakin vahvuuksia verrattuna esimerkiksi <tt>tar</tt>-ohjelmaan.
<tt>Cpio</tt> ei ole saavuttanut yhtä suurta suosiota kuin [[tar]]-ohjelma, mikä saattaa johtua cpio-ohjelman käyttötavasta, joka poikkeaa hieman muiden arkistointiohjelmien käyttötavasta. <tt>Cpio</tt>:lla on kuitenkin joitakin vahvuuksia verrattuna esimerkiksi <tt>tar</tt>-ohjelmaan.
Rivi 5: Rivi 5:
==Käyttö==
==Käyttö==


<tt>Cpio</tt>-ohjelman käytön yhteydessä käytetään termejä ''In'' ja ''Out'' ehkä tutumpien ''Create'' ja ''Extract'' sijasta. Suunta on tiedostojärjestelmästä päin tarkasteltuna: ''In'' tarkoittaa siis tiedostojen lukua arkistosta tiedostojärjestelmään, ''Out'' vastaavasti tiedostojen kopioimista tiedostojärjestelmästä arkistoon (esimerkiksi nauha-aseman nauhalle).
<tt>Cpio</tt>-ohjelman käytön yhteydessä käytetään termejä ''In'' ja ''Out'' ehkä tutumpien ''Create'' ja ''Extract'' sijasta. Suunta on [[tiedostojärjestelmä|tiedostojärjestelmästä]] päin tarkasteltuna: ''In'' tarkoittaa siis [[tiedosto|tiedostojen]] lukua arkistosta tiedostojärjestelmään, ''Out'' vastaavasti tiedostojen kopioimista tiedostojärjestelmästä arkistoon (esimerkiksi nauha-aseman nauhalle).


Toinen merkittävä ero verrattuna esimerkiksi <tt>tar</tt>-ohjelmaan on se, että <tt>cpio</tt>-ohjelma lukee luodessaan arkistoa talletettavien tiedostojen nimet ohjelman syötteenä [[Standard Input|standard inputista]]. Useimmille muille arkistointiohjelmille arkistoitavien tiedostojen ja hakemistojen nimet annetaan komentorivin parametrina.
Toinen merkittävä ero verrattuna esimerkiksi <tt>tar</tt>-ohjelmaan on se, että <tt>cpio</tt>-ohjelma lukee luodessaan arkistoa talletettavien tiedostojen nimet ohjelman syötteenä [[Syötevirta|standard inputista]]. Useimmille muille arkistointiohjelmille arkistoitavien tiedostojen ja [[hakemisto|hakemistojen]] nimet annetaan [[komentorivi|komentorivin]] parametrina.


Tiedostojen nimien lukeminen ohjelman syötteenä tekee <tt>cpio</tt>-ohjelmasta "sovitetun parin" [[find]]-ohjelman kanssa. <tt>Cpio</tt>-ohjelmaa käytetäänkin useimmiten find-ohjelman kanssa, kuten alla olevista esimerkeistä nähdään.
Tiedostojen nimien lukeminen ohjelman syötteenä tekee <tt>cpio</tt>-ohjelmasta "sovitetun parin" [[find]]-ohjelman kanssa. <tt>Cpio</tt>-ohjelmaa käytetäänkin useimmiten find-ohjelman kanssa, kuten alla olevista esimerkeistä nähdään.
Rivi 17: Rivi 17:
  find proj1 | cpio -o > proj1.cpio
  find proj1 | cpio -o > proj1.cpio


luo arkistotiedoston, johon on talletettu koko <tt>proj1</tt>-alihakemiston sisältö. <tt>Cpio</tt>-ohjelma tulostaa arkiston sisällön [[Standard Output|standard outputiin]]. Jos arkiston haluaa tallentaa tiedostoon, pitää käyttää [[Komentotulkki|komentotulkin]] tiedostoonohjausmerkkiä >, tai vaihtoehtoisesti käyttää <tt>cpio</tt>-ohjelman <tt>-F</tt>-optiota. '''Huom!''' Luotavan arkistotiedoston ei ole hyvä sijaita arkistoitavan alihakemiston sisällä, sillä muuten lopputulos on ennalta arvaamaton, koska <tt>find</tt>-ohjelma löytää myös arkistotiedoston ja antaa sen syötteeksi <tt>cpio</tt>-ohjelmalle. Jos nykyisestä hakemistosta <tt>.</tt> halutaan luoda <tt>cpio</tt>-arkisto, sen voi tehdä esimerkiksi näin:
luo arkistotiedoston, johon on talletettu koko <tt>proj1</tt>-alihakemiston sisältö. <tt>Cpio</tt>-ohjelma tulostaa arkiston sisällön [[Syötevirta|standard outputiin]]. Jos arkiston haluaa tallentaa tiedostoon, pitää käyttää [[Komentotulkki|komentotulkin]] tiedostoonohjausmerkkiä >, tai vaihtoehtoisesti käyttää <tt>cpio</tt>-ohjelman <tt>-F</tt>-optiota. '''Huom!''' Luotavan arkistotiedoston ei ole hyvä sijaita arkistoitavan alihakemiston sisällä, sillä muuten lopputulos on ennalta arvaamaton, koska <tt>find</tt>-ohjelma löytää myös arkistotiedoston ja antaa sen syötteeksi <tt>cpio</tt>-ohjelmalle. Jos nykyisen hakemiston "<tt>.</tt>" sisällöstä halutaan luoda <tt>cpio</tt>-arkisto, sen voi tehdä esimerkiksi näin:


  find . | cpio -o > ../proj1.cpio
  find . | cpio -o > ../proj1.cpio


<tt>Find</tt>-ohjelman avulla voidaan hyvin joustavasti valita mitkä tiedostot halutaan mukaan arkistoon, ja mitkä jätetään sen ulkopuolelle. Esimerkiksi seuraavalla komennolla arkistoidaan hakemiston proj1 sisältämät <tt>.c</tt>- ja <tt>.h</tt>-tiedostot. Komento tallentaa myös alihakemistoista löytyvät <tt>.c</tt>- ja <tt>.h</tt>-tiedostot, ja säilyttää hakemistorakenteen täsmäävien tiedostojen osalta.
<tt>Find</tt>-ohjelman avulla voidaan hyvin joustavasti valita mitkä tiedostot halutaan mukaan arkistoon, ja mitkä jätetään sen ulkopuolelle. Esimerkiksi seuraavalla komennolla arkistoidaan hakemiston <tt>proj1</tt> sisältämät <tt>.c</tt>- ja <tt>.h</tt>-tiedostot. Komento tallentaa myös alihakemistoista löytyvät <tt>.c</tt>- ja <tt>.h</tt>-tiedostot, ja säilyttää hakemistorakenteen täsmäävien tiedostojen osalta.


  find proj1 -name "*.c" -o -name "*.h" | cpio -o > proj1src.cpio
  find proj1 -name "*.c" -o -name "*.h" | cpio -o > proj1src.cpio
Rivi 37: Rivi 37:
Ohjelma lukee arkiston oletusarvoisesti standard inputista, mutta arkistotiedosto voidaan myös ilmoittaa <tt>-F</tt>-optiolla.
Ohjelma lukee arkiston oletusarvoisesti standard inputista, mutta arkistotiedosto voidaan myös ilmoittaa <tt>-F</tt>-optiolla.


Standard inputin ja standard outputin käyttö syöttö- ja tulostuskanavana mahdollistaa arkistojen joustavan käsittelyn. Esimerkiksi voidaan arkisto lähettää datavirtana ssh-yhteyden yli toiseen koneeseen, jossa se puretaan:
Standard inputin ja standard outputin käyttö syöttö- ja tulostuskanavana mahdollistaa arkistojen joustavan käsittelyn. Arkisto voidaan esimerkiksi lähettää datavirtana ssh-yhteyden yli toiseen koneeseen, jossa se puretaan:


  cat proj1.cpio | ssh hemmo@kone 'cpio -id'
  cat proj1.cpio | ssh hemmo@kone 'cpio -id'

Versio 10. lokakuuta 2011 kello 15.23

Komentoriviohjelma cpio on tiedostojen arkistointityökalu. Ohjelman nimi tulee sanoista Copy In Out. Cpio käyttää omaa arkistoformaattia; arkistojen tiedostopääte on tyypillisesti .cpio. Cpio-ohjelma pystyy kuitenkin lukemaan ja kirjoittamaan muitakin kuin omaa tiedostoformaattia, esimerkiksi tar-arkistoja.

Cpio ei ole saavuttanut yhtä suurta suosiota kuin tar-ohjelma, mikä saattaa johtua cpio-ohjelman käyttötavasta, joka poikkeaa hieman muiden arkistointiohjelmien käyttötavasta. Cpio:lla on kuitenkin joitakin vahvuuksia verrattuna esimerkiksi tar-ohjelmaan.

Käyttö

Cpio-ohjelman käytön yhteydessä käytetään termejä In ja Out ehkä tutumpien Create ja Extract sijasta. Suunta on tiedostojärjestelmästä päin tarkasteltuna: In tarkoittaa siis tiedostojen lukua arkistosta tiedostojärjestelmään, Out vastaavasti tiedostojen kopioimista tiedostojärjestelmästä arkistoon (esimerkiksi nauha-aseman nauhalle).

Toinen merkittävä ero verrattuna esimerkiksi tar-ohjelmaan on se, että cpio-ohjelma lukee luodessaan arkistoa talletettavien tiedostojen nimet ohjelman syötteenä standard inputista. Useimmille muille arkistointiohjelmille arkistoitavien tiedostojen ja hakemistojen nimet annetaan komentorivin parametrina.

Tiedostojen nimien lukeminen ohjelman syötteenä tekee cpio-ohjelmasta "sovitetun parin" find-ohjelman kanssa. Cpio-ohjelmaa käytetäänkin useimmiten find-ohjelman kanssa, kuten alla olevista esimerkeistä nähdään.

Arkiston luonti

Arkisto luodaan -o-optiolla (Copy-out). Komento

find proj1 | cpio -o > proj1.cpio

luo arkistotiedoston, johon on talletettu koko proj1-alihakemiston sisältö. Cpio-ohjelma tulostaa arkiston sisällön standard outputiin. Jos arkiston haluaa tallentaa tiedostoon, pitää käyttää komentotulkin tiedostoonohjausmerkkiä >, tai vaihtoehtoisesti käyttää cpio-ohjelman -F-optiota. Huom! Luotavan arkistotiedoston ei ole hyvä sijaita arkistoitavan alihakemiston sisällä, sillä muuten lopputulos on ennalta arvaamaton, koska find-ohjelma löytää myös arkistotiedoston ja antaa sen syötteeksi cpio-ohjelmalle. Jos nykyisen hakemiston "." sisällöstä halutaan luoda cpio-arkisto, sen voi tehdä esimerkiksi näin:

find . | cpio -o > ../proj1.cpio

Find-ohjelman avulla voidaan hyvin joustavasti valita mitkä tiedostot halutaan mukaan arkistoon, ja mitkä jätetään sen ulkopuolelle. Esimerkiksi seuraavalla komennolla arkistoidaan hakemiston proj1 sisältämät .c- ja .h-tiedostot. Komento tallentaa myös alihakemistoista löytyvät .c- ja .h-tiedostot, ja säilyttää hakemistorakenteen täsmäävien tiedostojen osalta.

find proj1 -name "*.c" -o -name "*.h" | cpio -o > proj1src.cpio

Find-ohjelma mahdollistaa tiedostojen valitsemisen hyvin monipuolisesti, vaikkapa nimien, tiedoston omistajan tai aikaleiman mukaan. Tämä on find-ohjelman ominaisuus; lisätietoja find-ohjelman dokumentaatiosta.

Jos on epävarma siitä, mitkä kaikki tiedostot tallentuvat arkistoon, voi komentoa kuivaharjoitella jättämällä cpio-osan pois, jolloin find-komento tulostaa täsmäävien tiedostojen nimet.

Arkiston purku

Cpio-arkisto puretaan -i-optiolla (Copy-in). Lisäksi kannattaa käyttää -d-optiota, joka tarvittaessa luo alihakemistot, joihin tiedostot tallennetaan.

cpio -id < proj1.cpio

Ohjelma lukee arkiston oletusarvoisesti standard inputista, mutta arkistotiedosto voidaan myös ilmoittaa -F-optiolla.

Standard inputin ja standard outputin käyttö syöttö- ja tulostuskanavana mahdollistaa arkistojen joustavan käsittelyn. Arkisto voidaan esimerkiksi lähettää datavirtana ssh-yhteyden yli toiseen koneeseen, jossa se puretaan:

cat proj1.cpio | ssh hemmo@kone 'cpio -id'

Copy-pass

cpio-ohjelma voidaan myös suorittaa ns. Copy-pass -tilassa, joka yhdistää arkiston luonnin ja purun yhdeksi komennoksi. Tässä tilassa alihakemisto voidaan kopioida kokonaisuudessaan toiseen paikkaan tiedostojärjestelmässä. Copy-pass -tilassa kohdehakemisto annetaan komentoriviparametrina; hakemiston on oltava olemassa etukäteen. Kopioitavien tiedostojen nimet luetaan syötteenä aivan kuten Copy-out -tilassa.

find proj1 -name "*.c" -o -name "*.h" | cpio -pd proj1src-backup

Arkiston selaus

cpio-arkiston sisällä olevien tiedostojen ja hakemistojen nimet saa tulostettua -t-optiolla:

cpio -t < proj1.cpio

Lisätietoja

  • man cpio
  • info cpio

Katso myös

Tar