Portál AbcLinuxu, 21. června 2025 01:29


Dotaz: jaký skript na zálohování pracovního adresáře

25.4. 11:44 radek
jaký skript na zálohování pracovního adresáře
Přečteno: 977×
Odpovědět | Admin
Zdravím, hledám vhodný software (script) na zálohování pracovního adresáře na externí disk. Než se pustím do jeho psaní, rád bych se vás zde ale zeptal na tipy a názory.

Mám tyto požadavky. Chci, aby to umělo efektivně řešit pouhé přesuny adresářů. To znamená, pokud mi v mém pracovním adresáři nějaký adresář zmizí, bude nejprve vyhledán (v záloze při jednosměrné synchronizaci), jestli nebyl jen přesunut, aby se v záloze také případně jen přesunul. Pokud se jen přesune, tak na původním místě vznikne link s postfixem .00~, což bude znamenat, že tam byl odkazovaný adresář a byl přesunutý. Stejně tak bude fungovat pouhé přejmenování adresáře: Smazaný adresář (v pracovním adresáři) bude v záloze jen přejmenovaný a výtvoří se odkaz s původním názvem s postfixem .00~. U souborů bych chtěl, aby se zálohovaly s číslem verze s postfixem .0N~, kde N je číslo verze (nevadí jestli sestupně nebo vzestupně), aktuální bude v zálohách bez postfixu. Jo, a nechci žádné GUI.

Myslím, že někdo před mnoha lety, psal, že něco podobného řeší nějakým šikovným zálohovacím skriptem v Perlu. Nemohu ale nic podobného najít. Zvláštní, přitom mi můj požadavek na zálohování přijde logický a praktický - musí už něco existovat.

Určitě se tu něco podobného už někdy řešilo a já jen špatně hledám. Předem vám děkuji za vaše tipy a rady.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.4. 13:32 Nereknu | skóre: 23 | Neřeknu:)
Rozbalit Rozbalit vše Re: jaký skript na zálohování pracovního adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dej ten dotaz chatgpt ;) respektive si projdi,co to vygenerovalo.

#!/bin/bash

WORKDIR="/cesta/k/arbeitsverzeichnis" # Nahraď svou pracovní cestou BACKUPDIR="/cesta/k/zaloha" # Nahraď cestou k záloze

# Najdi všechny adresáře v záloze, které už nejsou v pracovním adresáři find "$BACKUPDIR" -mindepth 1 -type d | while read -r backup_dir; do # Odvoď relativní cestu rel_path="${backup_dir#$BACKUPDIR/}" work_dir="$WORKDIR/$rel_path"

if [ ! -d "$work_dir" ]; then # Zkus najít odpovídající adresář v pracovním adresáři match=$(find "$WORKDIR" -type d -name "$(basename "$backup_dir")" -not -path "$work_dir")

if [ -n "$match" ]; then # Máme přesun - v záloze přesuneme adresář new_rel="${match#$WORKDIR/}" new_backup="$BACKUPDIR/$new_rel" mv "$backup_dir" "$new_backup"

# Vytvoříme symlink s postfixem .00~ ln -s "$new_backup" "${backup_dir}.00~" echo "Adresář přesunut: $rel_path -> $new_rel" fi fi done

# Synchronizuj soubory s verzováním find "$WORKDIR" -type f | while read -r work_file; do rel_path="${work_file#$WORKDIR/}" backup_file="$BACKUPDIR/$rel_path"

if [ -f "$backup_file" ]; then # Změnil se? if ! cmp -s "$work_file" "$backup_file"; then # Najdi další dostupné číslo verze base="${backup_file%/*}/$(basename "$backup_file")" i=1 while [ -e "${base}.0${i}~" ]; do i=$((i + 1)) done mv "$backup_file" "${base}.0${i}~" cp "$work_file" "$backup_file" echo "Soubor aktualizován a verzován: $rel_path -> .0${i}~" fi else mkdir -p "$(dirname "$backup_file")" cp "$work_file" "$backup_file" echo "Soubor zkopírován: $rel_path" fi done
25.4. 15:07 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: jaký skript na zálohování pracovního adresáře
Pozrel by som si výsledok. Tak schválne, čo to urobí s reálnymi dátami užívateľov, a kto sa zaručí za to že z užívateľových dát nevznikne digitálny odpad?

PS: To zadanie mi pripomína skúšku študentov či by zvládli použitie hotového riešenia s rsync a reflink. I keď v dnešnej dobe je jednoduchšie zapnúť deduplikáciu na cieľovom disku, a proste to tam nasypať do priečinku s určitým dátumom v názve.
25.4. 13:57 X
Rozbalit Rozbalit vše Re: jaký skript na zálohování pracovního adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemohu ale nic podobného najít. Zvláštní, přitom mi můj požadavek na zálohování přijde logický a praktický - musí už něco existovat
Je to zhovadilost. Casem z toho bude jen bordel ze souboru a ruznych zacyklenych pseudo-symlinku. Chces si uchovavat historii zmen? Pouzij verzovaci system, nebo snapshoty.
25.4. 20:16 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: jaký skript na zálohování pracovního adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tohle je znovuvynalézání kola, jenom horšího a dřevěného.

Přesuny adresářů samozřejmě korektně vyřeší inkrementální, případně exkrementální snapshoty nad Btrfs, které se pomocí send a receive pak taky inkrementálně, případně exkrementálně obnoví na cílovém zařízení, včetně efektivní reprezentace všech přesunů, částečných změn reflinkovaných souborů, a tak dále a tak blíže.

Proč se namáhat s nějakými odkazy na přesunutý adresář? Jestli nějaké adresáře často přesouvám, vytvořím si je jako subvolume. Pak můžu měnit jejich jména dle libosti, ale jejich ID zůstane stejné. Reprezentovat tohle prapodivnými jmény a symlinky dává pramalý smysl.

Jakmile je řeč o číslu verze, začíná být jasné, že vhodným mechanismem není přesun adresářů, nýbrž série snapshotů, které efektivně reprezentují verze a inkrementální i exkrementální změny.

Nekonzistentní zálohování na úrovni jednotlivých souborů je nesmysl, kterým kdysi trpěl CVS a který je už asi tak 20+ let překonaná historie — nikdy to nefunguje dobře. Rozumné zálohy jsou atomické a nespoléhají na náhodu a štěstí.

Určitě se tu něco podobného už někdy řešilo a já jen špatně hledám.

Přesně tak. Odpověď na celý dotaz je: Btrfs. (Nebo taky ZFS, ale implicitně bych dal přednost tomu, co je v kernelu a nepošpiněné CDDL.)

25.4. 22:06 Want
Rozbalit Rozbalit vše Re: jaký skript na zálohování pracovního adresáře
Andreji! Nehaň dřevo! To je materiál co nemá konkurenci. Vem si Fordovu káru - železo, kaučuk, měď a.. ..dřevo! Jinak máš samolitr recht.
26.4. 15:13 MarV | skóre: 11
Rozbalit Rozbalit vše Re: jaký skript na zálohování pracovního adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podivnosti typu ".00~" nevím, ale v zájmu spolehlivosti deduplikaci umí BorgBackup, nebo zmíněné funkce na úrovni FS podporujícím snapshoty (BTRFS, ZFS).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.