Rsnapshot (na osnovi Rsync) - pripomoček za varnostno kopiranje lokalnega/oddaljenega datotečnega sistema za Linux
rsnapshot je odprtokodni pripomoček za varnostno kopiranje lokalnega/oddaljenega datotečnega sistema, napisan v jeziku Perl, ki izkorišča moč programa Rsync in SSH za ustvarjanje načrtovanih postopnih varnostnih kopij datotečnih sistemov Linux/Unix, hkrati pa zavzema prostor ene same popolne varnostne kopije in razlike in te varnostne kopije hranite na lokalnem pogonu na drugem trdem disku, zunanjem USB ključu, pogonu, nameščenem na NFS, ali preprosto prek omrežja na drugo napravo prek SSH.
Ta članek bo prikazal, kako namestiti, nastaviti in uporabiti rsnapshot za ustvarjanje postopnih urnih, dnevnih, tedenskih in mesečnih lokalnih varnostnih kopij ter oddaljenih varnostnih kopij. Če želite izvesti vse korake v tem članku, morate biti root uporabnik.
1. korak: Namestitev varnostne kopije Rsnapshot v Linux
Namestitev rsnapshot z uporabo Yum in APT se lahko nekoliko razlikuje, če uporabljate distribucije na osnovi Red Hat in Debian.
Najprej boste morali namestiti in omogočiti repozitorij tretjih oseb, imenovan EPEL. Sledite spodnji povezavi, da namestite in omogočite v svojih sistemih RHEL/CentOS. Uporabniki Fedore ne zahtevajo nobenih posebnih konfiguracij skladišča.
- Namestite in omogočite repozitorij EPEL v RHEL/CentOS 6/5/4
Ko nastavite stvari, namestite rsnapshot iz ukazne vrstice, kot je prikazano.
# yum install rsnapshot
Privzeto je rsnapshot vključen v Ubuntujeve repozitorije, tako da ga lahko namestite z ukazom apt-get, kot je prikazano.
# apt-get install rsnapshot
2. korak: Nastavitev prijave za SSH brez gesla
Za varnostno kopiranje oddaljenih strežnikov Linux se bo vaš varnostni strežnik rsnapshot lahko povezal prek SSH brez gesla. Da bi to dosegli, boste morali ustvariti javni in zasebni ključ SSH za preverjanje pristnosti na strežniku rsnapshot. Sledite spodnji povezavi, da ustvarite javne in zasebne ključe na varnostnem strežniku rsnapshot.
- Ustvari SSH prijavo brez gesla s pomočjo SSH Keygen
3. korak: Konfiguriranje Rsnapshot
Zdaj boste morali urediti in dodati nekaj parametrov v konfiguracijsko datoteko rsnapshot. Odprite datoteko rsnapshot.conf z urejevalnikom vi ali nano.
# vi /etc/rsnapshot.conf
Nato ustvarite varnostno kopijo, v katero želite shraniti vse varnostne kopije. V mojem primeru je moja lokacija varnostnega kopiranja\"/ data/backup /". Poiščite in uredite naslednji parameter, da nastavite lokacijo varnostne kopije.
snapshot_root /data/backup/
Odpokličite tudi vrstico "cmd_ssh", da omogočite oddaljeno varnostno kopiranje prek SSH. Če želite razkomentirati vrstico, odstranite »#« pred naslednjo vrstico, da bo rsnapshot lahko varno prenesel vaše podatke na varnostni strežnik.
cmd_ssh /usr/bin/ssh
Nato se morate odločiti, koliko starih varnostnih kopij želite obdržati, ker rsnapshot ni vedel, kako pogosto želite narediti posnetke. Določiti morate, koliko podatkov želite shraniti, dodati intervale, ki jih želite obdržati, in koliko posameznih.
No, privzete nastavitve so dovolj dobre, vendar vseeno bi rad, da omogočite\"mesečni" interval, da boste lahko imeli tudi dolgoročne varnostne kopije. Uredite ta razdelek, da bo videti podobno kot spodnje nastavitve.
######################################### # BACKUP INTERVALS # # Must be unique and in ascending order # # i.e. hourly, daily, weekly, etc. # ######################################### interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3
Še nekaj, kar morate urediti, je spremenljivka “ssh_args”. Če ste privzeta vrata SSH (22) spremenili v kaj drugega, morate določiti številko vrat oddaljenega varnostnega kopiranja strežnika.
ssh_args -p 7851
Na koncu dodajte svoj lokalni in oddaljeni imenik varnostnih kopij, ki jih želite varnostno kopirati.
Če ste se odločili, da svoje imenike varnostno kopirate na isti računalnik, bi bil vnos varnostne kopije videti tako. Na primer, vzamem varnostno kopijo svojih imenikov/tecmint in/etc.
backup /tecmint/ localhost/ backup /etc/ localhost/
Če želite varnostno kopirati imenike oddaljenega strežnika, morate rsnapshotu sporočiti, kje je strežnik in katere imenike želite varnostno kopirati. Tu vzamem varnostno kopijo imenika oddaljenega strežnika “/ home” v imeniku “/ data/backup” na strežniku rsnapshot.
backup [email :/home/ /data/backup/
Preberite tudi:
- Varnostno kopiranje/sinhronizacija imenikov z orodjem Rsync (Remote Sync)
- Kako prenesti datoteke/mape z uporabo ukaza SCP
Tukaj bom izključil vse in nato le natančno določil, kaj želim varnostno kopirati. Če želite to narediti, morate ustvariti datoteko za izključitev.
# vi /data/backup/tecmint.exclude
Najprej dobite seznam imenikov, ki jih želite varnostno kopirati, in dodajte (- *), da izključite vse ostalo. S tem boste varnostno kopirali samo tisto, kar ste navedli v datoteki. Moja datoteka za izključitev je podobna spodnji.
+ /boot + /data + /tecmint + /etc + /home + /opt + /root + /usr - /usr/* - /var/cache + /var - /*
Uporaba možnosti izključi datoteko je lahko zelo zahtevna zaradi uporabe rsync rekurzije. Torej, moj zgornji primer morda ni tisto, kar iščete. Nato dodajte datoteko za izključitev v datoteko rsnapshot.conf.
exclude_file /data/backup/tecmint.exclude
Končno ste z začetno konfiguracijo skoraj končali. Pred nadaljevanjem shranite konfiguracijsko datoteko “/etc/rsnapshot.conf”. Obstaja veliko možnosti za razlago, tukaj pa je moja vzorčna konfiguracijska datoteka.
config_version 1.2 snapshot_root /data/backup/ cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger cmd_du /usr/bin/du interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3 ssh_args -p 25000 verbose 2 loglevel 4 logfile /var/log/rsnapshot/ exclude_file /data/backup/tecmint.exclude rsync_long_args --delete --numeric-ids --delete-excluded lockfile /var/run/rsnapshot.pid backup /tecmint/ localhost/ backup /etc/ localhost/ backup [email :/home/ /data/backup/
Vse zgornje možnosti in obrazložitve argumentov so naslednje:
- config_version 1.2 = Različica konfiguracijske datoteke
- snapshot_root = Varnostni cilj za shranjevanje posnetkov
- cmd_cp = Pot do ukaza za kopiranje
- cmd_rm = Pot do odstranitve ukaza
- cmd_rsync = Pot do rsync
- cmd_ssh = Pot do SSH
- cmd_logger = Pot do ukaznega vmesnika lupine do syslog
- cmd_du = Pot do ukaza za uporabo diska
- interval urno = Koliko urnih varnostnih kopij je treba obdržati.
- interval dnevno = Koliko dnevnih varnostnih kopij je treba obdržati.
- interval na teden = Koliko varnostnih kopij na teden je treba obdržati.
- interval mesečno = Koliko mesečnih varnostnih kopij je treba obdržati.
- ssh_args = Izbirni argumenti SSH, na primer druga vrata (-p)
- podrobno = samoumevno
- loglevel = samoumevno
- logfile = Pot do datoteke dnevnika
- exclude_file = Pot do datoteke za izključitev (podrobneje bo razloženo)
- rsync_long_args = Dolgi argumenti za posredovanje rsync
- lockfile = samoumevno
- varnostna kopija = Celotna pot do tistega, kar je treba varnostno kopirati, čemur sledi relativna pot umestitve.
4. korak: preverite konfiguracijo Rsnapshot
Ko končate z vsemi konfiguracijami, je čas, da preverite, ali vse deluje po pričakovanjih. Zaženite naslednji ukaz, da preverite, ali ima vaša konfiguracija pravilno sintakso.
# rsnapshot configtest Syntax OK
Če je vse pravilno konfigurirano, boste prejeli sporočilo\"Sintaksa v redu". Če dobite sporočilo o napaki, to pomeni, da morate te napake popraviti, preden zaženete rsnapshot.
Nato poskusno zaženite enega od posnetkov in se prepričajte, da ustvarjamo pravilne rezultate. Parameter »urno« vzamemo za preizkus z uporabo argumenta -t (test). Ta spodnji ukaz bo prikazal podroben seznam stvari, ki jih bo počel, ne da bi jih dejansko počel.
# rsnapshot -t hourly
echo 2028 > /var/run/rsnapshot.pid mkdir -m 0700 -p /data/backup/ mkdir -m 0755 -p /data/backup/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \ /backup/hourly.0/localhost/ mkdir -m 0755 -p /backup/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \ /backup/hourly.0/localhost/ mkdir -m 0755 -p /data/backup/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \ /usr/local /data/backup/hourly.0/localhost/ touch /data/backup/hourly.0/
Opomba: Zgornji ukaz rsnapshotu naredi, da ustvari "urno" varnostno kopijo. Pravzaprav natisne ukaze, ki jih bo izvedel, ko ga zares izvedemo.
5. korak: Ročno zaženite Rsnapshot
Po preverjanju rezultatov lahko odstranite možnost\"- t", da ukaz zares zaženete.
# rsnapshot hourly
Zgornji ukaz bo zagnal skript za varnostno kopiranje z vso konfiguracijo, ki smo jo dodali v datoteko rsnapshot.conf, in ustvaril imenik z varnostno kopijo, nato pa pod njim ustvaril strukturo imenikov, ki organizira naše datoteke. Po zagonu zgornjega ukaza lahko rezultate preverite tako, da odprete imenik varnostne kopije in s pomočjo ukaza ls -l navedete strukturo imenikov, kot je prikazano.
# cd /data/backup # ls -l total 4 drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0
6. korak: Avtomatizacija postopka
Če želite avtomatizirati postopek, morate načrtovati zagon rsnapshot v določenih intervalih iz Crona. Rsnapshot privzeto dobi datoteko cron pod »/etc/cron.d/rsnapshot«, če ne obstaja, jo ustvarite in ji dodajte naslednje vrstice.
Privzeto se komentirajo pravila, zato morate odstraniti\"#" pred odsekom za razporejanje, da omogočite te vrednosti.
# This is a sample cron file for rsnapshot. # The values used correspond to the examples in /etc/rsnapshot.conf. # There you can also set the backup points and many other things. # # To activate this cron file you have to uncomment the lines below. # Feel free to adapt it to your needs. 0 */4 * * * root /usr/bin/rsnapshot hourly 30 3 * * * root /usr/bin/rsnapshot daily 0 3 * * 1 root /usr/bin/rsnapshot weekly 30 2 1 * * root /usr/bin/rsnapshot monthly
Naj natančno razložim, kaj počnejo zgornja pravila cron:
- Zažene se vsake 4 ure in ustvari urni imenik pod/rezervni imenik.
- Zažene se vsak dan ob 3.30 in ustvari dnevni imenik pod/rezervni imenik.
- Zažene se vsak teden vsak ponedeljek ob 3:00 zjutraj in ustvari tedenski imenik pod/backup directory.
- Zažene se vsak mesec ob 2.30 in ustvari mesečni imenik pod/rezervni imenik.
Če želite bolje razumeti, kako delujejo pravila cron, predlagam, da preberete naš članek, ki opisuje.
- 11 primerov razporejanja kronov
7. korak: Poročila Rsnapshot
Rsnapshot ponuja čudovit majhen poročevalski skript Perl, ki vam pošlje e-poštno opozorilo z vsemi podrobnostmi o tem, kaj se je zgodilo med varnostnim kopiranjem podatkov. Če želite nastaviti ta skript, ga morate prekopirati nekam pod "/ usr/local/bin" in ga narediti izvedljiv.
# cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin # chmod +x /usr/local/bin/rsnapreport.pl
Nato v datoteko rsnapshot.conf dodajte parameter – –stats v razdelek z dolgimi argumenti rsync.
vi /etc/rsnapshot.conf
rsync_long_args --stats --delete --numeric-ids --delete-excluded
Zdaj uredite pravila crontab, ki so bila dodana prej, in pokličite skript rsnapreport.pl, da pošljete poročila na določen e-poštni naslov.
# This is a sample cron file for rsnapshot. # The values used correspond to the examples in /etc/rsnapshot.conf. # There you can also set the backup points and many other things. # # To activate this cron file you have to uncomment the lines below. # Feel free to adapt it to your needs. 0 */4 * * * root /usr/bin/rsnapshot hourly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 30 3 * * * root /usr/bin/rsnapshot daily 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 0 3 * * 1 root /usr/bin/rsnapshot weekly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 30 2 1 * * root /usr/bin/rsnapshot monthly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email
Ko pravilno dodate zgornje vnose, boste na svoj elektronski naslov dobili poročilo, podobno spodnjemu.
SOURCE TOTAL FILES FILES TRANS TOTAL MB MB TRANS LIST GEN TIME FILE XFER TIME -------------------------------------------------------------------------------------------------------- localhost/ 185734 11853 2889.45 6179.18 40.661 second 0.000 seconds
Referenčne povezave
- domača stran rsnapshot
Za zdaj je to to, če mi med namestitvijo pride do težav, mi pošljite komentar. Do takrat spremljajte TecMint za zanimivejše članke o odprtokodnem svetu.