Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: jarilind - 03.02.10 - klo:21.25

Otsikko: Tiedoston pakkausta komentorivillä... [Ratkaistu]
Kirjoitti: jarilind - 03.02.10 - klo:21.25
Iltaa! :)

Minun pitäisi saada pakattua yli 3000 kpl seuraavanlaisia tiedostoja/hakemistoja.

aaa.bin
aaa hakemisto

aab.bin
aab hakemisto

xyz.bin
xyz hakemisto

Nämä kaikki ovat yhdessä kansiossa ja jokainen pitäisi saada omaan pakettiinsa, siten että paketissa aaa.zip on aaa.bin ja aaa hakemisto ja niin edelleen...
Tiedostomuotona voi olla myös jokin muu pakkaus kuin zip, zip olisi kuitenkin helpoin jakelua ajatellen.

Millä/miten tämä onnistuisi helpoiten?
Otsikko: Vs: Tiedoston pakkausta komentorivillä...
Kirjoitti: peran - 03.02.10 - klo:23.06
Jakelulla ei liene väliä.

Jos tiedostot on suuria, niin silloin alkaa koneteholla olemaan jo jotain merkitystä.

Todennäköisesti helpoiten linukassa onnistuu tekemällä siitä ensin tar-pallo, ja sen jälkeen pakata.

Tarkennusta voisi olla ihan kiva saada, jotta ymmärtäisin ongelmaa paremmin.

aaa.bin - on ilmeisesti tiedosto, joka pitää pakata
aaa hakemisto ilmeisesti pitää myös pakata. Onko kyseinen hakemisto tyhjä ?

Sitten onko hakemistoja järjestelmällisesti kaikki variaatiot:
aaa, aab, aac, ... , zzx, zzy,zzz

Vai onko ne yleensäkin muotoa
tiedosto.bin
tiedosto - hakemisto.

Ja nämä parit pitää pakata.

Tuleeko pakkausten olla omassa kansiossaan, vai pitääkö niiden olla kyseisessä hakemistossa?
no, mv-siirtää ne joka tapauksessa nopeasti oikeaan paikkaansa.

Lisäksi kun teet sitä kannattaa ensin testata n. 50-tiedostoparilla, toimiiko tekemäsi.
50 siksi, että kerkeää tulla myös aba vaihtoehto.

Jos noi ei ole kovin isoja tiedostoja, niin ei siihen hirvittävästi aikaakaan mene. Vähän trimmaa scriptiä.

Tässä pientä alkua.
Koodia: [Valitse]
#!/bin/bash
for f in *.bin
do
echo "${f%.bin}"
tar -c "${f%.bin}" $f|gzip>"${f%.bin}.tar.gz"
done

Toimiskohan noinkin yksinkertainen?
Otsikko: Vs: Tiedoston pakkausta komentorivillä...
Kirjoitti: jarilind - 03.02.10 - klo:23.14
Tarkennusta voisi olla ihan kiva saada, jotta ymmärtäisin ongelmaa paremmin.

aaa.bin - on ilmeisesti tiedosto, joka pitää pakata
aaa hakemisto ilmeisesti pitää myös pakata. Onko kyseinen hakemisto tyhjä ?

Hakemisto ei ole tyhjä.
Ja tiedostot+hakemisto ovat luokkaa 2-5mb kpl.

Sitten onko hakemistoja järjestelmällisesti kaikki variaatiot:
aaa, aab, aac, ... , zzx, zzy,zzz

Vai onko ne yleensäkin muotoa
tiedosto.bin
tiedosto - hakemisto.

Ja nämä parit pitää pakata.

Nimet ei ole järjestelmällisiä, voi olla ihan mitä vaan.
Ja juurikin saman niminen tiedosto (aaa.bin) ja hakemisto (aaa) täytyy saada samaan pakettiin.

Tuleeko pakkausten olla omassa kansiossaan, vai pitääkö niiden olla kyseisessä hakemistossa?
no, mv-siirtää ne joka tapauksessa nopeasti oikeaan paikkaansa.

Paketit voi tehdä samaan hakemistoon jossa aaa.bin tiedostot ovat.
Lisäksi kun teet sitä kannattaa ensin testata n. 50-tiedostoparilla, toimiiko tekemäsi.
50 siksi, että kerkeää tulla myös aba vaihtoehto.

Jos noi ei ole kovin isoja tiedostoja, niin ei siihen hirvittävästi aikaakaan mene. Vähän trimmaa scriptiä.

Tässä pientä alkua.
Koodia: [Valitse]
for f in *.bin
do
echo "${f%.bin}"
...
done
[/quote]

Kokeilen mites saisin ton toimimaan, kiitos jo tästä! :)
Otsikko: Vs: Tiedoston pakkausta komentorivillä...
Kirjoitti: peran - 03.02.10 - klo:23.22
Kokeilen mites saisin ton toimimaan, kiitos jo tästä! :)

Mä korjasin jo ehkä toimivankin version.

Koodia: [Valitse]
#!/bin/bash
for f in *.bin
do
echo "${f%.bin}"
tar -c "${f%.bin}" $f|gzip>"${f%.bin}.tar.gz"
done
Otsikko: Vs: Tiedoston pakkausta komentorivillä...
Kirjoitti: SuperOscar - 03.02.10 - klo:23.23
Kannattaa ehkä käyttää tarrin -z- tai -j-vipua, välttää putkituksen:

Koodia: [Valitse]
for f in *.bin; do
echo tar --create -vjf ${f%.bin}.tar.bz2 $f ${f%.bin}
done

Tämä siis tekee .tar.bz2-tiedostoja.
Otsikko: Vs: Tiedoston pakkausta komentorivillä...
Kirjoitti: peran - 03.02.10 - klo:23.42
Tämä siis tekee .tar.bz2-tiedostoja.

Joops, noita tiedostoja ei ole sika paljon, joten bz2 on paremmin pakkaavana järkevämpi valinta.
Otsikko: Vs: Tiedoston pakkausta komentorivillä...
Kirjoitti: jarilind - 03.02.10 - klo:23.52
Koodia: [Valitse]
#!/bin/bash
for f in *.bin; do
tar --create -vjf ${f%.bin}.tar.bz2 $f ${f%.bin}
done

Tämä scripti toimii, piti vain poistaa echo tar käskyn edestä  että suoritti sen.

Kiitos kaikille apua tarjonneille! :)

Vielä kun saisi .zip, mutta tar ei tainnu siihen taipua?
Otsikko: Vs: Tiedoston pakkausta komentorivillä...
Kirjoitti: SuperOscar - 04.02.10 - klo:00.24
Tämä scripti toimii, piti vain poistaa echo tar käskyn edestä  että suoritti sen.

Heh, olisin voinut itsekin sen siitä poistaa – se oli vain testitarkoituksiani varten :)

Lainaus
Vielä kun saisi .zip, mutta tar ei tainnu siihen taipua?

Juu ei, mutteipa tarvitsekaan:

Koodia: [Valitse]
for f in *.bin; do
zip -r ${f%.bin}.zip $f ${f%.bin}
done
Otsikko: Vs: Tiedoston pakkausta komentorivillä... [Ratkaistu]
Kirjoitti: peran - 04.02.10 - klo:00.30
Jaahas SuperOscar oli nopeampi...

Taisit kuitenkin jäädä SuperOscarille pullakaffet auki. No se on yliopistossa, jossa kahvi on halpaa.