Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Jak zálohovat rychle a bezbolestně

Téma zálohování jsme na Rootu probírali už několikrát a vždycky jsme se dostali k nějakému řešení, které vyžadovalo náš pravidelný zásah. Pojďme zkusit něco téměř plně automatického, co provede zálohu po pouhém zasunutí zálohovacího média, nejlépe nějakého disku, do USB portu počítače.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

 Óda na zálohování

Zálohovat se má, má se to dělat často a nejlépe někam, kde se zálohovaným datům nemůže stát stejná nehoda jako datům na původním místě. V domácím prostředí, kam je také tento článek směrován, se nabízí koupě externího pevného disku, kam se budou zálohovat rodinné i pracovní záležitosti. Můžete sice využít RAID1 nebo RAID5, ale pořád je tu velká šance, že když se přihodí něco fyzicky celému domu, budou data pryč. Důležitých dat většinou není víc než pár desítek GB a u někoho to může být i řádově ve stovkách MB. Není tedy potřeba nějaké opravdu velké zálohovací médium.

Bohužel tu je i několik překážek, které bezpečnosti našim datům chybí. Tou první je určitě lenost, kdy na zálohování prostě nemyslíte. Možná vás napadne použít nějaké automatické řešení se zálohováním na jiný stroj. Pokud bude takový stroj doma, narazíte na problém polohového oddělení zálohovaných dat od těch původních. Ne všichni ale mají druhý stroj a už vůbec ne mimo svůj domov. Limitem může být i připojení k internetu. Externí disk je tedy spolehlivé a finančně dostupné řešení pro každého, komu na svých datech záleží a přitom vada na elektrických rozvodech mu v odpojením stavu neublíží.

Další problém je softwarový. Možná se vám už stalo, že jste si vymazali nějakou část textu nebo kódu a vesele programovali dál. Mezitím jste provedli zálohu a za pár dní přišli na to, že jste si před čtrnácti dny vymazali něco, co teď potřebujete. Stará záloha je pryč a nezbývá, než se s takovými daty rozloučit nebo je vyprodukovat znovu. To se ale s fotkami z dovolené nedělá zrovna dobře.

Našim cílem v tomto článku tedy bude udělat zálohy co nejvíce automatické a s historií tak, aby posledních XX záloh bylo uživateli k dispozici. Použijeme k tomu udev, rdiff-backup a trochu skriptovacího umu. Je to totiž akce pro Linux jak dělaná a byla by škoda si o tom neříct.

Co budeme potřebovat

Nejprve se podíváme na dva nástroje, které budeme potřebovat, abychom našeho cíle dosáhli.

rsync, rdiff-backup

Program rsync je velmi oblíbený na synchronizaci adresáře v bodě A s adresářem v bodě B. Často se na zálohování používá, protože dokáže mezi stroji přenášet jen změněná data a tím ušetří kapacitu sítě. Je to samozřejmě vykoupeno náročností na procesor, protože rsync si počítá hashe každého souboru a případně vytváří jejich rozdíly, které odesílá. Rsync má i vlastního daemona, se kterým může komunikovat klientská strana, nicméně bezpečnější je použití tunelu přes SSH. O rsync si můžete přečíst hodně informací v našem článku Pokročilé zálohování s Rsync.

Nad rsync vzniklo několik řešení, které rozšířily jeho možnosti. Asi takovou nejčastěji doplňovanou možností je udržování historie změn. A tady se dostáváme k problému, kdy si něco vymažeme, ale zjistíme to, až když proběhne záloha a vše je ztraceno. O jednom z nich se můžete dočíst v článku Záloha dat pomocí rdiff-backup. Ten je napsaný v Pythonu a umožňuje pohodlné cestování napříč všemi zálohami, které jste v minulosti udělali. Umožňuje i jejich pohodlné vymazání. Jeho obsluha je jednoduchá, možná i jednodušší než u rsync, takže to je ideální nástroj pro náš problém.

udev

Udev je nenápadný daemon, který běží na pozadí vašeho systému. Je vcelku jednoduché ho nakonfigurovat a jelikož to už udělali vývojáři vaší distribuce, tak ani nemusíte vědět, že nějaký udev máte. Nicméně je tam a stará se o zařízení, která k vašemu počítači připojíte. Např. když jádro najde WiFi kartu, tak si o tom popovídá s udev daemonem a ten podle nastavených pravidel např. načte patřičný firmware, vytvoří v systému zařízení, třeba wlanX a dá mu správné pořadové číslo. Pravidla udevu můžeme jednoduše přiohnout k našemu účelu tak, aby spustila námi definovaný skript a ten se po připojení zařízení postaral o zálohu.

Jak na to

Teorii bychom měli za sebou a je čas přejít k praxi. Nejprve začneme s tím, že vytvoříme skript, který připraví náš disk a pomocí rdiff-backup na něj nakopíruje data. Nakonec disk řádně odpojí a dá uživateli nějakým způsobem vědět, že zálohování je dokončeno. Skript může vypadat třeba takto:

#!/bin/bash

DEV=/dev/backupdisk1
MOUNTPOINT=/mnt/p1
SOUNDUSER=cx
FROMDIR=/home/cx/co/rosti
TODIR=$MOUNTPOINT/rosti
SOUND=/home/cx/root/cow-moo1.wav

if [ "$1" == "1" ] && [ ! -e /tmp/nobackup ] && [ -e $DEV ]; then
    mount $DEV $MOUNTPOINT
    /bin/mkdir -p $TODIR
    /usr/bin/rdiff-backup $FROMDIR $TODIR
    eject $DEV
    su -c "/usr/bin/aplay -D pulse $SOUND" $SOUNDUSER 2> /dev/null
fi 

Nejdříve si do proměnných nastavíme všechno co budeme potřebovat, tj. jméno zařízení, přípojný bod, cílový a zdrojový adresář atd. Název zařízení si zvolíme níže v pravidle pro udev. Může vás ale zmást použité su v kombinaci s použitím. Moje Ubuntu nyní jede na Pulseaudio, které aplay nechtělo pustit ke slovu. Vyřešil jsem to nakonec tímto způsobem, kdy aplay spouštím pod právy svého uživatele včetně jeho prostředí, a tím má aplay přístup k Pulseaudiu a může nám dát vědět o tom, kdy zálohování skončilo.

Aby se zálohování spustilo, musí k tomu být splněny tři podmínky. První souvisí s udevem, který jako parametr předá číslo zařízení, nad kterým zrovna skončil svoji práci. Jednička v tomto případě značí první oddíl na externím disku. Druhá podmínka nám zajistí, abychom měli přístup k zálohám, kdyby se s původními daty něco stalo. V takovém případě je potřeba připojit disk, aniž by se spouštělo zálohování. To vyřešíme tím, že vytvoříme prázdný soubor „/tmp/nobackup/“ a skript podle něj pozná, že zálohovat teď nemá. Poslední podmínka kontroluje existenci vytvořeného správného souboru zařízení a je tu hlavně pro jistotu.

Na dalších řádcích připojíme oddíl na disku, vytvoříme na něm správný adresář do kterého se bude zálohovat a uděláme přes rdiff-backup zálohu. Program eject odpojí definitivně disk od systému a tím také zabrání automounteru, aby konal svoji práci. Nakonec spustíme oblíbený zvuk přes Pulseaudio a končíme. Automounter bude fungovat normálně, pokud vytvoříme blokovací soubor, který je popsán v předchozím odstavci.

Druhým krokem bude identifikovat disk pomocí informací, které má udev k dispozici. To uděláme tak, že disk připojíme k počítači a použijeme následující příkaz:

$ udevadm info -a -p $(udevadm info -q path -n /dev/sdd) | grep model
ATTRS{model}=="USB Flash Drive " 

Kde /dev/sdd nahraďte za cestu k disku. Vidíte, že zrovna u mého disku výrobce moc fantazie neměl, ale nám to bude stačit.

Když víme, jak vidí udev náš disk, přejdeme k psaní pravidla. Ta se vyskytují v adresáři „/etc/udev/ru­les.d/“. Tam vytvoříme soubor „90-local.rules“ a vložíme do něj:

KERNEL=="sd*", SUBSYSTEMS=="scsi", ATTRS{model}=="USB Flash Drive ", NAME+="backupdisk%n", RUN+="/opt/backup.sh %n" 

Mnou uvedený model nahraďte tím, co vám vypsal udevadm výše.

Nezbývá než zavést nové pravidlo do udevu:

Valentýna vyřešíte v našem butiku

Pánové, Valentýn je tu a tak jsme pro vás v našem butiku připravili balíček dámských kalhotek a trička za zvýhodněnou cenu 365 Kč.

       
/etc/init.d/udev reload 

A vyzkoušet, jak zálohování funguje připojením externího disku.

Závěr

Pohodlné zálohování je nejlepší cesta k tomu, jak ho dělat pravidelně. Stačí si do večerního rituálu mezi čištěním zubů a spuštěním oblíbeného seriálu přidat připojení externího disku a data budete mít v bezpečí. Jediný plně automatický způsob, jak mít data v bezpečí stejně nebo lépe, je dělat pravidelné zálohy na jiný stroj patřičně vzdálený od toho zálohovaného. Pokud takovou možnost máte, určitě ji využijte.

Adam Štrauch

Adam Štrauch

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.

Školení: GIT správce zdrojových kódů

 

Seznamte se s možnosti systému správy verzí zdrojových kódů GIT, který používají i vývojáři linuxového jádra.

  • Proč správa verzí
  • Architektura GITu
  • GIT v praxi
  • a další

Podrobnější informace o školení a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,00

Přehled názorů

Co je to za větu?
LDP 26. 3. 2010 06:39
Nový
Pěkné, děkuji :-)
Pavel 1 TU 26. 3. 2010 07:06
Nový
Spousteny skript by nemel bezet dlouho
haku 26. 3. 2010 07:30
Nový
├ 
Re: Spousteny skript by nemel bezet dlouho
Kaplan Věroš 26. 3. 2010 12:19
Nový
└ 
Re: Spousteny skript by nemel bezet dlouho
Slavko 26. 3. 2010 20:08
Nový
 
└ 
Re: Spousteny skript by nemel bezet dlouho
Atrament 26. 3. 2010 21:54
Nový
bash a test
pepazdepa 26. 3. 2010 09:25
Nový
├ 
Re: bash a test
stn 26. 3. 2010 14:17
Nový
└ 
Re: bash a test
kos 28. 3. 2010 23:50
Nový
RAID
Michal Kára 26. 3. 2010 09:27
Nový
└ 
Re: RAID
stn 26. 3. 2010 09:55
Nový
rdiff-backup je fajn..
jose 26. 3. 2010 16:07
Nový
a neni to zbytecna prace?
qpal 26. 3. 2010 19:54
Nový
Git.
Jan Matějka 26. 3. 2010 20:27
Nový
└ 
Re: Git.
Martin 29. 3. 2010 07:47
Nový
jak na šifrované a zabalené zálohy na usb disk
nax 26. 3. 2010 22:02
Nový
└ 
Re: jak na šifrované a zabalené zálohy na usb disk
motyq 27. 3. 2010 03:49
Nový
 
└ 
Re: jak na šifrované a zabalené zálohy na usb disk
nax 27. 3. 2010 16:43
Nový
rsync + btrfs
Ahmul . 27. 3. 2010 08:14
Nový
a pritom staci
bw 27. 3. 2010 10:37
Nový
backup2l
Miroslav Duschek 27. 3. 2010 13:33
Nový
zfs on fuse
festr 27. 3. 2010 23:14
Nový
└ 
Re: zfs on fuse
jose 28. 3. 2010 10:00
Nový
 
└ 
Re: zfs on fuse
jose 12. 4. 2010 16:58
Nový
SUBSYSTEMS
Ash 28. 3. 2010 15:24
Nový
Poděkování
marekbatelka 13. 5. 2010 22:38
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem