Hoiatus: ainult täiustatud geeksid
Kui sa istuvad, mõtled "Kas rsync on?" Või "Kasutan rsyncit ainult tõeliselt lihtsate ülesannete jaoks", võiksite vaadata oma eelmist artiklit selle kohta, kuidas rsyncit oma Linuxi andmete varundamiseks kasutada, mis annab tutvustus rsync'ist, juhendab teid installimise kaudu ja tutvustab oma põhifunktsioone. Kui olete rsynci (ausalt öeldes ei ole see keeruline) kindel hank, ja olete Linuxi terminaliga rahul, olete valmis selle täpsema juhendiga edasi liikuma.
Rsync käitamine Windowsis
Esiteks, laseme meie Windowsi lugejad samal lehel nagu meie Linuxi gurud. Kuigi rsync on loodud Unix-tüüpi süsteemide käitamiseks, pole põhjust, et te ei saaks seda Windowsis sama lihtsasti kasutada. Cygwin toodab suurepärast Linuxi API-d, mida saame kasutada rsynci käivitamiseks, nii et pea üle oma veebisaidi ja 32-bitise või 64-bitise versiooni, sõltuvalt teie arvutist, allalaadimiseks.
Paigaldus on otsekohene; saate hoida kõiki valikuid nende vaikeväärtustega, kuni jõuate ekraanile "Valige paketid".
Vim'i installimine:
rsync käsud: lihtsad ja täpsemad
Nüüd, kui Windowsi kasutajad asuvad samal lehel, vaatame lihtsalt rsynci käsku ja näeme, kuidas mõne täiendava lüliti kasutamine võib seda keerukaks muuta.
Oletame, et teil on hulgaliselt faile, mis vajavad varundamist - kes neid praegu ei tee? Ühendate oma kaasaskantava kõvaketta, et saaksite oma arvutite failid varundada ja andke järgmine käsk:
rsync -a /home/geek/files/ /mnt/usb/files/
Või kuidas see välja näeb Windowsi arvutiga Cygwiniga:
rsync -a /cygdrive/c/files/ /cygdrive/e/files/
Päris lihtne, ja sel hetkel ei ole tegelikult vaja rsync'i kasutada, kuna võite lihtsalt faile lohistada. Kuid kui teie teisel kõvakettal on juba mõned failid ja vajab lihtsalt uuendatud versioone ja faile, mis on loodud pärast viimast sünkroonimist, on see käsu käepärane, sest see saadab uued andmed ainult kõvakettale. Suurte failidega ja eriti failide ülekandega Internetis on see suur asi.
Failide varundamine välisele kõvakettale ja seejärel kõvaketta hoidmine arvutiga samas asukohas on väga halb idee, seega vaatame, mis failide saatmiseks Interneti kaudu teise arvutisse saata hakkab ( üks, mille olete rendinud, pereliige jne).
rsync -av --delete -e 'ssh -p 12345’ /home/geek/files/ [email protected]:/home/geek2/files/
Ülalolev käsk saadab failid mõnda teise arvutisse, mille IP-aadress on 10.1.1.1. See kustutaks kõrvalisi faile sihtkohast, mida enam lähtekataloogis enam ei eksisteeri, edastatakse failinimed, nii et teil on idee, mis toimub, ja tunnistage rsync läbi SSH-i pordis 12345.
The
-a -v -e --delete
lülitid on mõned kõige elementaarsemad ja sagedamini kasutatavad; kui lugeda seda õpetust, peaksite neid juba palju teadma. Läheme üle mõne teise lüliti, mida mõnikord eiratakse, kuid see on uskumatult kasulik:
--progress
- See lüliti võimaldab meil näha iga faili edastamise edenemist. See on eriti kasulik suurete failide ülekandmisel internetis, kuid võib edastada vähese hulga infot kiirete võrkude kaudu väikeste failide ülekandmisel.
Rsync käsk koos
--progress
lülitatakse varundina pooleliolevaks:
--partial
- See on teine lüliti, mis on eriti kasulik suurte failide ülekandmisel Internetis. Kui rsync katkestatakse mingil põhjusel failiedastuse keskel, säilitatakse osaliselt ülekantud fail sihtkataloogis ja üleandmine jätkub, kui see jäi välja, kui rsynci käsk uuesti käivitatakse. Suurte failide ülekandmisel internetis (näiteks paar gigabaiti) ei ole midagi halvemat kui mõni teine Interneti-katkestuse puudumine, sinine ekraan või inimviga tõrjub teie failide ülekandmist ja peab uuesti alustama.
-P
- see lüliti ühendab
--progress
ja
--partial
nii et kasutage seda selle asemel ja see muudab teie rsync käskluse veidi vähemaks.
-z
või
--compress
- See lüliti muudab rsync tihendusfaili andmed selle ülekandmisel, vähendades sihtkohale saadetud andmete hulka. See on tõesti üsna tavaline lüliti, kuid see pole kaugeltki oluline, vaid aeglane ühendamine vahetuks ülekanneteks on tõeline kasu ja see ei tee midagi järgmist tüüpi failide jaoks: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.
-h
või
--human-readable
- Kui kasutate
--progress
lülitage, kindlasti soovite seda ka kasutada. See tähendab, et kui soovite, et baiti megabaitides käsitsi teisendataks. The
-h
lülitab kõik väljundandmed numbritele inimesele loetavas vormingus, nii et saate tegelikult ülekantavate andmete hulga mõtet.
-n
või
--dry-run
- See lüliti on oluline teada, kui sa esmakordselt oma rsync skripti kirjutavad ja katsetad seda. See viib läbi katsetamise, kuid tegelikult ei tee midagi muudatusi - endised muudatused on endiselt väljastatud nii nagu tavaliselt, nii et saate lugeda üle kõik ja veenduda, et see tundub hästi enne skripti tootmist.
-R
või
--relative
- Seda lülitit tuleb kasutada, kui sihtkataloogi pole veel olemas. Me kasutame seda võimalust hiljem käesolevas juhendis, nii et me saaksime sihtsadamas katalooge katalooginimede ajatemplitega.
--exclude-from
- Seda lülitit kasutatakse, et linkida väljajätmise loendiga, mis sisaldab kataloogiteid, mida te ei soovi varundatud. Selleks on vaja lihtsalt tekst-faili, milles on iga rea kataloog või faili tee.
--include-from
- Sarnane
--exclude-from
kuid see lingib faili, mis sisaldab varundatud andmete kataloogide ja failide asukohti.
--stats
- Tegelikult pole oluline mingil juhul sisse lülitatud, kuid kui oled sysadmin, siis on kasulik teada iga varukoopia üksikasjalikku statistikat, et saaksite jälgida teie võrgu kaudu edastatava liikluse ulatust.
--log-file
- See võimaldab teil rsynci väljundi saata logifaili. Soovitame kindlasti seda automaatseks varundamiseks, kus te ei ole seal, et väljundeid ise lugeda. Alati anna logifaile oma vaba aja veetmiseks, et kõik toimiks korralikult. Samuti on see sysadmini jaoks otsustavaks lülitiks, nii et te ei jäta järele mõtlematult, kuidas teie varukoopiaid ebaõnnestusid, kui te jätsite interni eest.
Vaatame nüüd meie käsuga rsync käsku, et meil on veel mõned lülitid lisatud:
rsync -avzhP --delete --stats --log-file=/home/geek/rsynclogs/backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/
Käsu on endiselt üsna lihtne, kuid me pole ikka veel loonud korraliku varundamise lahenduse. Kuigi meie failid on nüüd kahes erinevas füüsilises asukohas, ei tee see varundamine midagi, mis kaitseks meid andmete kaotamise peamistest põhjustest: inimlik viga.
Snapshot Varukoopiad
Kui te kogemata faili kustutate, rikub viirus mis tahes teie faile või midagi muud juhtub, kui teie failid on soovimatult muudetud, ja seejärel käivitage oma rsync-varukoopia skript, teie varundatud andmed asendatakse soovimatute muudatustega. Kui selline asi leiab aset (mitte siis, kui, kuid), ei suutnud teie varukoopia lahendus teie andmekaotust kaitsta.
Rsynci looja aru sain ja lisas
--backup
ja
--backup-dir
argumendid, et kasutajad saaksid kasutada erinevat varukoopiaid. Rsynci veebisaidi esimene näide näitab skripti, kus iga seitsme päeva tagant täieliku varundamise käivitatakse, ning nende failide muudatused varundatakse eraldi kataloogides iga päev. Probleem selle meetodiga on see, et failide taastamiseks tuleb neid seitsme erineva aja jooksul taastada. Veelgi enam, enamik geeksid käivitavad nende varukoopiaid mitu korda päevas, nii et teil oleks igal ajahetkel hõlpsasti 20 + varukataloogi. Mitte ainult ei taasta oma failid nüüd valu, vaid isegi varukoopiate vaatamine võib osutuda väga aeganõudvaks - peate teadma viimast faili muutmisest, et leida selle uusim varundatud koopia. Peale selle on ebaefektiivne töötada ainult kord nädalas (või mõnel juhul sagedamini) täiendavate varukoopiatega.
Snapshot varundamine päästmiseks! Snapshot varukoopiad on midagi enamat kui täiendavad varukoopiad, kuid nad kasutavad kõva viiteid, et säilitada algse allika failistruktuur. See võib olla raske kõigepealt oma pea ümber asetada, nii et vaatame näitena.
Teeme ette, et meil on varukoopia skript, mis automaatselt varundab meie andmeid iga kahe tunni tagant. Iga kord, kui rsync seda teeb, nimetab see iga varukoopia järgmisel kujul: Backup-month-day-year-time.
Lõppkokkuvõttes tüüpiline päev, meil oleks nimekiri kataloogidest sellesse sihtkoha kataloogi nagu see:
--link-dest=DIR
argument.
Muidugi, selleks, et neid kenasti ja kenasti kataloogitud nimesid oleksid, on meil vaja natuke uuendada meie rsync-skripti. Vaatame, mida ta vajab sellise varundatud lahenduse saavutamiseks, ja siis selgitame skripti üksikasjalikumalt:
#!/bin/bash
#copy old time.txt to time2.txt
yes | cp ~/backup/time.txt ~/backup/time2.txt
#overwrite old time.txt file with new time
echo `date +”%F-%I%p”` > ~/backup/time.txt
#make the log file
echo “” > ~/backup/rsync-`date +”%F-%I%p”`.log
#rsync command
rsync -avzhPR --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --stats --log-file=~/backup/rsync-`date +”%F-%I%p”`.log --exclude-from '~/exclude.txt' --link-dest=/home/geek2/files/`cat ~/backup/time2.txt` -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/`date +”%F-%I%p”`/
#don’t forget to scp the log file and put it with the backup
scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log
See oleks tüüpiline snapshot-rsync-skript. Kui sa kaotad sind kusagil, laseme selle tükk lahti lõigata:
Meie skripti esimene rida kopeerib time.txti sisu ajaks2.txt. Jahitoru on kinnitada, et me tahame faili üle kirjutada. Järgnevalt võtame arvesse praegust kellaaega ja pane see aegseks.txt. Need failid on hiljem kasulikud.
Järgmine rida teeb rsync logifaili, nimetades seda rsync-date.log (kus kuupäev on tegelik kuupäev ja kellaaeg).
Nüüd, kompleksne rsync käsk, millest me teile hoiatasime:
-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest
- Just lülitid, millest me rääkisime varem; kerige üles, kui vajate täiendamist.
--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r
- Need on sihtkoha kataloogi õigused. Kuna me teeme selle kataloogi meie rsync-skripti keskel, peame määrama õigused, nii et meie kasutaja saaks neile faile kirjutada.
Kuupäeva ja kassi käskluste kasutamine
Käsime käsku rsync käskude ajal käsku kuupäev ja kass käskudele üle minna nii, et need esineksid. Märkus. Oleme teadlikud, et selle funktsiooni saavutamiseks on muid võimalusi, eriti muutujate deklareerimise kasutamisel, kuid selle juhendi eesmärgil oleme otsustanud seda meetodit kasutada.
Logifail on määratud järgmiselt:
~/backup/rsync-`date +”%F-%I%p”`.log
Teise võimalusena oleksime võinud seda täpsustada järgmiselt:
~/backup/rsync-`cat ~/backup/time.txt`.log
Mõlemal juhul
--log-file
käsk peab suutma leida eelnevalt loodud kuupäevastatud logifaili ja kirjutada sellele.
Linki sihtkoha fail on määratud järgmiselt:
--link-dest=/home/geek2/files/`cat ~/backup/time2.txt`
See tähendab, et
--link-dest
käsk annab eelmise varukoopia kataloogi. Kui kasutame varukoopiaid iga kahe tunni tagant ja kell 16:00 kell selle skripti käivitati, siis
--link-dest
käsk otsib kataloogi, mis loodi kell 14:00, ja edastab ainult alates sellest ajast muutunud andmed (kui need on olemas).
Kordan, et seepärast kopeeritakse time.txt skripti alguses ajaks2.txt, nii et
--link-dest
käsk saab seda aega hiljem viidata.
Sihtkataloog on määratud järgmiselt:
[email protected]:/home/geek2/files/`date +”%F-%I%p”`
See käsk lihtsalt paneb lähtefailid kataloogi, millel on praeguse kuupäeva ja kellaaja pealkiri.
Lõpuks veendume, et logifaili koopia asetatakse varundusse.
scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log
Kasutame turvalist koopiat pordil 12345, et võtta rsynci logi ja asetada see õigesse kataloogi. Õige logifaili valimiseks ja veendumaks, et see jõuab õigesse kohta, peab faili time.txt olema viidatud kassi käsuga. Kui te ei tea, miks otsustasime katse time.txt asemel kasutada kuupäeva käsu, seepärast, et rsync käskluse käivitamisel võis olla palju aega, nii et veenduge, et meil on õige aeg, me lihtsalt kass varem loodud tekstidokument.
Automatiseerimine
Kasutage oma rsync-skripti automatiseerimiseks Cronit Linuxis või tööülesannete planeerijat Windowsis. Üks asi, mida peate olema ettevaatlik, on tagada, et lõpetate kõik jooksvalt käivitatavad rsynci protsessid enne uue töö jätkamist. Tundmatud, et tööülesannete loend lõpetab kõik juba käimasolevad toimingud automaatselt, kuid Linuxi puhul peate olema natuke rohkem loominguline.
Enamik Linuxi distributsioone saab kasutada käsku pkill, seega lisage kindlasti oma rsync-skripti algusse järgmine asi:
pkill -9 rsync
Krüptimine
Nope, me pole veel teinud. Lõpuks on meil fantastiline (ja tasuta!) Varukoopia lahendus, kuid kõik meie failid on endiselt vastuvõtlikud vargusele. Loodetavasti varundate oma failid mõne koha sajandite miili kaugusele. Pole tähtis kui turvaline see kaugel asi, on vargus ja häkkimine alati probleemid.
Meie näidete puhul oleme kõik meie rsync-liiklus läbi SSH-i tuneenud, seega tähendab see, et kõik meie failid on sihtriigis transportimise ajal krüptitud. Siiski peame tagama, et sihtkoht on sama turvaline. Pidage meeles, et rsync krüpteerib teie andmeid ainult siis, kui see on üle kantud, kuid failid on sihtkohaks jõudmiseks laiad.
Üks rsynci parimatest omadustest on see, et see muudab ainult muudatused igas failis. Kui teil on kõik oma failid krüptitud ja tehke üks väike muudatus, tuleb krüptimise tulemusena kogu fail uuesti saata, et kõik muudatused pärast kõigi andmete täielikku randomiseerimist.
Sellepärast on kõige parem / lihtsam kasutada mõnda tüüpi ketta krüpteerimist, näiteks Windows BitLocker või Linuxi dm-krüpt. Sel juhul on teie andmed kaitstud varguse korral, kuid faile saab rsynciga üle kanda ja teie krüptimine ei takista selle toimivust. Olemas on ka teisi võimalusi, mis töötavad rsynciga sarnaselt või isegi mõnda selle vormi, näiteks Duplicity, kuid neil puuduvad mõned funktsioonid, mida rsync võib pakkuda.
Kui olete oma hetktõmmis varukoopiate seadistanud väljalülitatud asukohas ja krüpteerinud oma lähtekoodi ja sihtkoha kõvakettad, andke end selgeks, et rsync saaksid hakata ja rakendama võimalikult pahatahtliku andmete varundamise lahendust.