On hea mõte teha andmetest varukoopiaid, seega toon siin ära paar varianti:
Siin on skript, mida saab kasutada.
See skript eeldab LUKS krüpteeritud partitsiooni, kopeerimine tehakse kasutades rsync.
Saab üles seada selliselt, et kõigepealt tuleb oma lemmik programmi kasutades partitsioneerida varukoopiate seade. Partitsioonide arv pole tähtis. Seejärel vormindada kasutades LUKS krüptot:
# cryptsetup luksFormat <partitsioon> # cryptsetup luksUUID <partitsioon>
Teise käsu väljundis olev identifikaator on vajalik paigutada varukoopiate skripti sisse.
Skriptile võib anda ka võtmefaili varukoopiate seadme avamiseks. Reaalselt võib mistahes fail võtmefailina töötada. Võtmefaili kasutades tuleks arvestada ka seda, et kui võtmefaili olemasolu on teada pahatahtlikule nuhkijale, siis on oluline seda hoida kindlalt kättesaamatuna. Samuti on suurem oht, et krüpteeringu salasõna läheb meelest ja kui on vaja andmeid kätte saada, siis ei pruugi olla võimalik võtmefaili kasutada.
Variant 1:
# dd if=/dev/urandom of=<võtmefail> bs=1M count=1 # cryptsetup luksAddKey <partitsioon> <võtmefail>
Variant 2:
# cryptsetup luksAddKey <partitsioon> </dokument/mis/kunagi/ei/muutu.jpg>
Nüüd tuleb varukoopiate seade külge ühendada:
# cryptsetup open --type luks --allow-discards --key-file <võtmefail> <partitsioon> <varukoopianimi>
Või ilma võtmefailita:
# cryptsetup open --type luks --allow-discards <partitsioon> <varukoopianimi>
Seejärel vormindamine:
# mkfs.ext4 /dev/mapper/<varukoopianimi>
Nüüd võib krüptoseadme kinni panna:
# cryptsetup close <varukoopianimi>
Seejärel tuleb kirjutada skripti sisse nimekiri kataloogidest, mis varukoopias peab olema ja soovi korral võtmefaili asukoht. Skript on mõistlik paigutada näiteks /usr/local/sbin/backup.sh Seejärel tuleb see käivitatavaks teha, soovi korral eemaldada lugemisõigus teistele kasutajatele:
# chmod u+x /usr/local/sbin/backup.sh # chmod go-rwx /usr/local/sbin/backup.sh
Kuna antud skript on kasutatav ainult juurkasutajale, siis saab sellega varukoopiaid teha näiteks nii:
# su - -c /usr/local/sbin/backup.sh
..või:
# sudo /usr/local/sbin/backup.sh
sudo puhul on ka võimalus kaotada parooli küsimine tehes vastav seadistus programmiga "visudo"
Üles seadmine käib samamoodi kui esimene variant, aga kõige lõpuks on mõistlik lisada kirje juurkasutaja crontab-i, et skript automaatselt käivitataks näiteks iga öö. Samuti võiks ka seadistada varukoopiate skripti väljundi suunamise administraatori postkasti. Crontab võiks välja näha umbes selline:
MAILTO="kasutajanimi@localhost" 30 0 * * * /usr/local/sbin/backup.sh
Siin on skript, mida saab kasutada.
Skript on eelmisele väga sarnane ja ka ettevalmistus käib sisuliselt samamoodi. Erinevus on aga selles, et varukoopiasse paigutatud süsteemi on võimalik käivitada. Kuivõrd iga Linuxi distro on natuke erinev ja erinev on kindlasti ka initramfs, siis on oluline kindlasti kontrollida, kas selliselt üles seatud süsteemi koopia ikka käivitub. Võib olla, et tuleb teha muudatusi grub konfiguratsiooni osas, mis on skripti teises pooles.
Ühest masinast teise andmete saatmisel tuleb arvesse võtta, et kui andmete hulgas on delikaatset informatsiooni, siis peavad mõlemad masinad olema usaldusväärsed. Samuti andmete ülekanne peab toimuma selliselt, et seda ei saaks pealt kuulata.
Usaldusväärne andmete ülekanne on lihtsasti korraldatav sftp abil. Et aga kogu protseduuri üles seadmine liialt keerukaks ei muutuks, võiks appi võtta sshfs.
Kuigi on võimalik kasutada ülaltoodud skripti sarnast lahendust üle võrgu varukoopiate tegemiseks, tasub meeles pidada, et siis varukoopiad kirjutatakse originaaliga üle. Samuti, et süsteemid, millest on vaja varukoopiaid teha automaatselt ja pidevalt, ilmselt ei peaks oma varukoopiat üle kirjutama. Seetõttu pean mõistlikuks kasutada üle võrgu teise masinasse varukoopiate tegemise varianti ainult selliste andmete puhul, mis on olulised ja uuenevad ilma masina ees istuva kasutaja osaluseta.
Selleks tundub mõistlik variant, et cron käivitab skripti, mis pakib lihtsalt varukoopiad kokku, et varukoopiaid hoidev masin saaks siis tulla ja võtta need antud masinast. Midagi stiilis:
#!/bin/bash mkdir -p /home/kasutaja/olulised_failid tar -cJf "/home/kasutaja/olulised_failid/`date '+%F-%H%M%S'`-home.tar.xz" -C /home \ --exclude-backups \ --exclude="Lastele" \ --exclude=".local" \ --exclude=".cache" \ --exclude="olulised_failid" vaane tar -cJf "/home/kasutaja/olulised_failid/`date '+%F-%H%M%S'`-etc.tar.xz" -C / etc tar -cJf "/home/kasutaja/olulised_failid/`date '+%F-%H%M%S'`-varwww.tar.xz" -C /var www tar -cJf "/home/kasutaja/olulised_failid/`date '+%F-%H%M%S'`-varlog.tar.xz" -C /var log chown -R kasutaja:kasutaja /home/kasutaja/olulised_koopiad
See skript siis teha käivitatavaks ja lisada crontab-i.
Natuke pärast selle skripti töö lõppemist, võiks käivituda teises masinas skript, mis need varukoopiad endale sikutab. Näiteks kui pakkimine kestab 30 sekundit, siis on päris kindel, et tund aega hiljem, peaks pakkimine valmis olema.
#!/bin/bash mkdir -p .tmp/varundaja_haakepunkt sshfs teine_arvuti: .tmp/varundaja_haakepunkt mv .tmp/varundaja_haakepunkt/* teise_arvuti_varukoopiad/ umount .tmp/varundaja_haakepunkt
Antud skriptil on mitu võimalust mitte töötamiseks, samas midagi rohkem katki ei lähe, kui isegi esimene käsk ebaõnnestub. Kui mingil põhjusel peaks ebaõnnestuma varukoopiate sikutamine (näiteks neid ei ole), siis annab skript veateate (või mitu). Edukal töötamisel midagi väljundisse ei tule. Selle tõttu sobib seda panna crontab-i ja sättida e-maili saatmine kasutajale. Kui e-mail saadetakse, on midagi valesti ja tuleb uurida lähemalt.
Samuti eeldab niimoodi varukoopiate automaatne sikutamine, et ssh sisselogimine tehakse võtmefailidega ja mitte parooliga. Aga see on nagunii mugavam ja turvalisem variant, seega tundub mõistlik eeldada, et selleks pole vaja lisaprotseduure ette võtta kuna need on juba tehtud.
Põhimõtteliselt saaks seda kõike teha ka ühe skriptiga, kus pakkiv skript saadab need failid kohe teise arvutisse, samas sellisel juhul võib märkamata jääda, kui mingil põhjusel antud skript ei käivitu. Praeguse ülesehitusega, kui esimene skript ei käivitu, tuleb veateade ja kui teine ei käivitu jäävad varukoopiad sikutamata. Et saada veateadet ka sellisel juhul, võib panna kontrolloperatsiooni esimesse skripti, et kontrollida kas kataloog on tühjaks tehtud.
Teine põhjus sellisele ülesehitusele on siis, kui varukoopiaid tehakse masinas, millele saab internetist ligi, siis ei tohiks sellest masinast olla võimalik lihtsalt pääseda teistesse masinatesse. See lisab veel ühe tõkke pahatahtlikule aga osavale häkkerile.