Fórum Root.cz

Hlavní témata => Software => Téma založeno: maruna23 24. 03. 2010, 19:47:49

Název: Jak zabalit soubory do archívů po 1 GB
Přispěvatel: maruna23 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.
Název: Re: shell (možná tar & gzip)
Přispěvatel: wamba 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ěř
Název: Re: shell (možná tar & gzip)
Přispěvatel: Martin Mikala 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.
Název: Re: Jak zabalit soubory do archívů po 1 GB
Přispěvatel: Maestro 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 :)