Kuidas rsynciga töötada. Rsynci tõhus kasutamine

rsync(ing. Remote Synchronization) on UNIX-i sarnaste süsteemide programm, mis sünkroonib faile ja katalooge kahes kohas liikluse minimeerimisega, kasutades vajadusel andmete kodeerimist. Oluline erinevus rsynci ja paljude teiste programmide/protokollide vahel on see, et peegeldamine toimub ühe lõime kaudu igas suunas (mitte ühe või mitme lõime faili kohta). rsync saab kopeerida või kaardistada kataloogi sisu ja kopeerida faile, kasutades valikuliselt tihendamist ja rekursiooni.

Rsync-protokolli rakendav rsyncd deemon kasutab vaikimisi TCP-porti 873.

    Algoritm

Utiliit rsync kasutab Austraalia programmeerija Andrew Tridgelli välja töötatud algoritmi struktuuride (nt failide) tõhusaks ülekandmiseks sideühenduste kaudu, kui vastuvõtval arvutil on juba selle struktuuri erinev versioon. Vastuvõttev arvuti jagab oma faili koopia kindla suurusega S mittekattuvateks tükkideks ja arvutab iga tüki jaoks kontrollsumma: MD4 räsi ja nõrgem jooksev kontrollsumma ning saadab need serverisse, millega sünkroonib. Server, millega need on sünkroonitud, arvutab iga failiversiooni S-suuruse tüki jaoks kontrollsummad, sealhulgas kattuvad osad. Seda saab tõhusalt arvutada jooksva kontrollsumma eriomaduse tõttu: kui baitide jooksev kontrollsumma vahemikus n kuni n+S-1 on R, siis baitide jooksva kontrollsumma vahemikus n+1 kuni n+S saab arvutada väärtusest R , bait n ja bait n +S, ilma et peaks arvestama selles intervallis olevaid baite. Seega, kui jooksva kontrollsumma baidid 1-25 on juba välja arvutatud, siis kasutatakse jooksva kontrollsumma baitide 2-26 arvutamiseks eelmist kontrollsummat ning baite 1 ja 26.

    Rsync otsib failid, mida saata, kasutades "kiirkontrolli" algoritmi (vaikealgoritm), otsides faile, mille suurus või viimati muudetud kuupäev on muutunud.

    Pange tähele, et rsync peab olema installitud nii kohalikule kui kaugarvutile.

    Rakendus. rsync loodi rcp ja scp asendamiseks. Üks esimesi rsynci kasutusalasid oli Unixi klientsüsteemide peegeldamine või varundamine kesksesse Unixi serverisse, kasutades rsync/Configure ja SSH-d ning tavalist Unixi kontot. Tegumiplaanijaga, nagu Linuxi cron-planeerija kasutamine, on võimalik korraldada automatiseeritud rsynci-põhist peegeldamist krüptograafiliselt turvalise kanali kaudu paljude arvutite ja keskserveri vahel.

rsynci käivitusvõtmed

    Näide: kohalikud kataloogid. Kausta dir_a sisu sünkroonitakse rekursiivselt (kui lähtekataloogi lõpus on "/", tähendab see kataloogi sisu kopeerimist; kaldkriipsu puudumine tähendab kataloogi ja selle sisu kopeerimist.) dir_b kataloog. Failide ülekandmine toimub "arhiivi" režiimis, mis tagab sümboolsete linkide, seadmefailide, atribuutide, õiguste, õiguste jms säilimise edastamise ajal. Tihendamist kasutatakse edastatavate andmete suuruse vähendamiseks. Allikast puuduvad failid (dir_a) kustutatakse kataloogist dir_b. rsync -avz --delete /src/dir_a/ /data/dir_b

    Näide: kaugkataloog sünkroonitakse kohaliku kataloogiga: rsync -az -e ssh --delete 192.168.1.14:/home/pub_remote/ /home/pub_local

    Näide: edastage ssh-identiteedivõti käsurea kaudu rsync -avz --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i /root/rsync / Mirror-rsync-key"

    -n, --kuivkäivitus Silumisrežiim. Sel juhul ei muuda ega kustuta rsync faile, vaid näitab kogu edenemist.

    -q, -vaikne Valik vähendab edastuse ajal kuvatava teabe hulka, serverist saabuvate sõnumite arv on oluliselt alla surutud. See suvand on kasulik, kui rsynci käivitab cron.

    -v, --sõnaline See valik suurendab ülekande ajal kuvatava teabe hulka. Vaikimisi ei väljasta rsync midagi. Üksik valik -v annab teile teavet selle kohta, milliseid faile migreeritakse, ja lõpus lühikese kokkuvõtte. Kaks suvandit -v annavad teile teavet selle kohta, milliseid faile migreeritakse, milliseid ei ole vaja värskendada, ja lõpus veel natuke teavet. Rsynci silumisel kasutatakse rohkem kui kahte suvandit -v. Vaikefaili väljundvorming on -out-formaat "%n%L", mis näitab ainult failinimesid ja kui objekt on link, siis millele see viitab. Esimene silumimistase (üksik -v) ei näita failiatribuutide muudatusi. Kui küsite muutunud atribuutide üksikasjalikku loendit (määrake suvand -itemize-changes või lisage -out-vormingusse "%i", siis väljund (kliendis) suureneb, et mainida kõiki elemente, mida on muutunud. Vaadake lisateabe saamiseks suvandit -out-format.

    -a, -arhiiv Samaväärne -rlptgoD-ga. See on kiire viis öelda, et soovite rekursiivset töötlemist ja salvestate peaaegu kõik (valik -H oleks märkimisväärne väljajätmine). Ainus erand ülaltoodud samaväärsusest on see, kui on määratud -failid-from, mille puhul suvand -r ei mõjuta. Pange tähele, et suvand -a ei säilita kõvalinke, kuna mitme märgiga failide otsimine on kallis. Eraldi peate kasutama suvandit -H.

    --ei-VALIK Saate ühe või mitu valikut keelata, lisades valiku nime ette "no-". Kõikidele valikutele ei saa seda lisada: ainult valikud, mis tulenevad muudest suvanditest (nt -no-D, -no-perms) või millel on erinevates olukordades erinevad kohustused (nt -no-whole-file, -no- blocking-io , -no-dirs). Prefiksi järel saab määrata pikki või lühikesi valikuid (nt -no-R või -no-relative). Näiteks: kui soovite kasutada suvandit -a (-archive), kuid ei soovi -o (-omanik), siis selle asemel, et muuta -a väärtuseks -rlptgD, saate määrata -a -no-o (või -a -omanikuta). Valikute järjekord on oluline: kui määrate -no-r -a, jääb valik -r ikkagi kaasa, peate määrama -a -no-r. Pange tähele, et suvandi -files-from kõrvalmõju EI OLE positsiooniline, samas kui see mõjutab mitme suvandi vaikeolekut ja muudab veidi võtme -a tähendust (lisateavet leiate suvandist -files-from)

    -z, - tihendada selle valikuga tihendab rsync kõik edastatud failiandmed. See on kasulik aeglastel liinidel. Kasutatav tihendusmeetod on sama, mida rakendab gzip. Pange tähele, et nii saavutatakse tavaliselt parem tihendusaste, kui on võimalik saavutada shell-programmi kaugtihendusega või transpordikihi tihendamisega, tihendusprotsessi kaasatakse kogu vastavatesse andmeplokkidesse saadetud teave. --compress-level=NUM konkreetselt määratud tihendustase --skip-compress=LIST jäta vahele sufiksiga failid tihendamisest loendis LIST

    -b, --varundus make backups --backup-dir=DIR tee varukoopiaid määratud kataloogi --suffix=SUFFIX varukoopiate järelliide (vaikimisi ~)

    --numbrilised-id Grupi- ja kasutajanimede asemel saadetakse nende numbrilised ID-d ja sobitatakse mõlemas otsas. Vaikimisi kasutab rsync failide omaniku määramiseks rühma- ja kasutajanimesid. Spetsiaalseid uid 0 ja gid 0 ei kuvata kunagi kasutajate/rühmade nimede kaudu, isegi kui --numeric-ids pole määratud.

Kui lähtesüsteem töötab piiratud chroot-keskkonnas või kui kasutajat või rühma vastuvõtval poolel ei eksisteeri, kasutatakse algseid numbrilisi ID-sid.

    -c, --kontrollsumma Muudab muudetud failide kontrollimise viisi. Ilma selle suvandita kasutab rsync "kiire kontrolli" algoritmi (vaikimisi määratud), mis kontrollib failide suuruse ja muutmisaegade erinevusi. See suvand muudab algoritmi, et võrrelda iga faili suurusele vastava faili 128-bitise MD4 kontrollsummaga. Kontrollsummade tegemine tähendab, et mõlemad pooled kulutavad palju ketta sisend-/väljundit, et lugeda kõiki ülekantud failides olevaid andmeid (ja seda enne lugemist, mis on mõeldud muudetud failide ülekandmiseks), nii et see võib asja oluliselt aeglustada. Saatja pool genereerib failisüsteemi kontrollimise ajal kontrollsummasid, mis loob saadaolevate failide loendi. Vastuvõtja genereerib muudetud failide otsimisel kontrollsummad ja kontrollib kõik failid, mis on sama suurusega kui vastav saadetav fail: edastamiseks valitakse muudetud suuruse või muudetud kontrollsummaga failid. Pange tähele, et rsync kontrollib alati, kas iga ülekantud fail on vastuvõtvas otsas õigesti taastatud, kontrollides kogu failiedastuse käigus loodud faili kontrollsummat.

    -e, –rsh=COMMAND – saate määrata mis tahes kaugshelli (SSH konfigureerimine ja kasutamine , rsh , remsh) või määrata keskkonnamuutuja RSYNC_RSH. --rsync-path=PROGRAM määrake kaugmasinas töötav rsync --olemasolev vahelejätmine vastuvõtjas uute failide loomine --ignoreeri-olemasolevate vastuvõtjas olemasolevate failide värskendamise vahelejätmine --remove-source-files Saatja eemaldab sünkroonitud failid (mitte- dir) --del pseudonüüm --delete-during --delete kustutada sihtkataloogist kõrvalised failid. kustutada varukoopiast failid, mida enam allika poolel ei ole --delete-before ressiiver kustutab enne edastamist (vaikimisi) --delete-during vastuvõtja kustutab xferi ajal, mitte enne --delete-delay otsib kustutamisi ajal, kustuta pärast -- kustuta- pärast vastuvõtja kustutamist pärast edastamist, mitte enne "-pärast" tähendab, et peate failid kustutama alles pärast sünkroonimise lõppu. --delete-excluded kustutab ka välistatud failid sihtkataloogist --ignore-errors kustutab isegi siis, kui esineb I/O vigu. Kustutage isegi siis, kui esineb I/O vigu. --sundi kaustade kustutamine, isegi kui see pole tühi --max-delete=NUM ära kustuta rohkem kui NUM faili --max-size=SIZE ära edasta ühtegi faili, mis on suurem kui SIZE "t teisaldage faile, mis on väiksemad kui SIZE

Kustutamine erineb käsust --delete-after selle poolest, et kustutamine toimub varundusprotsessi alguses, mitte lõpus. --delete-after on kiirem, kuna see ei nõua täiendavat faililoendi läbimist, kuid nõuab võtme --force kasutamist selliste olukordade käsitlemiseks nagu faili kustutamine ja sama nimega kataloog ilmuma;

Välistamismustrid

Välistamise ja kaasamise mustrid, kui need on määratud, võimaldavad paindlikkust määrata, millised failid tuleks üle kanda ja millised vahele jätta.

rsync koostab järjestatud loendi, mis põhineb käsureal antud suvanditel --include/ --exclude. Rsync kontrollib iga faili või kataloogi nime iga kaasamise/välistamise mustri suhtes. Esimene matš jõustub. Kui sobitatud muster on eksklusiivne, jäetakse sobiv fail vahele. Kui muster on kaasav, siis seda vahele ei jäeta. Kui failinime jaoks pole sobivaid mustreid, ei jäeta seda ka vahele.

Selliste mustritega sobitatavate failide nimed on seotud sihtkataloogi ehk "ülemise kataloogiga", seega ei pea mustrid sisaldama lähte- või sihtkataloogi elemente. Ainus juhtum, kus mustreid võrreldakse absoluutsete faili- või kataloogiteedega, on siis, kui lähtetee on failisüsteemi juurkataloog.

Pange tähele, et kui kasutate suvandit -r (mida viitab -a), vaadatakse iga tee iga eraldiseisvat osa ülalt alla, nii et kaasamise/välistamise mustrid rakendatakse igale sellisele osale rekursiivselt.

Pange tähele ka seda, et valikud --include ja --exclude lubavad kumbki ainult ühte mustrit. Mitme mustri lisamiseks kasutage vastavalt suvandeid --include-from ja --exclude-from või mitut --include ja --exclude.

Malle saab määrata mitmel kujul. Nende jaoks kehtivad reeglid:

    Kui muster algab tähega /, siis vastendatakse see failinime algusega, vastasel juhul sobitatakse see failinime lõpuosaga. See on regulaaravaldiste juhtiva ^ ekvivalent. Seega peab "/foo" vastama edastatava puu ülaosas olevale failile nimega "foo". Teisest küljest peab "foo" vastama mis tahes failile "foo" kõikjal kataloogipuus, kuna algoritmi rakendatakse rekursiivselt ülalt alla. See toimib nii, nagu oleks iga tee komponent failinime lõpp. Esialgne / ei muuda mustrit absoluutseks teeks.

    Kui muster lõpeb tähega /, vastab see ainult kataloogile, mitte failile, mitte lingile ega seadmele.

    Kui muster sisaldab metamärke komplektist *?[, siis kasutatakse sobitamiseks kesta failinimede asendamise reegleid. Vastasel juhul sobitage lihtsalt string.

    Kahe tärniga vaste sisaldab kaldkriipsu, samas kui kaldkriipsu üks tärn * lõpetab vaste.

    Kui muster sisaldab kaldkriipsu (arvestades lõpu kaldkriipsu) või "" , siis vastendatakse muster täielikult kvalifitseeritud failinimega, sealhulgas mis tahes ülemkataloogidega. Kui muster ei sisalda / või " ", siis kontrollitakse mustrit failinime lõpuosaga. Jällegi pidage meeles, et algoritmi rakendatakse rekursiivselt, nii et "täielik failinimi" võib tegelikult olla mis tahes osa teest, mis asub kodukataloogi hierarhias sügaval.

    Kui muster algab tähega "+" (pluss, millele järgneb tühik), käsitletakse seda alati kaasava mustrina, isegi kui see on määratud välistamisparameetri osana. "+" osa ennast ei võeta vaste kontrollimisel arvesse.

    Kui muster algab tähega "-" (miinus, millele järgneb tühik), käsitletakse seda alati eksklusiivse mustrina, isegi kui see ilmub kaasamisparameetri osana. Osa "-" ennast ei võeta sobivuse kontrollimisel arvesse.

    Kui muster määrab ühe hüüumärgi! , siis lähtestatakse praegune kaasamise/välistamise loend, kustutades kõik eelnevalt määratletud mustrid.

+/- reeglid on kõige kasulikumad failist loetavates loendites, võimaldades teil luua ühe üldise loendi, mis sisaldab nii eksklusiivseid kui ka kaasavaid mustreid.

Kui lõpetate välistamisloendi märgiga --exclude "*", pange tähele, et rekursiivse olemuse tõttu peatub algoritm ülemkataloogidel ega proovi neis olevaid faile, välja arvatud juhul, kui lisate selgesõnaliselt lubatavate failide ülemkatalooge. Kõigi kataloogide kaasamiseks kasutage --include "*/" enne --exclude "*".

Mõned kaasamise/välistamise näited:

Välista "*.o" välistab kõik failinimed, mis vastavad *.o-le --välista "/foo" välista faili nimega foo ülemises kataloogis --välista "foo/" välista kataloog nimega foo --välista "/foo/ */bar" välista puu ülaosas olevast kataloogist "foo" hierarhias kaks taset madalamal olevad failid nimega riba -- välistage "/foo/**/bar" välistage kõik failid nimega riba hierarhias kaks või enam taset madalamal ülalt kataloog "foo" --include "*/" --include "*.c" --exclude "*" sisaldab ainult C-allika katalooge ja faile --include "foo/" --include "foo/bar .c" - -exclude "*" sisaldab ainult foo/bar.c (kataloog foo/ peab olema selgesõnaliselt kaasatud, vastasel juhul jäetakse see "*" tõttu välja)

Lõpetamiskoodid

0 Õnnestus 1 Süntaksi- või kasutusviga 2 Protokolli mitteühilduvus 3 Sisend-/väljundfaili ja kataloogi valiku vead 4 Soovitud toimingut ei toetata: 64-bitiste failidega üritati töötada platvormil, mis neid ei toeta; või on määratud parameeter, mida toetab ainult klient ja mida server ei toeta. 5 Viga klient-serveri protokolli käivitamisel 10 I/O pesa viga 11 Faili I/O viga 12 Viga rsync-protokolli andmevoos 13 Diagnostikavead 14 IPC viga 20 Saanud SIGUSR1 või SIGINT signaalid 21 waitpid() tagastab vea 22 Error tuummälu puhvrite eraldamine 23 Mittetäielik edastamine vea tõttu 24 Mittetäielik edastamine lähtefaili puudumise tõttu 30 Edastamise/vastuvõtmise ajalõpp

Keskkonnamuutujad

CVSIGNORE Keskkonnamuutuja CVSIGNORE täiendab .cvsignore-faili välistamismustreid. Vaadake üksikasju suvandist --cvs-exclude. RSYNC_RSH Keskkonnamuutuja RSYNC_RSH võimaldab alistada kaugshelli programmi, mida rsync transpordina kasutab Shelli käsurea valikud määratakse programmi nime järel, täpselt nagu võti -e RSYNC_PROXY Keskkonnamuutuja RSYNC_PROXY võimaldab teil öelda rsynci klient kasutab rsynci serveriga ühenduse loomiseks veebipuhverserverit Peate määrama puhverserveri hostinimi:pordi paarina RSYNC_PASSWORD Säte RSYNC_PASSWORD võimaldab luua rsynci serveriga ühenduse ilma kasutaja sekkumiseta parooli sisestamisel Pange tähele, et see pole sama transpordishelli paroolina, nt ssh.USER või LOGNAME Keskkonnamuutujaid USER või LOGNAME kasutatakse vaikekasutaja määramiseks, kelle nimi antakse rsync serverile autentimiseks HOME Muutujat HOME kasutatakse kasutaja faili .cvsignore otsimiseks. faili.

rsync skripti näited

#!/bin/bash # täielik tee teie kataloogikirje juurde BACKUP_LST =/ etc/ backup/ backup.lst cat $(BACKUP_LST) | lugemise ajal Res; tehke rsync -e ssh -acq --delete --force $Res [e-postiga kaitstud] B:/var/ backup$Resdone

Amazon EC2-s on Ubuntuga mitu identset serverit (4 sõlme). Igaüks neist loob ja salvestab oma kettale vahemälu, mida ta soovib sünkroonida. Kuid lihtne rsync siin ei tööta - faile on mitu miljardit, nfs on liiga aeglane jne. Allpool on täielik loend kaalutud võimalustest koos selgitustega.

Lisaks tuleb aeg-ajalt kustutada kõikidest serveritest korraga vananenud failid, mis tehakse ikka käsitsi ja võtab mitu päeva. Küsimust kiireima failisüsteemi kohta sellise kasutusjuhtumi jaoks plaanin kirjeldada hiljem. Ma teen ainult reservatsiooni, et XFS valiti mitmel põhjusel.

Pärast mitmete klastritehnoloogiate ja failisüsteemide testimist otsustasime ühe vanema sõbra nõuandel kasutada sama rsynci, kuid koos inotifyga. Olles veidi internetist sellist valmislahendust otsinud, et mitte jalgratast uuesti leiutada, sattusin csyncd, inosync ja lsyncd peale. Mul oli see juba Habrel, aga see ei sobi siia, sest. salvestab failide loendi SQLite'i andmebaasi, mis tõenäoliselt ei suuda isegi miljoni kirjega talutavalt töötada. Jah, ja lisalink selliste köidetega on kasutu. Kuid lsyncd osutus täpselt selleks, mida vajasime.

4. Käivitage deemon kõigil sõlmedel:

/etc/init.d/lsyncd algus

Kui jätsite konfiguratsiooni "nodaemon = true", näete, mis toimub.

Andmeedastuskiirus ulatub 300 Mbps-ni ja see mõjutab serveri koormust vähe (võrreldes näiteks sama GlusterFS-iga) ning viivitus silub sel juhul tipud. Palju oleneb kasutatavast FS-ist. Ka siin tuli teha veidi uurimistööd, numbrite ja graafikutega, kuna olukord on üsna spetsiifiline ja olemasolevate avaldatud testide tulemused ei kajasta ülesandes nõutavat.

Mida veel kaaluti ja miks ei sobi antud juhul

Kõik uuringud olid suunatud tööle Amazon EC2-ga, võttes arvesse selle piiranguid ja omadusi, mistõttu tehtud järeldused puudutavad peamiselt ainult seda.
  • DRBD – replikatsioon toimub ploki tasemel. Ühe kandja lagunemise korral hukkuvad mõlemad. 2 sõlme piirang. (Võimalik on rohkemgi, kuid 3. ja 4. saab ühendada ainult orjadena.)
  • Ocfs2 - kasutatakse kas DRBD peal (mis on hea Habrel) või peate saama ühendada ühe partitsiooni mitmest sõlmest. Pole võimalik ec2 puhul.
  • Gfs2 on ocfs2 analoog. Ma pole proovinud, kuna testide järgi on see failisüsteem aeglasem kui ocfs2, muidu on see selle analoog.
  • GlusterFS - siin töötas kõik peaaegu kohe ja nii nagu peab! Lihtne ja loogiline asjaajamine. Saate luua kuni 255 sõlmest koosneva klastri koopiate suvalise väärtusega. Tegin paarist serverist klastri partitsiooni ja ühendasin selle neile, kuid teise kataloogi (st serverid olid samal ajal ka kliendid). Kahjuks paigaldatakse see klaster kliendile FUSE kaudu ja kirjutuskiirus oli alla 3 MB / s. Ja nii, kasutajakogemus on väga hea.
  • Läige – selle asja kreneli režiimis käitamiseks tuleb kerneli paika panna. Kummalisel kombel on Ubuntu hoidlas pakett nende paikadega, kuid ma ei leidnud selle või vähemalt Debiani jaoks plaastreid. Ja arvustuste põhjal otsustades sain aru, et deb-süsteemis alustada on šamanism.
  • Hadoop w/ HDFS, Cloudera – ei proovinud, kuna leiti teine ​​lahendus (vt allpool). Aga esimene asi, mis silma hakkab, on Javas kirjutatud, nii et ressurssi tuleb palju süüa ja mastaap pole Facebooki või Yahoo oma, seni ainult 4 sõlme.

UPD: See lahendus osutus testides (mille järel artikkel kirjutati) suurepäraseks, kuid lahingutingimustes osutus kõik hoopis teistsuguseks. Minimaalne tootmiskonfiguratsioon on 584 tuhat pesastatud kataloogi. Ja lsyncd ripub inotify"ja edasi iga kataloog. Seda pole võimalik kogu puu jaoks korraga teha. Mälu, 584 tuhat märguannet, kulub suhteliselt vähe, umbes 200 MB (saadavast 16 GB-st), kuid see protsess võtab aega 22 minutit. Põhimõtteliselt pole see hirmutav: kui käivitate selle ja unustate selle. Kuid pärast seda alustab lsyncd tavakonfiguratsiooniga kõigi failide sünkroonimist, mis meie tingimustes oli kas lollakas või võttis päevi. Üldiselt - pole valik. 100% järjepidevust pole vaja ja esialgsest sünkroonimisest võib loobuda. Ei jäänud muud üle, kui see välja lülitada. Õnneks on deemon kirjutatud nii, et peaaegu kõiki selle funktsioone saab muuta otse konfiguratsioonist. Samuti asendati jõudluse suurendamiseks default.rsync failiga default.rsyncssh ja kernel häälestati teavituspiirangutele. See tähendab, et ülaltoodud konfiguratsioon sobib enamiku ülesannete jaoks, kuid meie konkreetses olukorras töötab järgmine:

Seadistused = ( logifail = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", statusInterval = 5, --<== чтобы видеть что происходит без включения подробного лога } sync { default.rsyncssh, source = "/raid", host = "node02", targetdir = "/raid", rsyncOps = {"-ausS", "--temp-dir=/tmp"}, --<== описано выше delay = 3, --<== ставим по-меньше, чтобы очередь не забивать init = function(event) --<== перезагрузка функции инициализации. как она выглядела в оригинале можно посмотреть в документации или в исходниках log("Normal","Skipping startup synchronization...") --<== чтобы знать, что мы этот код вообще запускали и когда end } sync { default.rsyncssh, source = "/raid", host = "node03", targetdir = "/raid", rsyncOps = {"-ausS", "--temp-dir=/tmp"}, delay = 3, init = function(event) log("Normal","Skipping startup synchronization...") end }

Kerneli seaded

inotifyl on kolm võimalust (vt ls /proc/sys/fs/inotify/):
max_queued_events - sündmuste maksimaalne arv järjekorras; vaikimisi = 16384;
max_user_instances – mitu teavitusjuhtumit saab üks kasutaja käivitada; vaikimisi = 128;
max_user_watches – mitu faili üks kasutaja saab vaadata; vaikimisi = 8192.

Tööväärtused:
echo " fs.inotify.max_user_watches = 16777216 # fs.inotify.max_queued_events = 65536 " >> /etc/sysctl.conf echo 16777216 > /proc/sys/fs/inotify/watches_3/5 /max_queued_events

Nii et kõik toimis juba tootmises.

Täname tähelepanu eest!

värbama 24. oktoober 2011, kell 00:52

Rsync: võimas utiliit kiireks, paindlikuks kaug- ja kohalike failide kopeerimiseks

  • puutuba*

Rsync on loodud asendama iidset Unixi kaugkopeerimisprogrammi rcp. Tänu oma ulatuslikele sünkroonimis- ja failiedastusvõimalustele kasutatakse rsynci sageli peeglite loomiseks.
Nutikat algoritmi kasutades edastab rsync ainult muudatused failidesse, ilma et peaks muudatuste tuvastamiseks kahte faili võrdlema. Lisaks teostab rsync tihendamist lennult, võimaldades teil faile maksimaalse efektiivsusega edastada.
Lisaks ülaltoodud maiuspaladele on rsyncil ka mitmeid kasulikke turvafunktsioone. See toetab ssh-d, soovitatud protokolli turvaliseks andmeedastuseks; enne teabe töötlemist kirjutab see selle ajutisse faili, et originaaliga midagi ei juhtuks; lõpuks toetab see käskude turvalise silumise erirežiimi.
Rsynci on lihtne kasutada, kuid see ei ole klõpsamis-ja-mängimise programm. See on võimas tööriist, mis võib olla väga kasulik, kuid pidage meeles, et olge ettevaatlik, sest sellega on lihtne asju sassi ajada.

Utiliidi süntaks
Utiliidi süntaks on lihtne ja üsna tavaline.
rsync [valikud] allikas [sihtkoht]
Kui määrate ainult allika, näeme failide loendit ilma kopeerimistoiminguta.

Valikud ja näited
Arusaadavuse hõlbustamiseks antakse sünkroonimistoimingud esmalt lokaalselt.
Kiire viis kahe kataloogi sünkroonimiseks on kasutada valikut -a:
rsync -a foobar_src/ foobar_dst/
Sel juhul kopeeritakse allikast pärit failid ja kataloogid sihtkohta ja kui seal olid failid, siis need, mis nime järgi kattusid, kirjutatakse üle ja ülejäänuid ei puudutata.

Võimalus -a määrab utiliidi arhiivirežiimi ja on samaväärne valikute komplektiga:
-r, --rekursiivne - rekursiivne režiim;
-l, --lingid - ümber ehitada sümbolid, mis tähendab, et mähitakse ka sümboolsed lingid;
-p, --perms - õiguste üleandmine;
-t, --times - saadab muutmisaja ja värskendab seda kaugsüsteemis. Täpse sünkroonimise jaoks tuleb see võti seadistada;
-g, --group - määrake sihtfaili rühm samale kui lähtefaili rühmale;
-o, --owner - määrake sihtfaili omanikuks lähtefaili omanik;
-D, - sama mis --devices --specials - seadke seadme failitüüp ja eritüüpi faili allikaga samaks.
Selle tulemusena saame lähtekataloogi koopia. Seda saab muide kasutada OS-i teisele kõvakettale ülekandmisel /etc/fstab timmides, grubi uuele kruvile installides/uuesti installides - saame töötava süsteemi, aga see on juba teine ​​teema.

Utiliidi töö kohta teabe kuvamiseks on võimalus - v, --sõnaline. Mida rohkem valikuid -v, seda informatiivsem on utiliidi väljund. Maksimaalne teabesisu saavutatakse nelja võimalusega -v, --sõnaline.

Kui meil on allikakataloogis ajakohane teave, siis selleks, et mitte ummistada vastuvõtjat teabega, mis töö käigus allikas kustutati või teisaldati, peame kustutama vanad failid ja kataloogid. Selleks on mitu eemaldamisvalikut, millest igaüks pakub erinevat eemaldamisalgoritmi. Neid on kuus!
--del on lühend sõnast --delete-during ;
--delete – lihtsalt kustuta vastuvõtjast kõrvalised failid;
--delete-before - vastuvõtja kustutab enne edastamist;
--delete-during - vastuvõtja kustutab edastuse ajal, kuid mitte varem;
--delete-delay – viivitatud kustutamine/leida failid, mida edastuse ajal kustutada, kuid kustutada pärast ülekandmist;
--delete-after - vastuvõtja kustutab pärast edastamist, kuid mitte enne seda;
--delete-excluded - kustutab vastuvõtjast ka välistatud failid, selleks on määratud muster (--exclude=MUSTER).

Oletame, et meil on vastuvõtjas uuemad failid ja me ei taha, et need allika vanad failid üle kirjutaksid, siis kasutatakse selleks võtit -u, --värskendus.
-u, --update – jäta failid vahele, kui fail on vastuvõtjas uuem.
Ärge kartke, kui kataloogide kuupäevad on muutunud, sest. faile ennast üle ei kirjutatud.

Mõnikord võivad failid olla kahjustatud või muudetud, kuid sama kuupäev ja suurus. Seejärel saate kasutada kontrollsumma kinnitamise valikut -c, --kontrollsumma.

Minu ülesandeks oli välja mõelda, kuidas varundada fotode, muusika, ülikooli ja töökogemuse kogusid. Samas on allikas olev info alati ajakohane ja see, mis kustutatakse, on prügi. Näide minu probleemi lahendamiseks:
rsync -auvv --delete-during foobar_src/foobar_dst/
See värskendab minu vastuvõtjat, kui see on juba millegagi täidetud – see puhastab selle, mida allikas pole, kuid ei mõjuta uuemaid faile, kuvab iga faili statistika ja oleku.

Kaugtöö
Lisaks on selle võime ssh kaudu töötada väga kasulik. Mis pakub kanalite krüptimist, mis on väga oluline, kui sünkroonite Internetis kahte serverit. Liikluse vähendamiseks teab rsync ka andmeid tihendada, kui neid võrgu kaudu edastatakse.
Vaja on järgmisi valikuid.
-e - määrake kaugshell kasutamiseks;
-z - tihendage edastatud andmed või määrake:
-compress-level=9 - tihendus koos tihendustaseme seadistusega.

Näide kaughostist kopeerimisest ssh-protokolli kaudu:
rsync -avv --delete-during -compress-level=9 -e "ssh -p remote_ssh_port" [e-postiga kaitstud]:/dir/to/foobar_src foobar_dst/
Samal ajal peab allika poolel olema installitud utiliit rsync.

Loodan, et see teave on paljudele kasulik. Lisateavet rsynci utiliidi kohta leiate selle dokumentatsioonist, kuna see on hästi kirjeldatud.
Sealt leiate ka teavet selle kohta, kuidas seadistada rSynci deemon otseühenduseks ilma kaug-ssh-shelli kasutamata, samuti paljude muude võimaluste kirjelduse igale maitsele ja värvile.

Sildid: rsync, kopeerimine, failide varundamine, failide sünkroonimine

rsync kasutab GNU pika parameetri nimelepingut. Paljudel käsurea valikutel on kaks valikut, üks lühike ja teine ​​pikk. See kajastub allpool, eraldades kaks valikut komaga. Mõnel valikul on ainult pikk valik. Märk "=" valikulise väärtusega valikute jaoks on valikuline ja selle saab asendada tühikuga.

    H, --help Saadaolevaid rsync-suvandeid kirjeldava lühikese spikri printimine

    Version Prindib rsynci versiooninumbri ja väljub

    V, --verbose See suvand suurendab edastamise ajal väljastatava paljusõnalisuse hulka. Vaikimisi on rsync vaikne. Üksik -v annab tulemuseks ülekantud failide loendi ja selle lõpus lühikese kokkuvõtte. Kaks -v laiendavad vahelejäetud failide üksikasju ja annavad lõpus veidi rohkem teavet. Suuremat arvu võib vaja minna ainult rsynci silumisel.

    Q, --quiet Vähendab üksikasjade hulka peamiselt sõnumite edastamise kohta kaugserverist. See suvand on kasulik, kui kutsutakse cronist.

    I, --ignore-times Tavaliselt ignoreerib rsync faile, mille suurus ja muutmisaeg on identsed. See säte keelab selle "kiirkontrolli" käitumise.

    Ainult suurus Tavaliselt jätab rsync vahele failid, mille suurus ja muutmisaeg on identsed. Valikuga --size-only jäetakse failid vahele, kui need on sama suurusega, olenemata muutmise ajast. See on kasulik, kui kasutate rsynci kohe pärast teise peegelsüsteemi käivitamist, mis ei salvestanud täpseid aegu.

    Modify-window Kahe ajatempli võrdlemisel peab rsync ajatempleid võrdseks, kui need erinevad modify_window väärtuse piires. Tavaliselt on see väärtus null, kuid mõnel juhul võib osutuda kasulikuks seada see kõrgemale väärtusele. Praktikas on Windowsi FAT-failisüsteemi ülekandmisel, mis ei suuda esitada aega lähima sekundi täpsusega, üsna kasulik --modify_window=1.

    C, --checksum Sunnib saatjat enne edastamist kõik failid 128-bitise MD4 algoritmi abil kontrollsumma tegema. Seejärel kontrollitakse kontrollsummat vastuvõtja poolel, et jätta vahele juba olemasolevate sama suuruse ja kontrollsummaga failide edastamine. See seade võib põhjustada mõningast aeglustumist.

Pange tähele, et -a ei säilita kõvalinke, kuna mitme lingiga failide leidmine on kallis. Eraldi peate määrama -H.

    R, --relative Kasutage suhtelisi teid. See tähendab, et saadetakse täielikud käsureal määratud teed, mitte failinimede viimased osad. Praktikas on see kasulik siis, kui on vaja saata korraga mitu erinevat kataloogi. Näiteks kui määrate käsu:

rsync foo/bar/foo.c remote:/tmp/

siis loob see faili foo.c kaugmasinas /tmp kaustas. Kui selle asemel täpsustate

rsync -R foo/bar/foo.c remote:/tmp/

siis luuakse fail kaugmasina kaustas /tmp/foo/bar/foo.c – kogu tee säilib.

Lülitab suvandi --relative välja. Seda on vaja ainult siis, kui soovid kasutada suvandit --files-from ilma käitumiseta, mida see eeldab, kui suvand --relative on sisse lülitatud.

    Ei mingeid kaudseid režissööre

Kombineerituna koos võtmega --relative, ei kopeerita edastusprotsessi osana kõiki mõjutatud katalooge igas tees. See muudab ülekande tõhusamaks ja võimaldab ka sidumata (vt näidet allpool) sümboolseid linke ülekandega seotud teedel. Näiteks kui fail "/path/foo/file" edastatakse võtmega -R, siis vaikimisi tagab rsync, et "/path" ja "/path/foo" vastavad täpselt vastuvõtva poole kataloogidele/linkidele . Valik --no-implied-dirs võimaldab teil mittevastavust ignoreerida, kui "/path" on ühel küljel tõeline kataloog ja teisel pool sümbollink. rsync ei püüa antud juhul selle valikuga midagi muuta.

    B, --backup Selle valiku korral nimetatakse vastuvõtval poolel olemasolevad failid ümber kohe, kui vastav fail on üle kantud või kustutatud. Saate määrata, kuhu failid teisaldatakse ja milline järelliide (vajadusel) nimele lisatakse, kasutades valikuid --backup-dir ja --suffix.

    Backup-dir=DIR Kombinatsioonis --backup määrab kataloogi, kuhu varukoopiaid salvestada. See on järkjärguliste varukoopiate jaoks väga kasulik. Valikuliselt saab määrata sufiksi käsuga --suffix (muidu säilitavad varukoopiad oma algsed nimed).

    Suffix=SUFFIX See valik võimaldab määrata failivarukoopiate vaikimisi järelliitest erineva järelliide, kui on määratud --backup (-b). Vaikimisi on see järelliide seatud väärtusele ~, määramata --backup-dir, mis lähtestab selle järelliide tühjaks stringiks.

    U, --update Jäta vahele kõik vastuvõtval poolel juba olemas olevad failid, mille kuupäev on lähtefailidest hilisem.

    L, --copy-links Kui leitakse sümboolne link, kopeeritakse vastuvõtvasse otsa fail, millele see viitab, mitte sama sümboolne link.

    copy-unsafe-links Kopeerib kõik objektid väljaspool lähtekataloogipuud, millele viidatakse sümboolsete linkidega. Absoluutseid sümlinke ja kui on määratud --relative, käsitletakse kõiki lähtekataloogipuu sümbollinke tavaliste failidena.

    Safe-links Määrab, et ignoreerida kõiki sümboolseid linke, mis viitavad objektile väljaspool sihtkataloogipuud. Samuti jäetakse vahele kõik absoluutviited. Selle võtme kasutamine koos võtmega --relative võib anda ootamatuid tulemusi.

    H, --hard-links Juhib taasluua sihtpoolel olevad kõvad lingid, et need vastaksid allikas leiduvale. Ilma selle valikuta käsitletakse kõvasid linke nagu tavalisi faile.

Pange tähele, et rsync suudab tuvastada kõvasid linke ainult siis, kui lingi mõlemad osad on edastatavate failide loendis. Selle sätte puhul võib edastamine olla üsna aeglane, seega kasutage seda ainult vajaduse korral.

    W, --whole-file See valik keelab rsynci diferentsiaalalgoritmi ja sellega edastatakse kogu fail sellisel kujul, kui see on tervikuna. Selle valikuga võib edastamine olla kiirem, kui ribalaius lähte- ja sihtmasinate vahel on laiem kui ketas juurdepääsu ribalaiusele (eriti kui "draiv" on tegelikult võrgu failisüsteem) See suvand on vaikimisi lubatud, kui nii allikas kui ka sihtkoht on kohalikud.

    No-whole-file Keelab suvandi --whole-file mõju, kui viimane on vaikimisi lubatud.

    P, --perms Kopeerib kõik õigused vastuvõtvale poolele täpselt nagu originaal.

Ilma selle parameetrita saab iga uus fail samad õigused kui algne, võttes arvesse vastuvõtval poolel kehtivat umaski, samas kui kõik teised (kaasa arvatud värskendatavad) säilitavad oma olemasolevad õigused (see on sama käitumine, mis teistel koopiatel utiliitidel on sellised failid nagu cp).

    O, --owner Kopeerib omaniku atribuudid vastuvõtvale poolele täpselt nagu originaal. Enamikus süsteemides on ainult superkasutajal õigus määrata faili omanik. Tuleb märkida, et kui kaugdeemon töötab chroot-keskkonnas, siis on see kaudne võimalus --numeric-ids, kuna kaugpoolel pole antud juhul juurdepääsu /etc/passwd-s olevatele kasutajanimedele.

    G, --group Kopeerib rühma atribuudid sihtkohta täpselt originaalidena. Kui kaugpool ei tööta superkasutaja all, siis salvestatakse ainult need väärtused gruppidest, mille liige vastuvõtva poole kasutaja on (oluline on grupi nimi, mitte id).

    D, --seadmed Määrake, et edastada teavet märkide kohta ja blokeerida seadmed, et need vastuvõtval poolel uuesti luua. Saadaval ainult superkasutajale.

    T, --times Määrab faili muutmise aja edastamise ja sellega vastava atribuudi värskendamise vastuvõtval poolel. Pange tähele, et kui seda valikut ei määrata, muutub edastuse optimeerimine ebaefektiivseks, jättes välja failid, mis pole aja jooksul muutunud; teisisõnu tähendab -t või -a väljajätmine seda, et järgmine ülekanne tehakse valikuga -I, kõigi failide kontrollsummasid võrreldakse ja vastavad teated ilmuvad logisse, isegi kui nad seda pole teinud. muutunud.

    N, --dry-run Käestab mitte mingeid ülekandeid tegema, vaid teatama, mis võib juhtuda.

    S, --sparse Püüa failide killustatust tõhusamalt käsitleda, et säästa ruumi vastuvõtval poolel.

MÄRKUS. Ärge kasutage seda valikut, kui sihtkohas on Solarise "tmpfs" failisüsteem. Otsingut "aukude" (tühjad piirkonnad) hulgast ei ole võimalik õigesti hallata, mis lõpeb faili rikumisega.

    Olemasolev Määrab mitte luua uusi faile – värskendada ainult neid, mis on vastuvõtval poolel juba olemas.

    Ignore-existing Määrab, et vastuvõtval poolel juba olemasolevaid faile ei värskendata.

    Max-delete=NUM Ärge kustutage rohkem kui NUM faili ja kataloogi. See on kasulik väga suurte kataloogipuude peegeldamisel, et vältida probleeme.

    Kustuta Kustutage vastuvõtval poolel kõik failid, mida saatja poolel pole. Edastamisest välja jäetud failid jäetakse samuti kustutamisprotsessist välja, kui pole määratud --delete-excluded.

Sellel valikul pole mõju, kui rekursiivne kataloogide kopeerimine pole lubatud. See seadistus võib olla ohtlik, kui seda kasutatakse valesti! Väga hea rusikareegel on kasutada esmalt jõudeoleku rsynci (-n), et näha, millised failid võidakse kustutada ja kas mõni neist on oluline. Kui edastaval poolel ilmnevad sisend- ja väljundvigad, keelatakse vastuvõtval poolel olevate failide kustutamine automaatselt. See hoiab ära vastuvõtva poole failide massilise kustutamise ajutiste failisüsteemi (nt NFS) vigade tõttu edastaval poolel. Selle käitumise saab keelata võtmega --ignore-errors.

    Kustuta-välistatud Lisaks sellele, et failid kustutatakse vastuvõtval poolel, kuna neid pole edastaval poolel, määrab ka kõik failid, mis on välistatud vastuvõtva poole valikuga --exclude. See eeldab võtme --delete olemasolu.

    Delete-after Vaikimisi kustutab rsync failid enne nende kopeerimist, veendumaks, et vastuvõtval poolel on piisavalt vaba ruumi. Kui soovite, et kustutamine toimuks pärast, kasutage käsku --delete-after. See eeldab võtme --delete olemasolu.

    Ignoreeri tõrkeid Kustutamisel (--delete) jõustage protsess ja ignoreerige kõiki vigu, isegi I/O vigu.

    Kataloogide sundeemaldamine, kui need asendatakse mittekataloogidega, isegi kui need pole tühjad. Sobib ainult ilma

    Kustuta, sest kustutatakse ainult sama taseme kataloogid. Nõuab --rekursiivset (mis tähendab, kui -a), et sellel oleks tähendusrikas mõju.

    B, --block-size=BLOCKSIZE Reguleerib rsynci algoritmi kasutatavat ploki suurust. Vaadake üksikasju andmelehelt.

    E, --rsh=COMMAND Võimaldab valida rsynci kaug- ja kohalike koopiate vahelise ühenduse loomiseks alternatiivse kaugshelliprogrammi. Tavaliselt on rsync konfigureeritud vaikimisi kasutama ssh-d, kuid võite eelistada rsh-i kasutamist kohalikus võrgus.

Kui seda suvandit kasutatakse vormi host::module/path teega, kasutatakse rsync-serveri käivitamiseks kaugküljel kaugshelliprogrammi COMMAND ja kõik andmed edastatakse kaugshelliühenduse kaudu ja mitte otse ühenduse kaudu rsync serveriga selles otsas. Vt "ÜHENDAMINE RSYNC SERVERIGA REMOTE SHELLI LÄBI". Command käsurea argumendid on lubatud kujul, mis annab käsule COMMAND rsyncile ühe argumendina. Näiteks:

    E "ssh -p 2234" (Pange tähele, et ssh-kasutajad saavad alternatiivselt konfigureerida keskkonnaspetsiifilisi ühendusesuvandeid oma .ssh/config-failides.)

Samuti saate keskkonnamuutuja RSYNC_RSH kaudu valida kaugshelliprogrammi, mis võtab sama väärtusvahemiku kui -e. Vaadake ka --blocking-io, mida mõjutab suvandi -e määramine.

    C, --cvs-exclude Selle valikuga välistate suure hulga faile, mida te ei soovi süsteemide vahel teisaldada. See kasutab sama algoritmi, mida CVS kasutab ignoreeritavate failide määramiseks.

Välistuste loend sisaldab esialgu järgmist:

RCS/ SCCS/ CVS/ .svn/ CVS.adm RCSLOG cvslog.* sildid TAGS .make.state .nse_depinfo *~ #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del -* *.a *.o *.obj *.so *.Z *.elc *.ln core, siis lisatakse algsesse loendisse failid, mis on loetletud $HOME/.cvsignore'is, samuti kõik failid, mis on loetletud CVSIGNORE keskkonnas muutuja ( eraldatud tühikutega). Lõpuks jäetakse kõik failid vahele, kui samas kataloogis on .cvsignore-fail, millel on failile sobiv mall. Lisateabe saamiseks vaadake cvs(1) juhendit. * --exclude=MUSTER Võimaldab teatud faile edastusprotsessist valikuliselt välistada. See on kõige kasulikum rekursiivse ülekande korral.

Välistatavate failide suvalise loendi koostamiseks võite kasutada nii palju --excludes, kui soovite. Selle parameetri süntaksi kohta teabe saamiseks vaadake jaotist ERANDUSMUSTRID.

    Exclude-file=FILE Sarnaselt --exclude valikule, kuid erinevalt sellest kasutab see välistamisfaili mustreid, mis on loetletud failis FILE. Tühjad read koos ridadega, mis algavad tähega ";" või "#", ignoreeritakse. Kui FILE on määratud kui -, loetakse mustrite loend standardsisendist.

    Include=PATTERN Määrab nende failide nimede mustrid, mida ei saa protsessist välja jätta. Kasulik, kuna see võimaldab teil koostada üsna keerukaid kaasamise/välistamise reegleid.

Selle parameetri süntaksi kohta teabe saamiseks vaadake jaotist ERANDUSMUSTRID.

    Include-from=FILE Määrab, et võtta failist FILE edastusse kaasatud failide loend. Kui FILE on määratud kui -, loetakse mustrite loend standardsisendist.

    Files-from=FILE Võimaldab määrata täpse ülekantavate failide loendi (mida loetakse määratud FILE'ist või standardsisendist, kui - on määratud). See muudab ka rsynci vaikekäitumist, et hõlbustada antud failide ja kataloogide ülekandmist. Näiteks kasutatakse vaikimisi suvandit --relative (selle keelamiseks kasuta --no-relative), vastuvõtvas otsas luuakse kõik loetletud kataloogid (selle asemel, et vaikselt vahele jätta, nagu ei oleks suvandit -r kasutatud) ja käitumine on (--arhiiv) ei tähenda -r (--rekursiivne) olemasolu – see tuleb vajadusel selgesõnaliselt täpsustada.

Eeldatakse, et kõik failist FILE loetud failinimed on lähtekataloogi suhtes suhtelised – kaldkriipsud eemaldatakse ja lähtekataloogipuu üles suunavad ".." lingid pole lubatud. Näiteks kaaluge:

    rsync -a --files-from=/tmp/foo /usr remote:/backup

Kui /tmp/foo sisaldab stringi bin (või isegi "/bin"), luuakse kaugmasinas kataloog /usr/bin kujul /backup/bin (kuid kataloogi /usr/bin sisu ei tohi üle kanda, välja arvatud juhul, kui objektid on selgelt määratud failis /tmp/foo või kui on määratud suvand -r). Pange tähele ka seda, et käsu --relative (vaikimisi lubatud) toime seisneb failist loetud teede kopeerimises -- see ei sunni kogu määratud lähteteed (näites / usr) kopeerima. Lisaks saab faili --files-from lugeda kaugmasinast, mitte lokaalselt, lisades failinime ette "host:" (see peab ühtima edastuse ühe otsaga). Lühiduse huvides saab kaugkoopia liikme tähistamiseks kasutada ainult eesliidet ":". Näiteks: rsync -a --files-from=:/path/file-list src:/ /tmp/copy see käsk peaks kopeerima kõik failis /path/file-list, mis asub kaugmasinas "src" .

    0, --from0 Annab rsyncile teada, et väljastpoolt loetavad failinimed lõpevad tähega "\0", mitte NL, CR või CR+LF. See kehtib suvandite --exclude-from, --include-from ja --files-from kohta.

    T, --temp-dir=DIR

Juhib kasutada DIR-i vastuvõtval poolel edastatud failide ajutiste koopiate kataloogina. Vaikimisi luuakse ajutised failid sihtkataloogis.

    võrdlus-dest=DIR Juhib kasutada sihtmasinas DIR-i kataloogina, millega sisu edastusprotsessi ajal võrreldakse, eeldusel, et sihtkataloogis pole faile. See on kasulik uude asukohta teisaldamiseks, olemasolevate failide puutumatuks jätmiseks ning seejärel teisaldamiseks ja puhastamiseks, kui kõik failid on üle kantud (näiteks kataloogide uude asukohta teisaldamisel ja vana kustutamisel, kuigi see jätab muutmata failid vahele; vaata ka - -link-dest).

Märge. translator: selle parameetri olemasolu on tingitud vajadusest värskendada näiteks puud üksteisest sõltuvate failidega. Sel juhul ei ole soovitav kopeerida failipõhiselt. Suvand --compare-dest võimaldab määrata ajutise sihtkataloogi, kuhu ülekantud failid kopeeritakse. Edastamisprotsessi lõpus nimetab rsync ümber algse sihtpuu, seejärel ajutise DIR-kataloogi ümber algseks ja lõpuks kustutab algse kataloogi, mis sai esimeses etapis ümber nimetatud "vanade" failidega. See suvand suurendab võtme --partial kasulikkust, sest osaliselt üle kantud failid jäävad uude ajutisse kataloogi, kuni need on täielikult paigas. Kui DIR on antud suhtelise teena, siis viitab see sihtkataloogile.

    Link-dest=DIR Sama käitumine nagu --compare-dest, kuid loob ka püsivad lingid DIR-is sihtkataloogi muutmata failidele. See ei mõjuta muudetud lubade ja omandiõigusega faile. Nagu ka --compare-dest puhul, kui DIR on suhteline nimi, on toimingud seotud sihtkataloogiga.

    Z, --compress Selle valikuga tihendab rsync kõik edastatud failiandmed. See on kasulik aeglastel liinidel. Kasutatav tihendusmeetod on sama, mida rakendab gzip.

Pange tähele, et nii saavutatakse tavaliselt parem tihendusaste, kui on võimalik saavutada shell-programmi kaugtihendusega või transpordikihi tihendamisega, tihendusprotsessi kaasatakse kogu vastavatesse andmeplokkidesse saadetud teave.

    Numbrilised ID-d Grupi- ja kasutajanimede asemel saadetakse nende numbrilised ID-d ja sobitatakse need mõlemas otsas.

Vaikimisi kasutab rsync failide omaniku määramiseks rühma- ja kasutajanimesid. Spetsiaalseid uid 0 ja gid 0 ei kuvata kunagi kasutajate/rühmade nimede kaudu, isegi kui --numeric-ids pole määratud. Kui lähtesüsteem töötab piiratud chroot-keskkonnas või kui kasutajat või rühma vastuvõtval poolel ei eksisteeri, kasutatakse algseid numbrilisi ID-sid.

    Timeout=TIMEOUT Võimaldab määrata maksimaalse I/O ajalõpu sekundites. Kui määratud aja jooksul midagi ei edastata, siis rsync lõpeb. Vaikimisi on 0, mis tähendab, et ei oota.

    Deemon Käivitab rsynci deemonina. Deemon on klientidele kättesaadav süntaksi host::module või rsync:/\/host/module kaudu. Kui standardsisend on pesa, siis eeldab rsync, et see algab inetd-st, vastasel juhul katkestab ühenduse praeguse terminali ja muutub taustadeemoni protsessiks. Deemon loeb iga klientide konfiguratsioonifaili (rsyncd.conf) ja vastab nende päringutele vastavalt.

    No-detach Kui seda käivitab deemon, annab see suvand rsyncile käsu terminalist mitte lahkuda ja muutuda taustaprotsessiks. See on vajalik teenuse käitamisel Cygwini all ja võib olla kasulik ka siis, kui rsynci jälgivad sellised programmid nagu daemontools või AIX-i süsteemiressursside kontroller. --no-detach on soovitatav ka rsynci käivitamisel siluri all. Sellel valikul pole no no mõju inetd-st või sshd-st käivitamisel.

    Aadress Vaikimisi kasutab rsync multisaateaadressi 0.0.0.0, kui seda käivitatakse deemonina koos --daemoniga või ühenduse loomisel rsynci serveriga. --address võimaldab määrata selle jaoks täpse IP-aadressi (või hostinime). See muudab virtuaalse hostimise võimalikuks koos funktsiooniga --config.

    Config=FILE Määrab alternatiivse konfiguratsioonifaili. See on oluline ainult siis, kui on määratud --daemon. Vaikimisi on /etc/rsyncd.conf, välja arvatud juhul, kui deemon töötab kaugshelli kohal ja kaugkasutaja ei ole root. Viimasel juhul asub rsyncd.conf vaikimisi praeguses kataloogis (tavaliselt $HOME).

    Port=PORT Määrab alternatiivse TCP-pordi numbri, millega töötada, mitte vaikimisi 873.

    Blocking-io Määrab, et kasutada blokeerivat sisendit/väljundit kaugshelli transpordil töötamisel. Kui see programm on kas rsh või remsh, kasutab rsync vaikimisi blokeerivat I/O-d, vastasel juhul on vaikimisi mitteblokeeriv I/O. (Pange tähele, et ssh eelistab mitteblokeerimist.)

    No-blocking-io Keelab toimingu --blocking-io, kui see on vaikimisi lubatud.

    Log-format=FORMAT Võimaldab täpselt määrata, mida rsync failipõhiselt standardväljundisse raporteerib (logib). Sõnumi vorming on määratletud samamoodi nagu logimissuvand failis rsyncd.conf.

    Statistika Näitab üksikasjalikku failiedastusstatistikat, mis võimaldab teil hinnata, kui tõhus on rsync-algoritm teie andmetega.

    Osaline Vaikimisi kustutab rsync kõik osaliselt edastatud failid, kui edastamine katkeb. Mõnel juhul on soovitav sellised failid salvestada. Suvandi --partial abil saate käskida rsyncil säilitada osaliselt edastatud fail, mis võib kogu faili edastamist kiirendada, kui selliseid ülekandeid järjest korrata.

    Edenemine Käsutab rsynci väljastama teavet ülekande edenemise kohta. Igavleval kasutajal on, mida vaadata. Viitab sõna --verbose olemasolule, ilma üksikasju suurendamata.

    P Samaväärne --osalise --progressiga . Autor leidis, et seda kombinatsiooni kasutatakse sageli, seetõttu tutvustas ta selle hõlbustamiseks eraldi parameetrit.

    password-file Võimaldab anda parooli rsync-serverile juurdepääsuks, salvestades selle faili. Pange tähele, et see suvand on kasulik ainult siis, kui kasutate rsync-serverile juurdepääsuks sisseehitatud rsynci transporti, kaugshellprogrammi kasutamisel on see kasutu. Fail ei pea olema kõigile loetav. See peaks sisaldama ainult parooli ühel real.

    Bwlimit=KBPS Võimaldab määrata maksimaalse edastuskiiruse kilobaitides sekundis. See suvand on kõige tõhusam rsynci kasutamisel suurte failide (mitu megabaiti või rohkem) edastamiseks. Rsynci edastuste olemuse tõttu edastatakse tavaline andmeplokk, siis kui rsync tuvastab, et kiirus on seatud kiirusest suurem, viib see enne järgmise ploki saatmist sisse viivituse. Selle tulemusena on keskmine edastuskiirus võrdne määratud piiriga. Väärtus null tähendab, et sellist piirangut pole.

    Write-batch=PREFIX Loob failide komplekti, mida saab pakettvärskendusena üle kanda. Iga komplekti kuuluv failinimi algab prefiksiga. Üksikasju vaadake jaotisest "SARVESTUSREŽIIM".

    Read-batch=PREFIX Rakendab eelnevalt loodud muudatuste komplekti, kasutades failide komplekti, mille nimed algavad eeskirjaga. Üksikasju vaadake jaotisest "SARVESTUSREŽIIM".

rsync suvandid

    C - piltide kontrollsummade kohustuslik võrdlemine töö alguses. Kui lähte- ja sihtfailidel on sama suurus ja viimase muutmise aeg, kuid need erinevad, sunnib see suvand neid sünkroonima.

    V - üksikasjalik teabe väljund toimuva kohta. Saate määrata mitu korda. Võimaldab teil lõbutseda, vaadates värskendusprotsessi ajal sisemist teavet andmeedastuse kohta.

    Inplace – pilti värskendatakse ilma ajutist faili loomata. Kasulik siis, kui ruumi napib, samuti ebastabiilse ühenduse korral: --inplace võimaldab jätkata pildi uuendamist kohast, kus uuendus katkenud ühenduse tõttu katkes. Selle suvandi kasutamine vähendab veidi failidevahelise erinevuse arvutamise algoritmi efektiivsust.

    H, --inimloetav – kuvab edastatud/töödeldud andmete suurused mugaval kujul (baitide asemel), näiteks 234K või 1,35G

    Z, --compress - võimaldab edastatud andmete tihendamist.

    Edenemine – näitab failitöötluse edenemist.

    Osaline – ärge kustutage kohalikku faili enne sünkroonimist

    P - sama mis --osaline koos --progressiga

    Statistika - kuva statistika - näitab, kui palju vastu võeti / edastati, kui palju salvestati jne.

Rsync on võimas tööriist, mis muudab andmete edastamise ja sünkroonimise kohalike ja kaugsüsteemide vahel lihtsaks. Selles artiklis räägime sellest rsynci sünkroonimise näited, failide kopeerimine, põhikasutus ja käsud.

Rsynci sünkroonimise näited: põhikasutus

Loome /tmp sees kaks kataloogi nimega "foo" ja "bar" ning loome /tmp/foo sees suur hulk näivaid faile

mkdir /tmp/foo /tmp/bar
i jaoks 'seq 1 100';puudutage /tmp/foo/file$i;tehtud

Meil on nüüd 100 faili /tmp/foo; /tmp/bar ei tohiks nagunii seal olla. Saame kasutada rsynci kõigi failide kopeerimiseks /tmp/foo kausta /tmp/bar:

rsync /tmp/foo/* /tmp/bar

Põhifaililaiendit kasutades saame haarata kõik failid ja kopeerida need teise kataloogi. Mis siis, kui /tmp/foo sees on kataloog? Seda üle ei kanta. Peame kataloogi läbimiseks kasutama lippu -r (-rekursiivne), edastades iga faili sees:

rsync -r /tmp/foo/ /tmp/bar

See on väga lihtne näide ega puuduta isegi rsynci käsu tegelikku jõudu. Lubade, omanike, rühmade, sümbolilinkide jne säilitamiseks on lipud. Kuna neid lippe kasutatakse nii sageli, toimib lipp -a (-arhiiv) aliasena, mis võimaldab neid kõiki, sealhulgas -r.

Puhastage /tmp/bar, looge sümlink kaustas /tmp/foo ühele failile ja kasutage kõigi failide rekursiivseks kopeerimiseks rsynci:

leidke /tmp/bar -delete
ln -s /tmp/foo/file100 /tmp/foo/file101
rsync -r /tmp/foo/ /tmp/bar

Näeme, et rsync on meie loodud sümbollingi välja jätnud. Tühjendage /tmp/bar uuesti ja proovime uuesti, seekord kasutades lippu -a:

leidke /tmp/bar -delete
rsync -a /tmp/foo/ /tmp/bar

Kasutage käsku chown, et muuta faili omandiõigus kaustas /tmp/foo teisele kasutajale ja kopeerida failid kasutades -a asukohta /tmp/bar. Käivitage ls -l ja märkige, et omandiõigus on koos failiga liikunud. Mugav materjal!

MÄRGE. On vahe, kas lisada kaldkriips (/) lähtetee lõppu ja mitte lisada seda; Esimene edastab kõik määratud kataloogi SEES olevad failid, teine ​​aga kataloogi enda koos kõigi sees olevate failidega.

-a lipp

Nagu varem ütlesime, analüüsime selles artiklis Rsynci sünkroonimise näiteid ja käske. Kuid nende teostamiseks peate teadma lippude komplekti põhitõdesid.
Mainisime varem, et lipp -a (-arhiiv) on teiste lippude komplekti -rltpgoD pseudonüüm. Katkised, iga lipp teeb järgmist:

R- Korduv

L- Viige leitud sümbollingid üle

T- Salvestage ajatemplid

P- Salvestage load

G- Salvestage rühmad

O- Säilitage omandiõigus

D— plokkide ja märgiseadmete salvestamine

Failide lugemise hõlbustamiseks võite oma käsule lisada järgmised käsud:

H- Kergesti loetav failivorming

Kõik armastavad arvustusi.

Lipp -v (–verbose) annab teile rohkem teavet ülekande oleku kohta, sealhulgas lõpus oleva kokkuvõtte, mis näeb välja umbes selline:

$ rsync -av foo/bar
faililoendi koostamine ... tehtud
saadetud 1040 baiti vastu võetud 20 baiti 2120,00 baiti/sek
kogusuurus on 7, kiirendamine on 0,01

Kui soovite rohkem statistikat, käivitage rsync lipuga -stats. See annab teile üksikasjaliku loendi failide koguarvust, edastatud failidest, võrdlusnäitajatest ja isegi keskmisest edastuskiirusest. Teisest küljest pärsib -q (-quiet) kõik väljundid, mida saab skriptide jaoks kasutada, kui tagasisidet pole vaja.

Kaugülekanded on tehtud lihtsaks

Rsynci tõeline jõud seisneb selle võimes sooritada mitte ainult kohalikke, vaid ka kaugülekandeid. Kui olete scp-d varem kasutanud, on kaugedastuste süntaks väga sarnane:

rsync@:

Näiteks näeb seda süntaksit kasutav rsync välja järgmine:

rsync -avh /tmp/foo/ [e-postiga kaitstud]:/tmp/bar

Pange tähele: (koolon) kaugserveri ja kaugtee vahel; See on vajalik.

Veel valikuid

Rsynciga on kaasas suur saadaolevate valikute loend, liiga palju, et ühte artiklisse minna. Viimased lipud, mida me vaatame, on lipud -exclude, -exclude-from, -update ja -delete.

Välista failid mustri alusel. Rsync ei toeta veel regexit, seega töötavad ainult standardne failisobitus ja globs.

Välista reapiirdega failis loetletud failid.

Värskendage faile sihtkohas AINULT siis, kui lähtekoopiat on viimati muudetud

Kustutage failid sihtkohas AINULT siis, kui originaalkoopiat enam ei eksisteeri.

Alternatiivsed SSH-pordid

Kui olete oma serveris SSH-porti muutnud, peate käskima rsyncil uut pordinumbrit kasutada.

Näide tavalise SSH-pordiga:
rsync -azh /local/path/file [e-postiga kaitstud]:/kaugjuhtimine/tee/fail

Näide alternatiivse SSH-pordiga (22334):
rsync -azh /local/path/file -e ‘ssh -p 22334’ [e-postiga kaitstud]:/kaugjuhtimine/tee/fail

Kaugülekanded ilma paroolita

SSH-võtmete abil on võimalik lihtsustada ülekandmist kaugjuhtimispuldilt kohalikule või kohalikule või kaugjuhtimispuldile. Nii kaug- kui ka kohalikes serverites konfigureeritud SSH-võtmetega saab sünkroonimist teha vaevata ja ilma inimese sekkumiseta (ei pea iga kord parooli sisestama). Teises artiklis käsitleme SSH-võtmete seadistamist.

Kui teil on küsimusi teemal "Rsynci sünkroonimisnäited" - kirjutage need kommentaaridesse. Märkige kindlasti, millist operatsioonisüsteemi versiooni te kasutate, et saaksime teie probleemiga aidata.

Kui leiate vea, tõstke esile mõni tekstiosa ja klõpsake Ctrl+Enter.