Potpuno automatski offline backup za šezdesetak kuna

Što sam htio?

  1. raditi backup jednom dnevno na drugi HDD u računalu
  2. backup HDD ne smije biti uključen cijelo vrijeme zbog uštede energije
  3. uključivanje HDD-a i cijeli backup moraju biti potpuno automatski preko shell skripte

1. Samo po sebi razumljivo.

2. Kod razrade sustava, drugi problem bio je malo teži za riješiti jer iako svi operativni sustavi podržavaju hotswap SATA diskova, to u pravilu ne funkcionira ako je ako je disk spojen cijelo vrijeme SATA kabelom i isključujemo mu napajanje. Izrada sklopa koji bi od sustava isključivao i SATA kabel i napajanje bila bi preskupa zbog broja releja koji su potrebni (samo za napajanje dovoljan je jedan).

Na kraju sam se odlučio za spajanje SATA hard diska putem SATA-to-USB adaptera, dok sklop isključuje napajanje. Kod uključenja napajanja ti adapteri prijavljuju sustavu novi disk i on ga uredno prepozna, kao što se vidi u dmesgu:

Kad isključimo napajanje, USB prepoznaje prazan adapter, koji će se opet refreshati kad uključimo napajanje, a to nam odgovara. USB-to-SATA adapteri mogu se za nekoliko dolara naći na eBayu.

3. Rješavanje trećeg zahtjeva bilo je relativno jednostavno uz malo znanja elektronike. Paralelni port na računalu vrlo je pogodan za upravljanje relejima jer se lako postavlja u stanje 1 ili 0 i u njemu ostaje do sljedeće naredbe (serijskom portu potrebno je neprekidno slati stanje 1 da bi u njemu ostao). Srećom, na Linuxu bez većih problema možemo pisati direktno na portove i imamo osam podatkovnih linija/bitova na raspolaganju.

Shemu porta možete naći ovdje, a tablicu konverzije iz dekadskog u binarni sustav ovdje (za slučaj da želite upravljati s više releja putem paralelnog porta) .

Shema elektroničkog sklopa koji se priključuje na paralelni port i prekida napajanje na SATA power konektoru preuzmite ovdje. Gotovi sklop priključit ćemo na bilo koji data pin paralelnog konektora i onda sve bitove postaviti u stanje 0 ili 1.

Ovime smo riješili hardverski dio sustava i možemo prijeći na softverski.

Upravljanje paralelnim portom

Za ovo ćemo iskoristiti jednostavan program pisan u C-u koji kao argument uzima dekadsku vrijednost i postavlja paralelni port u pravo stanje. Izvorni kod toga programa nalazi se ovdje. Da bi se program mogao kompilirati na novijim verzijama Ubuntua, potrebno je promijeniti zadnji include iz #include <asm/io.h>#include <sys/io.h>
Ispravljenu inačicu preuzmite sa sljedećeg linka: lptout.c
Skinite i kompajlirajte program.

i dobit ćete izvršni program a.out.
Preimenovat ćemo ga i postaviti dozvole.

Ako vam je sklop priključen na računalo, možete provjeriti radi li relej slanjem sljedećih naredbi za uključenje, odnosno isključenje (u istom ste direktoriju kao i izvršni lpt).

Shell skripta

Donja skripta će:
1. Uključiti napajanje diska, sve linije stavljamo u stanje 1
/home/uprava/backup/lpt 255
2. Pričekat ćemo 60 sekundi sustav prepozna priključeni disk.
3. Pokrenut ćemo fsck jer je obavezan svaki određeni broj montiranja diska ($dev je varijabla s nazivom uređaja, recimo /dev/sdb1)
/sbin/e2fsck -p $dev
4. Montirat ćemo pogon
mount /mnt/backup
5. Pripremit ćemo dodatne datoteke za backup, popis instaliranih paketa i backup svih MySQL baza.

6. Izvršiti sam backup, u ovome slučaju rsync koji radi identičnu kopiju direktorija na drugome disku.
rsync -ahv --delete --ignore-errors --exclude-from 'exclude' /home /mnt/backup/
7. Ispisati u log iskorištenost prostora na backup disku, skriptu za to možete naći ovdje. U mom slučaju, glavna  backup skripta pokretala je ovu.
8. Demontirati pogon
umount /mnt/backup
9. Isključiti napajanje
/home/uprava/backup/lpt 0

cron job

Treba dodati i cron zadatak koji će tu backup skriptu pokretati svakoga dana, obavezno pod root userom. Otvorite crontab datoteku korisnika…
sudo crontab -e
I dodajte liniju sličnu ovoj, koja ima punu putanju do vaše backup skripte. Ja sam odabrao pokretanje svakoga jutra u 4:18h.
18 4 * * * /home/uprava/backup/backup.sh

 Cijela skripta

U ovoj skripti idemo s pretpostavkom da u datoteci /etc/fstab imate unaprijed ispravno definirane parametre backup diska. Trudio sam se iskomentirati sve važnije detalje. Skripta u log ili na stdout ispisuje sve što radi, pa nije problem pronaći uzroke eventualnih problema.

Cijena materijala

Cijene su okvirne.

1 x relej 12V, 5A, dva prekidača 18.00 kn
1 x optocoupler 6.00 kn
2 x otpornik 22o R 0.60 kn
1 x dioda 1N4148 0.30 kn
1 x tranzistor 2N2222 2.80 kn
tiskana pločica 10.00 kn
SATA power adapter / molex 6.00 kn
USB – SATA adapter 18.00 kn
UKUPNO 61.70 kn

Odgovori

Ova web-stranica koristi Akismet za zaštitu protiv spama. Saznajte kako se obrađuju podaci komentara.