Kirjoittaja Aihe: Tiedoston pakkausta komentorivillä... [Ratkaistu]  (Luettu 2596 kertaa)

jarilind

  • Käyttäjä
  • Viestejä: 30
    • Profiili
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?
« Viimeksi muokattu: 05.02.10 - klo:00.26 kirjoittanut jarilind »

peran

  • Vieras
Vs: Tiedoston pakkausta komentorivillä...
« Vastaus #1 : 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?
« Viimeksi muokattu: 03.02.10 - klo:23.17 kirjoittanut peran »

jarilind

  • Käyttäjä
  • Viestejä: 30
    • Profiili
Vs: Tiedoston pakkausta komentorivillä...
« Vastaus #2 : 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ä! :)

peran

  • Vieras
Vs: Tiedoston pakkausta komentorivillä...
« Vastaus #3 : 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

SuperOscar

  • Käyttäjä
  • Viestejä: 4057
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Tiedoston pakkausta komentorivillä...
« Vastaus #4 : 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.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

peran

  • Vieras
Vs: Tiedoston pakkausta komentorivillä...
« Vastaus #5 : 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.

jarilind

  • Käyttäjä
  • Viestejä: 30
    • Profiili
Vs: Tiedoston pakkausta komentorivillä...
« Vastaus #6 : 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?
« Viimeksi muokattu: 03.02.10 - klo:23.59 kirjoittanut jarilind »

SuperOscar

  • Käyttäjä
  • Viestejä: 4057
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Tiedoston pakkausta komentorivillä...
« Vastaus #7 : 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
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

peran

  • Vieras
Vs: Tiedoston pakkausta komentorivillä... [Ratkaistu]
« Vastaus #8 : 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.