Jak zabalit soubory do archívů po 1 GB

Jak zabalit soubory do archívů po 1 GB
« kdy: 24. 03. 2010, 19:47:49 »
Dobrý den,
potřeboval bych poradit (unix)... v jenom adresáři mám bambilión souborů zhruba od 0.1MB do 50 MB - celkem asi 20 GB. Soubory jsou různého jména. Já bych potřeboval soubory zatarovat - popř. zazipovat do souborů max 1GB. Neporadil by někdo jak na to ? Alespoň nápovědu..... na FS nemůžu mít soubory větší jak 2GB. ...
Díky za nakopnutí...
M.
« Poslední změna: 24. 03. 2010, 21:09:37 od Petr Krčmář »


wamba

Re: shell (možná tar & gzip)
« Odpověď #1 kdy: 24. 03. 2010, 20:31:52 »
Teoreticky něco jako
Kód: [Vybrat]
tar  cj *|split -b 1GBale raději si to nějak ověř

Martin Mikala

  • *
  • 26
  • Netvrdím to, ale možná je to pravda.
    • Zobrazit profil
    • E-mail
Re: shell (možná tar & gzip)
« Odpověď #2 kdy: 24. 03. 2010, 20:51:49 »
Řešil jsem něco podobného a to jak zazálohovat fotky na DVD, tak aby se k nim bylo možno dostat nezávisle na ostatních DVD. Zatím jsem na podobnou archivační aplikaci nenarazil.
Řešením by mohl být skript co by vytvořil tar.gz z jednoho souboru, zkontroloval jeho velikost a pokud by nepřekračovala nastavenou hodnotu, tak by do tar.gz přidal další soubor a tak dokola, až by se přeplnila velikost. A pak by se začal vytvářet další tar.

Maestro

Re: Jak zabalit soubory do archívů po 1 GB
« Odpověď #3 kdy: 25. 03. 2010, 06:55:31 »
velice podobny problem jsem jiz jednou resil. pustit tar na pozadi, dat mu cilovy archiv a jako seznam souboru mu dat input file, ktery ale ve skutecnosti bude FIFO file(jmenna pipa). No pak uz jenom cyklus, kterej do ty pipy bude davat jmena souboru(ve vasem pripade tak po davkach 10 souboru), pak mu da nejakej neexistujici jmeno, a az se v STDERR tar-u ukaze chybova hlaska, mame zapsano na disk v archivu, zkontrolujeme velikost, pokud malo, zopakujeme, pokud akorat, posleme EOF, tar se ukonci, spustime ho znova s dalsim archivem a a furt dokola z do konce :) Me to takhle funguje na rozdeleni cca 8TB pole na ~1600GB LTO3 pasky... Prikladam dulezite casti kodu:

# cekani na chybovou hlasku neexistujiciho souboru v logu TAR-u. Az teprve potom vim, ze je vsechno ulozeny a ceka se na dalsi soubor...
${TAIL_PATH} ${FILENAME_STATUS} 2>/dev/null| ${GREP_PATH} ${NON_EXISTING_FILENAME} > /dev/null 2>&1

# vytvoreni  FIFO souboru,kerym se TARu predavaji jmena souboru, ktera ma pridat do archivu...
${MKFIFO_PATH} ${FILENAME_FIFO}

# spusteni TARu na pozadi, ktery vytvari vlastni archiv ${BACKUP_DST}, cte seznam souboru z ${FILENAME_FIFO}, vystup pise do ${FILENAME_STATUS}, vcetene STDERR
${CAT_PATH} ${FILENAME_FIFO} | ${TAR_PATH} -c -T - -f ${BACKUP_DST} 2>&1 | ${TEE_PATH} -a ${FILENAME_STATUS} >> ${BACKUP_REPORT} &

# vkladani jmena souboru/adresaru do FIFO pro TAR....
${ECHO_PATH} `dirname ${vmx}`

PS: vsechny promenny, ktery koncej _PATH jsou jenom cesty k realnym binarkam, takze treba CAT_PATH=/bin/cat

Bohuzel nevidim moznost prikladani priloh, jinak byc sem dal celej skript, jestli budete chtit pomoct, rad pomuzu na adrese root@safar.info. Sale skript za vas psat nebudu :)