Portál AbcLinuxu, 30. dubna 2025 21:00
Nadpis není úplně pravdivý, tento skript nezalohuje, ale organizuje adresáře k záloze. Problém zněl takto: mám adresář a v něm je spoustu podadresářů (šlo konkrétně o mou metalovou sbírku, každý adresář je nějaká skupina), a chtěl bych je zálohovat na dvd ram (protože jsou snad spolehlivější než dvd rw, jinak je to jedno). Celkem to má ale kolem 20 GB, musel bych to nějak roztřídit a kdybych to dělal ručně, tak by brzo v tom vznikl maximální bordel . A to právě řeší tento skript
.
Poznámka předem: omlouvám se všem bash guru, ale jsem totální prasič, bash rozhodně neumím a mé skripty jsou strašné (a někdy i fungují, tento skript ale nazývám betaverzí a za škody s ním způsobené odmítam jakkoliv ručit :P) a absolutně neefektivní, atd... Taky jsem tu v diskuzi četl názor, že než publikovat špatný skript, tak radši žádný, protože nováčci pochytí špatné návyky. Publikovat přesto chci, ale nováčkum pro klid duše povoluji číst jen na vlastní nebezpečí.
Skript pracuje s aktualním adresářem, kde je spuštěn. Řídí se dvěma proměnnými na začátku skriptu a to size_of_pack a size_of_pack_max. Ta první říká, jaká je velikost media (packu) a při rozhazování adresářů ji nepřekročí. Ta druhá proměnná by měla být o trošku větší a je to maximální velikost media (u oboustranného dvd 9,4 GB třeba) a skript ji nesmí překročit při změně velikosti zařazeného adresáře. Dobré je to třeba, když přidáte do nějaké skupiny jedno nové album a nechcete po takové malé změně hned přepalovat dvě DVD (a radši si v každém necháte malou rezervičku, kterou tvoří rozdíl size_of_pack a size_of_pack_max).
Z toho co jsem napsal, se dá pochopit, že skript neslouží jen k prvotnímu rozhození, ale dále dokáže packy aktualizovat, při smazání nějakých věci ubírat. Prostě snaží se v systému zachovat pořádek. Aby to mělo význam, měla by být výstupní media přepisovatelná (dvd ram, RW...).
Použití skriptu je jednoduché, prostě ho spustíte s parametrem --run (bez něj vypíše help, který radím prostudovat) a on do adresáře .zal vytvoří strukturu, se kterou pracuje (a vy také). Každé medium je reprezentováno jako číslo (.zal/1, .zal/2, ..., .zal/n), obsahuje symbolické odkazy na adresáře a třeba pomocí rsyncu (s parametrem --copy-links) ho pak přenesete na dvdram.
Dodatky:
Pro změny adresářů skript nepoužívá hashe, ale prosté a nespolehlivé změny velikostí (značí si je do .zal/n.size). Mně to stačí (obvykle změna bude probíhat ve stylu dohraju nové alba, což změní velikost určitě), ale není problém si to upravit .
Skript si neporádí s adresáři většími než medium (pack), oznámí to a musíte si adresář nějak rozdělit sami.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.