Dávková archivace celé adresářové struktury

jv76

Dávková archivace celé adresářové struktury
« kdy: 20. 11. 2021, 22:01:50 »
Dobrý den,

prosím, netušíte jestli existuje archivační software který dokáže projít celou adresářovou strukturu a postupně ji zazipovat - všechny soubory a podadresáře? Příklad:

adresář
-- 3 podadresáře
-- 2 soubory

výsledkem by byl zip, v něm 3 zazipované poadresáře (každý zvlášť) a 2 soubory (taky každý zvlášť).

Podadresářů jsou nižší tisíce (maximálně v třech úrovních), objem dat cca 8 TB.

Neumím s příkazovým řádkem, hledám tedy skutečně nějakou utilitu (je jedno zda win či OS X).

Díky moc.

j.
« Poslední změna: 21. 11. 2021, 12:45:08 od Petr Krčmář »


_Jenda

  • *****
  • 1 605
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:dávková archivace celé adresářové struktury
« Odpověď #1 kdy: 21. 11. 2021, 01:20:07 »
Zadání mi přijde jako blbost, protože ho interpretuju jako že chceš rekurzivně mít zip v zipu v zipu v zipu.
Neumím s příkazovým řádkem
Tak to je na čase se naučit. Prototyp pro nerekurzívní variantu:
Kód: [Vybrat]
mkdir -p out
for f in adresář/*; do
  zip -r "out/`basename "$f"`.zip" "$f"
done
zip -r out.zip out/*
A pokud ti nesedne shell, tak to není problém udělat třeba v Pythonu pomocí os.listdir a zip knihovny.
« Poslední změna: 21. 11. 2021, 01:21:39 od _Jenda »

PanVP

Re:dávková archivace celé adresářové struktury
« Odpověď #2 kdy: 21. 11. 2021, 02:31:09 »
Už skoro spím, ale všechno, co je v zipu, je přeci zazipované.
Asi každý "Zip" umí zazipovat adresář včetně souborů v podadresářích.

Ale předpokládejme, že máte pro své konání nějaký důvod a chcete mít zipy v zipu.
Totiž, kdysi jsem viděl něco, co by mohlo způsobit vaše přání.
Tenkrát ten program vytvářel adresáře a uvnitř každého byly vyšší desetitisíce malých souborů o velikosti 64kb.
(Jestli to byl Qmail? nebo něco takového?)
S adresářem, ve kterém jsou vyšší desetitisíce souborů se může skutečně blbě pracovat.

Pokud byste na takovou strukturu aplikoval váš požadavek a každý jeden soubor zipoval, naroste vám velikost a vůbec si nepomůžete. Zip totiž obsahuje hlavičku a z 8TB vznikne klidně 30TB. Taky vám moc nepomůže zipování celých adresářů, protože vyšší desetitisíce souborů jsou prostě zapeklitý oříšek.

V mém případě došlo k několika věcem:
1. zmírnění problému, do každého adresáře se začaly ukládat jen stovky souborů
(to se povedlo úpravou parametru, který démonovi říkal, kolik maximálně má do každého adresáře strkat souborů)
Tento krok vyvolal významné zvýšení počtu adresářů, ale byly to vyšší tisíce, nikoliv jednotky tisíc a nevadilo to.
2. každý adresář se skutečně zipoval do samostatného ZIPu, aby to bylo manipulovatelné.
3. výsledek se už "jen" taroval, aby vznikly bloby k uložení
Nebylo to dokonalé, ale dalo se s tím celkem žít.

Váš případ je na posouzení těžký.
Neznám totiž důvod vašeho konání, určitě nedává smysl zipovat adresáře, ve kterých jsou zazipované soubory.
K žádné úspoře místa už asi nedojde.

ZIP/RAR umí to, že rozdělí archivy třeba po 100MB, poslední archiv je menší, třeba 1...5...99MB, podle velikosti zbytku.
Dovedu si představit, že vezmete adresář a zazipujete ho tak, aby vznikl rozložený archiv (do více souborů), aby se v tom celkem slušně vyhledávalo. Tj. když budu hledat soubor XCV123456 otevřu si první archiv a vidím, že poslední soubor je XCV121111...archiv 6 začíná XCV123444, tak si sjedu dolů na soubor XCV123456.

Chytl jste mě rozespalého, takže místo toho, abych se vám vysmál a zasměšnil vás za hloupě napsaný dotaz, tak jsem se snažil vám pomoci......hmm...musím si na to dávat pozor, nebo po mně budou chtít lidi půjčit prachy ve dvě ráno.

Re:dávková archivace celé adresářové struktury
« Odpověď #3 kdy: 21. 11. 2021, 10:43:03 »
Hotový software, který by dělal přesně tohle (bez skriptování), pravděpodobně neexistuje. Protože když někdo chce adresářovou strukturu zabalit do zipu, zabalí vše do jednoho zipu a nevytváří tam zbytečné zipy ještě z každého souboru a podadresáře zvlášť. Akorát by to komplikovalo práci (musíte rozbalit dva zipy místo jednoho) a mírně snižovalo kompresní poměr, výhodu by to nemělo žádnou.

Re:Dávková archivace celé adresářové struktury
« Odpověď #4 kdy: 21. 11. 2021, 14:15:39 »
to zadání samo o sobě je blbost ... jednak používej raději RAR a potom zaarchivuj CELOU adresářovou strukturu najednou ... chápeš jo ? a ne dávat zip soubor do každýho adresáře, obzvláště když je tam tisíce adresářů ....