Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Lajme
  • Sinkronizimi i shpejtë i miliarda skedarëve. Rsync: Një mjet i fuqishëm për kopjimin e shpejtë, fleksibël të skedarëve në distancë dhe lokale

Sinkronizimi i shpejtë i miliarda skedarëve. Rsync: Një mjet i fuqishëm për kopjimin e shpejtë, fleksibël të skedarëve në distancë dhe lokale

Nevoja për të transferuar skedarë midis serverëve dhe kompjuterëve ndodh mjaft shpesh, veçanërisht kur administroni pajisje të shumta. Zakonisht për këto qëllime është i përshtatshëm të përdorni ssh dhe scp, por nëse skedari është shumë i madh dhe vetëm një pjesë e vogël e tij është ndryshuar, ose dëshironi të vendosni sinkronizim automatik të vazhdueshëm, atëherë scp nuk është qartë një opsion ideal . Ka shërbime të veçanta për këtë. Në këtë artikull do t'i hedhim një vështrim njërit prej tyre. Do të merret parasysh sinkronizimi i rsync në linux.

Rsync është softuer me burim të hapur që mund të përdoret për të sinkronizuar skedarët dhe dosjet nga një kompjuter lokal në një kompjuter të largët dhe anasjelltas. Një tipar i dukshëm i Rsync është aftësia për të transferuar skedarë të koduar duke përdorur SSH dhe SSL. Përveç kësaj, transferimi i skedarit kryhet në një thread të vetëm, ndryshe nga programet e tjera të ngjashme, i cili krijon një thread të veçantë për çdo transferim skedari. Kjo rrit shpejtësinë dhe heq vonesat shtesë që bëhen problem gjatë transferimit të një numri të madh skedarësh të vegjël.

Është e mundur të përdoret rsync për të sinkronizuar skedarët, drejtoritë dhe mund të përdoret kompresimi dhe enkriptimi. Programi u aplikua për herë të parë në qershor 1996 dhe u zhvillua nga Andrew Tridgel dhe Paul Mackerras. Sinkronizimi Rsync kryhet duke përdorur protokollin RSYNC, i cili është krijuar posaçërisht jo vetëm për të transferuar skedarë midis dy kompjuterëve, por për t'i sinkronizuar ato. Më saktësisht, nuk është transferuar skedari i plotë, por vetëm ajo që është ndryshuar.

Siç e keni kuptuar tashmë, në këtë artikull do të shqyrtojmë shembujt e sinkronizimit të rsync, konfigurimin e rsync, si dhe veçoritë dhe opsionet kryesore të tij.

Karakteristikat e Rsync

Le të hedhim një vështrim në veçoritë e dukshme të Rsync së pari:

  • Aftësia për të mbajtur të gjithë pemët e drejtorive të sinkronizuara
  • Ju mund të ruani lidhjet simbolike, lidhjet e forta, zotëruesit dhe lejet e skedarëve, metadatat dhe kohën e krijimit.
  • Nuk kërkon privilegje të veçanta
  • Transferimi i skedarit me një transmetim të vetëm
  • Mbështetje për RSH, SSH si transport
  • Mbështetje anonime Rsync

Sintaksa Rsync

Ne nuk do të ndalemi në instalimin e këtij mjeti në sistem në detaje. Është shumë popullor, kështu që mund ta instaloni duke përdorur menaxherin e paketave tuaja nga depot zyrtare. Në Ubuntu, komanda e instalimit do të duket kështu:

$ sudo apt-get install rsync

Dhe tani, sipas traditës së artikujve të ngjashëm, merrni parasysh sintaksën e komandës rsync:

Lavaman burimi i opsioneve $ rsync

Burimi dhe destinacioni mund të jenë një direktori e largët ose lokale. Për shembull ssh, rsync, server samba ose drejtori lokale. Opsionet specifikojnë opsione shtesë për rsync.

Opsionet e Rsync

Tani le të hedhim një vështrim të shpejtë në opsionet e rsync. Jo të gjitha opsionet janë renditur këtu. Për më shumë detaje shihni man rsync:

  • -v- Shfaq informacion të detajuar në lidhje me procesin e kopjimit
  • -q- Informacioni minimal
  • -c- Kontrollimi i shumave të kontrollit për skedarët
  • -a- Mënyra e arkivimit
  • -R- shtigjet relative
  • -b- krijimi i një kopje rezervë
  • -u- mos mbishkruani skedarë më të rinj
  • -l- kopjoni lidhjet simbolike
  • -L- kopjoni përmbajtjen e lidhjeve
  • -H- kopjoni lidhjet e forta
  • -fq- ruani të drejtat për skedarët
  • -g- ruaj grupin
  • -t- kurseni kohën e modifikimit
  • -x- punoni vetëm në këtë sistem skedarësh
  • -e- përdorni transport tjetër
  • -z- Kompresoni skedarët përpara transferimit
  • - Fshije- fshini skedarët që nuk janë në burim
  • - Përjashtoni- përjashtoni skedarët sipas modelit
  • - Rekurzive- përsërit mbi drejtoritë në mënyrë rekursive
  • - Jo-rekurzive- çaktivizoni rekursionin
  • — Përparim- shfaq progresin e transferimit të skedarëve
  • -Stat- tregoni statistikat e transmetimit
  • -Version- versioni i shërbimeve

Konfigurimi i serverit Rsync

Siç e kuptoni, nuk mund të merrni dhe lëshoni skedarë në makinën e parë që hasni pa instaluar softuer special në të. Makina në distancë duhet të ketë të instaluar dhe konfiguruar një server RSYNC, SSH, Samba ose FTP, me të cilin Rsync mund të identifikohet në makinë dhe të transferojë skedarë atje.

Le të hedhim një vështrim në konfigurimin minimal të një serveri rsync në mënyrë që të mund të kryhet kopjimi rsync i skedarëve. Do të na lejojë jo vetëm të sinkronizojmë skedarët në makinë, por edhe të marrim prej andej.

Së pari, krijoni një skedar konfigurimi me përmbajtjen e mëposhtme:

$ sudo nano /etc/rsyncd.conf

Rruga = / tmp / share / hostet lejojnë = 192.168.1. * Hostët mohojnë = * lista = uid e vërtetë = rrënja gid = rrënjë vetëm për lexim = false

Këtu vendosim shtegun në dosjen tonë për sinkronizim, lejojmë hyrjen në server vetëm nga rrjeti i shtëpisë (192.168.1. *) Dhe mohojmë të gjitha lidhjet e tjera. Parametrat uid dhe gid specifikojnë përdoruesin dhe grupin nga i cili do të fillojë demon. Është më mirë të mos përdorni rrënjë, por të specifikoni përdoruesin askush dhe t'i jepni atij të drejtat për dosjen në të cilën do të kryhet sinkronizimi i drejtorisë rsync.

$ fillimi i shërbimit sudo rsyncd

$ sudo shërbimi rsyncd aktivizoni

Shembuj të sinkronizimit Rsync

Kopjoni dhe sinkronizoni skedarët në nivel lokal

Rsync ju lejon të sinkronizoni skedarët dhe dosjet brenda së njëjtës makinë. Le të shohim së pari përdorimin e rsync për të sinkronizuar një skedar në nivel lokal:

skedar $ rsync -zvh / tmp / kopje rezervë /

Sinkronizimi i dosjeve në makinën lokale

Sinkronizimi i dosjeve rsync është po aq i lehtë sa sinkronizimi i skedarëve:

$ rsync -avzh / shtëpi / përdorues / dokumente / tmp / kopje rezervë /

Sinkronizimi me një server të largët

Nuk është shumë më e vështirë të sinkronizoni skedarët me një server të largët. Le të kopjojmë dosjen e dokumenteve lokale në serverin e largët:

Dokumentet $ rsync -avz / [email i mbrojtur]: / shtëpi /

Ju gjithashtu mund të sinkronizoni skedarët vetë me rsync nga një server në distancë:

$ rsync -avz [email i mbrojtur]: / shtëpi / dokumente /

Adresa e serverit në distancë është shkruar në formatin e mëposhtëm:

emri i përdoruesit @ adresa_makine: porta / dosje / ndezur / remote_machine

Nuk është e nevojshme të specifikoni portin, atëherë sinkronizimi i dosjes rsync do të kryhet në portën standarde.

Sinkronizimi i skedarëve përmes SSH

Opsioni -e përdoret për të vendosur protokollin e lidhjes. Kur përdorni SSH, të gjitha të dhënat e transmetuara kodohen dhe transmetohen përmes një kanali të sigurt, në mënyrë që askush të mos mund t'i përgjojë ato.

Për të përdorur SSH, duhet të dini fjalëkalimin e përdoruesit në sistem.

Sinkronizimi i skedarëve rsync nga një server i largët përmes ssh do të duket kështu:

$ rsync -avzhe ssh [email i mbrojtur]: /root/install.log / tmp /

Tani le t'i transferojmë të dhënat në të njëjtin server:

$ rsync -avzhe ssh backup.tar [email i mbrojtur]: / kopje rezervë /

Shiko progresin e sinkronizimit

Për të parë progresin e kopjimit të një skedari nga një makinë në tjetrën, përdorni opsionin e progresit:

$ rsync -avzhe ssh --përparimi / shtëpia / përdoruesi / dokumentet [email i mbrojtur]: / rrënjë / dokumente

Sinkronizimi i jo të gjithë skedarëve në rsync

Opsionet e përfshirjes dhe përjashtimit ju lejojnë të specifikoni se cilët skedarë të sinkronizoni dhe cilët të përjashtoni. Opsionet funksionojnë jo vetëm me skedarë, por edhe me drejtori.

Për shembull, le të kopjojmë të gjithë skedarët duke filluar me shkronjën R:

$ rsync -avze ssh --përfshi "R *" --përjashto "*" [email i mbrojtur]: / rrënjë / dokumente / / rrënjë / dokumente

Fshije në sinkronizim

Gjatë sinkronizimit, mund të fshini skedarë që nuk janë në makinë nga e cila vjen sinkronizimi rsync; për këtë, përdorni opsionin –delete.

Për shembull:

$ rsync -avz --delete [email i mbrojtur]: / dokumente / / tmp / dokumente /

Nëse, përpara se të ekzekutoni këtë komandë, krijoni një skedar në dosje që nuk është në serverin e largët, ai do të fshihet.

Madhësia maksimale e skedarit

Mund të specifikoni madhësinë maksimale të skedarëve për t'u sinkronizuar. Për këtë përdoret opsioni –max-size. Për shembull, ne do të sinkronizojmë vetëm skedarë më pak se 200 kilobajt:

$ rsync -avzhe ssh --max-size = "200k" / përdorues / dokumente / [email i mbrojtur]: / rrënjë / dokumente

Heqja e skedarëve origjinalë

Është e mundur të fshini skedarët burim pasi të ketë përfunduar sinkronizimi me serverin në distancë:

$ rsync --remove-source-files -zvh backup.tar / tmp / kopje rezervë /

Kështu, skedari backup.tar do të fshihet pasi të përfundojë kopjimi në dosjen / tmp / backups.

Programi i mrekullueshëm dhe shumë popullor rsync ka shumë opsione të dobishme dhe aftësi të jashtëzakonshme, por ato nuk janë të lehta për t'u gjetur. Epo, nëse nuk jeni gati të lexoni të gjithë manualin nga fillimi në fillim.

Do të përpiqem t'ju kursej pak kohë duke lexuar manualin dhe do t'ju tregoj për gjërat më të rëndësishme dhe më të dobishme. Me fjalë të thjeshta, siç është.

Pse nevojitet rsync?

Pse të përdorni rsync nëse keni cp dhe scp të zakonshme, ju pyesni.

    Në një pjesë, rsync është më i përshtatshëm dhe më i mirë se analogët e përmendur, sepse ju jep mundësinë të shihni gjithçka që do të bëjë gjatë kopjimit të skedarëve përpara operacionit aktual të kopjimit.

    Në pjesën tjetër - rsync si parazgjedhje kopjon vetëm skedarë të rinj dhe të ndryshuar, dhe madje jo vetëm skedarë - por pjesët e tyre të veçanta, duke e bërë atë në mënyrë mizore dhe efikase.

Vetëm këto dy arsye janë të mjaftueshme për t'ju bërë të harroni cp në punën tuaj të përditshme, duke zëvendësuar këtë komandë dhe analogët e saj për rsync.

Parimi i aplikimit

Nëse po flasim për kopjimin e thjeshtë të skedarëve, atëherë gjëja e parë që duhet të bëni është gjithmonë të bëni një test test (switch -n) në modalitetin verbose (-v):

rsync -avn burim shembull.com:destinacion

Në këtë modalitet, rsync do të shfaqë një listë të skedarëve që do të kopjojë. Vetëm skedarët e rinj dhe të ndryshuar do të kopjohen. Ju mund të verifikoni që vetë drejtoria po kopjohet, jo përmbajtja, ose se është përmbajtja që kopjohet.

Pasi të jeni siguruar që saktësisht ajo që dëshironi është kopjuar, mund të filloni kopjimin e vërtetë:

rsync -av source example.com:destination

Në këtë komandë, ndërprerësi -a nënkupton kopjimin rekurziv të të gjithë skedarëve dhe drejtorive duke përfshirë atributet e tyre si data e krijimit dhe data e modifikimit. Ndërprerësi -v do t'ju japë një raport të detajuar të punës si funksionon dhe kur përfundon.

Rregullat e kopjimit të drejtorisë

Nga njëra anë, rregullat janë shumë të thjeshta.

    Nëse nuk ka prerje në fund të shtegut për në burimin e emërtuar, atëherë vetë drejtoria do të kopjohet.

    shtegu $ rsync -avn / në / burim shembull.com: destinacion dërgon listën e skedarëve shtesë burimi / burimi / shembull.html ...

    Nëse ka një vijë të pjerrët, ose burimi tregon në një drejtori pa emër, atëherë përmbajtja e drejtorisë do të kopjohet.

    shtegu $ rsync -avn / në / burim / shembull.com: destinacion ^^^ dërgimi i listës së skedarëve shtesë shembull.html ... # Ekuivalente me këtë komandë: shtegu $ cd / në / burim; rsync -avn. shembull.com:destinacion

Nga ana tjetër, është mjaft e mundur të harrosh në nxehtësinë e asaj që dhe si, pasi të kesh kopjuar përmbajtjen e drejtorisë në vend të vetë drejtorisë, duke pasur shumë telashe me fshirjen e skedarëve të panevojshëm që u shfaqën nga askund me datat në e kaluara (çelësi -a, të kujtohet?).

Prandaj, është mirë që gjithmonë të ndiqni skenarin e zakonshëm me verifikimin paraprak të operacionit.

Disa çelësa të dobishëm

Së pari, le të flasim për opsionet që do të jenë të mira për ju që t'i njihni pa nxitje dhe fletë mashtrimi.

    Ndërprerësi -P përfshin disa opsione në të njëjtën kohë. Me këtë çelës, rsync do të tregojë progresin e kopjimit të skedarëve individualë dhe do të vazhdojë kopjimin nëse ndërpritet. Ky opsion është veçanërisht i dobishëm kur kopjoni skedarë të mëdhenj. Ndërprerësi -P duhet të specifikohet çdo herë, përndryshe rsync do të fshijë skedarët që nuk janë shkarkuar plotësisht.

    Nëse jeni duke kopjuar skedarë nga një server shumë i zënë ose i dobët, mund të eliminoni humbjen e burimeve të procesorit në llogaritjen e pjesëve të ndryshuara të skedarëve duke i kopjuar plotësisht. Kjo kërkon ndërprerësin -W.

    Nëse doni të dini se sa rsync mendon se ka mbetur për të punuar, ju nevojitet çelësi --info = progress2. Nëse jeni duke kopjuar një sistem të tërë skedarësh, atëherë ky çelës, i përdorur në vetvete, do t'ju zhgënjejë: informacioni për vëllimin total do të përditësohet vazhdimisht. Kjo ndodh sepse rsync nuk përpiqet të lexojë të gjithë sistemin e skedarëve përpara se të fillojë kopjimi, por i kryen të dyja detyrat menjëherë.

    Por mos u dëshpëroni! Nëse dëshironi të dini saktësisht se sa punë ka mbetur që në fillim, mund të çaktivizoni skanimin e njëpasnjëshëm me çelësin --no-inc-rekurziv ose, shkurt, --no-i-r.

    $ rsync -ah --partial --info = progress2 --no-i-r source example.com:destination 623.38M 0% 82.23MB / s 0:11:10

    Çelësat e mësipërm janë të disponueshëm që nga versioni 3.1.0, domethënë ata tashmë funksionojnë në Debian stabile.

    Nëse nuk keni nevojë vetëm të kopjoni skedarë, por të sinkronizoni plotësisht përmbajtjen e drejtorive duke fshirë skedarë të panevojshëm dhe për ndonjë arsye nuk mund të sinkronizoni skedarët duke përdorur Git, atëherë çelësi --delete (ose ekuivalenti i tij --del) do të jetë i dobishëm.

    Me këtë ndërprerës, rsync do të heqë skedarët e panevojshëm nga drejtoria e destinacionit.

    $ rsync -avn --fshij burimin shembull.com:destinacioni dërgon listën e skedarëve në rritje duke fshirë burimin / bad.txt / source / test.txt

    Ndërprerësi -n në komandën e mësipërme u la me qëllim.

Le të themi një fjalë për kompresimin

Ndryshe nga keqkuptimi popullor, përdorimi i kompresimit brenda rsync (çelës -z) është më shumë dëm sesa dobi. Fakti është se OpenSSH, i cili është përdorur kudo që nga fundi i vitit 2005, përdor si parazgjedhje kompresimin e të dhënave të transmetuara. Ju e kuptoni që ngjeshja e të dhënave tashmë të kompresuara përdor vetëm burimet e procesorit pa reduktuar sasinë e të dhënave të transferuara.

Mund të verifikoni që kompresimi po përdoret tashmë kur lidheni me serverin tuaj:

$ ssh -v [email i mbrojtur] false 2> & 1 | grep debug compression1: Mundësimi i kompresimit në nivelin 6.

Nëse kjo komandë nuk do të tregojë, ndër të tjera, një linjë e tillë për mundësimin e kompresimit si më sipër, atëherë ndoshta duhet të përdorni kompresim. Vlen të kontrollohet nëse kompresimi është i mirë. Kjo është veçanërisht e vërtetë për pajisjet me fuqi të ulët me lidhje të shpejta: mund të jetë më e shpejtë për NAS-in tuaj të kopjojë diçka mbi një lidhje gigabit pa kompresim sesa të përpiqet të kapërcejë një rrjet gigabit me një procesor me fuqi të ulët.

Për fat të mirë, rsync është mjaft i zgjuar për të mos përdorur kompresim nëse kopjoni skedarë në nivel lokal, nga drejtoria në disk, etj.

Po kopjohet pjesërisht

Ndoshta do t'ju duhet rsync për të kapërcyer disa skedarë kur kopjoni një ditë.

Në rastin më të thjeshtë, ju dëshironi që rsync të mos kopjojë skedarë nga sisteme të ndryshme të kontrollit të versioneve, duke përfshirë drejtoritë si .svn dhe.git. Për këtë detyrë, nuk ju nevojitet asgjë tjetër përveç çelësit -C (ose --cvs-exclude në formë të plotë). Kjo do të injorojë skedarët më të njohur VCS sikur të mos ishin aty. Mos harroni të përdorni -n herën e parë që e përdorni.

rsync -nC shembull.com: destinacion burimi

Mund të ndodhë që ju, gabimisht, të kopjoni një mori skedarësh të tillë nga VCS. Në këtë rast, për të marrë një kopje të pastër, do t'ju duhet çelësi --delete-excluded, me të cilin do të fshihen të gjithë skedarët e përjashtuar.

rsync -nC --delete-excluded example.com:burimi destinacion

Ne përjashtojmë nëpërmjet .rsync-filter

Nëse keni nevojë për rregulla më fleksibël, gjë që është veçanërisht e rëndësishme nëse kopjimi bëhet rregullisht, atëherë është më mirë të mos humbni kohë për gjëra të vogla dhe të hartoni të gjitha përjashtimet në skedarin e filtrit rsync.

$ cat source / .rsync-filter - test.bin - * .tmp - /.cache - / shembull / - / ** / Trash / - /.mozilla/firefox/*/Cache/ + Projektet / ** / Trash /

Për të përjashtuar diçka nga lista për transferim, shtoni një rresht me rregullin (- ose + në fillim të rreshtit) në këtë skedar.

    Nëse ju duhet të përjashtoni një skedar specifik, kudo që mund të jetë në ndonjë drejtori poshtë hierarkisë, atëherë ne thjesht tregojmë emrin e skedarit.

    # asnjë skedar test.bin nuk do të kopjohet - test.bin # të gjithë skedarët .tmp do të anashkalohen - * .tmp

    Nëse keni nevojë të përjashtoni një skedar ose drejtori relativisht drejtoria rsync-filter, më pas tregojmë me një të pjerrët në fillim:

    # drejtoria ose skedari .cache nuk do të kopjohet, por foo / .cache dhe foo / bar / .cache do të kopjohen - /.cache # drejtoria e shembullit nuk do të kopjohet, por skedari i shembullit do të kopjohet - / shembull /

    Sipas rregullave, një yll përputhet me çdo karakter përveç një të pjerrët, dhe dy yllza përputhen fare me çdo karakter:

    # drejtoria do të kapërcehet .local / share / Trash / dhe Documents / shembull / Trash / - / ** / Trash / # drejtoria nuk do të anashkalohet .mozilla / firefox / abcd.profile / ext / Cache / # por drejtoria do të anashkalohet .mozilla /firefox/abcd.profile/Cache/ - /.mozilla/firefox/*/Cache/

    Së fundi, nëse dëshironi që disa skedarë të kopjohen, pavarësisht rregullave të vendosura më parë, atëherë ato mund të shënohen me rregullin + në fillim të rreshtit.

    # drejtori Projektet / Shembull / faqosja / Koshi / do të kopjohen + Projektet / ** / Koshi /

Skedarët e filtrit Rsync rsync mund të kërkojë të gjithë strukturën e drejtorisë kur ekzekutohet me opsionin -F.

Nëse dëshironi që vetë këta skedarë të mos kopjohen, atëherë duhet ta specifikoni këtë çelës dy herë si kjo:

$ rsync -avFFn burimi shembull.com: destinacioni dërgon listën e skedarëve në rritje burimi / burimi / shembull.html burimi / tmp / burimi / tmp / foo.bin dërguar 174 bajte të marra 30 bajte 408.00 bajt / sek madhësia totale është 18,400 shpejtësia është 90.20 ( Vrapimi i thatë)

Siç mund ta shihni, skedarët shtesë nuk u kopjuan:

burimi $ ls / burimi .rsync-filter / burimi foo.tmp / burimi foo.tmp / .rsync-filter burimi $ cat / .rsync-filter - * .tmp

Kufizimi i rsync mbi ssh

Ndonjëherë ju duhet të aktivizoni rsync mbi ssh, nga distanca dhe pa një fjalëkalim, të përcaktuar vetëm për drejtorinë dhe hostin, duke përjashtuar kopjimin e ndonjë gjëje në vende të tjera ose nga vende të tjera.

Për shembull, dëshironi të jeni në gjendje të kopjoni skedarë në serverin backup.example.com vetëm nga serveri pritës.example.com, vetëm dhe vetëm në drejtorinë e shembullit rezervë dhe vetëm me këto opsione:

$ rsync -aW --del source / backup.example.com:destination/backup-example/

Pastaj së pari duhet të merrni komandën që rsync ekzekuton kur thirret ssh në hostin e largët:

$ rsync -e "ssh -t -v" -aW --del source / backup.example.com:destination/backup-example/ 2> & 1 | Komanda grep debug1: Dërgimi i komandës: rsync --server -lWogDtpre.iLsfxC --delete-gjatë. destinacioni / shembulli rezervë /

Prandaj, në ~ / .ssh / autorized_keys në shembull.com, shtoni nisjen e kësaj komande si parazgjedhje për çelësin e njohur ssh kur lidheni:

nga = "server.example.com", komanda = "rsync --server -lWogDtpre.iLsfxC --delete-gjatë. destinacioni / shembulli rezervë /", pa-pty, pa përcjellje port ssh-rsa AAAA .. # tjetër është çelësi juaj

Kështu, edhe nëse disa opsione të tjera janë specifikuar gjatë nisjes së rsync, serveri i synuar do të vazhdojë të ekzekutojë komandën rsync që korrespondon me opsionet dhe cilësimet origjinale që specifikuat.

Nëse dëshironi që kopja juaj rezervë të mos mbishkruhet ose fshihet në serverin e destinacionit, atëherë opsioni --del duhet të zëvendësohet me --ignore-existing.

Makinë kohë

Ata përdorues të macOS dhe OS X që bëjnë një kopje rezervë me siguri do ta vlerësojnë punën e Time Machine. Ky program ju lejon fjalë për fjalë me dy klikime të ktheheni në versionin e mëparshëm të çdo skedari. Me gjithë bukurinë e saj, Time Machine nuk bën asgjë që ne nuk mund ta bëjmë me rsync.

#! / bin / bash grup -o grup emëror -o errexit cd $ (dirname "$ 0") data = $ (data --iso-8601 = sekonda) test -L fundit || ln -s "$ date" rsync më i fundit --delete-excluded --prune-empty-dirs --archive -F --link-dest = ../latest " [email i mbrojtur]"" ./ $data "rm fundit ln -s" $data "më e fundit

Skripti duhet të vendoset në rrënjën e diskut ose drejtorisë ku duhet të bëhen kopjet rezervë.

Ekzekutoni vetëm me një argument: direktorinë burimore. Për shembull, si kjo.

/ mnt / kopje rezervë / rezervë / shtëpi

Pas disa ekzekutimeve, marrim strukturën e mëposhtme të drejtorisë:

2017-02-08T22: 05: 04 + 09: 00 2017-02-08T22: 10: 05 + 09: 00 2017-02-08T22: 15: 05 + 09: 00 2-0802-2017- : 00 2017-02-08T22: 25: 05 + 09: 00 2017-02-08T22: 30: 04 + 09: 00 më e fundit -> 2017-02-08T22: 30: 04 + 09: 0

Në këtë rast, më e fundit tregon kopjen rezervë më të fundit.

Secila prej drejtorive përmban një fotografi të asaj që ishte në drejtorinë origjinale në kohën e kopjimit. Ju mund të mendoni se hapësira në disk është e zënë në proporcion me numrin e kopjeve, por nuk është kështu.

$ du -sh / mnt / kopje rezervë 4,5 milion / mnt / kopje rezervë $ du -sh / shtëpi 3,8 milion / shtëpi

I gjithë grupi i kopjeve zë vetëm pak më shumë hapësirë ​​se drejtoria origjinale. Vendi shkon te skedarët e ndryshuar.

Nëse asgjë nuk ka ndryshuar, atëherë hapësira është ende e humbur për krijimin e drejtorive që nuk mund të ruhen si lidhje të forta.

$ du -hs 2017-02-08T22: 20: 06 + 09: 00 2017-02-08T22: 25: 05 + 09: 00 2017-02-08T22: 30: 04 + 09: 8-02-0203. : 20: 06 + 09: 00 136K 2017-02-08T22: 25: 05 + 09: 00 136K 2017-02-08T22: 30: 04 + 09: 00

Këto kursime të konsiderueshme mundësohen nga lidhjet e forta të lartpërmendura që rsync bën për skedarët që nuk kanë ndryshuar që nga kopja e fundit.

$ stat -c "% i" 2017-02-08 * / shembull.txt | uniq 31819810

Skedarët identikë, të pandryshuar do të kenë të njëjtën inode.

Sigurisht, për sa i përket kursimit të mundshëm të hapësirës në disk, kjo metodë rezervë është larg programeve speciale si p.sh

Martin Streicher
Publikuar më 02/11/2010

Seria e përmbajtjes:

Gjatë 20 viteve të fundit, përdorimi i rrjeteve kompjuterike është bërë jashtëzakonisht i përhapur. Kjo ishte kryesisht për shkak të zhvillimit të internetit, investimeve në infrastrukturën e rrjeteve kombëtare dhe ndërkombëtare dhe rënies së çmimeve për rrjetet dhe pajisjet kompjuterike. Rrjetet janë kudo sot dhe aplikacionet e reja po rrisin kërkesat për shkallëzueshmërinë dhe shpejtësinë e rrjetit. Interneti dikur filloi me disa stacione të vogla pune, por tani ai dhe homologët e tij privatë lidhin kompjuterë të panumërt.

Shkurtesat e përdorura shpesh
  • FTP: Protokolli i transferimit të skedarëve
  • WebDAV: Autorizimi dhe Versionimi i Shpërndar i bazuar në ueb

Gjatë së njëjtës periudhë, UNIX® gjithashtu u rrit dhe ofroi softuer gjithnjë e më të fuqishëm për përdorim. FTP ishte një nga mjetet më të hershme për shkëmbimin e skedarëve midis sistemeve dhe është ende i përhapur sot. Komanda rcp (shkurt për "kopje në distancë") ishte një hap përpara nga FTP në atë që jo vetëm ofronte aftësitë e programit standard cp, por gjithashtu kopjonte skedarët nga një makinë në tjetrën. rdist, bazuar në rcp, shpërndau automatikisht skedarë nga një makinë në sisteme të shumta.

Këto mjete janë të gjitha të vjetruara sot, për shembull rcp dhe rdist nuk ofrojnë siguri gjatë transferimit të skedarëve. Tani scp zë vendin e tyre. Megjithëse FTP është ende i përhapur, SFTP (Secure FTP), versioni i sigurt i FTP, duhet të përdoret kudo që të jetë e mundur. Ekzistojnë gjithashtu opsione të tjera për ndarjen e skedarëve, të tilla si WebDAV dhe BitTorrent™. Natyrisht, sa më shumë makina të keni, aq më e vështirë është t'i mbani ato në sinkron ose të paktën të njohura. Kur punoni me scp dhe WebDAV, duhet të shkruani skriptin tuaj të sinkronizimit për ta bërë këtë.

Rsync është mjeti ideal për shpërndarjen e skedarëve. Mund të rifillojë transferimet e skedarëve pas një shkëputjeje, të transferojë vetëm ato pjesë të një skedari që ndryshojnë në skedarin burimor dhe kopjen e tij të destinacionit, dhe mund të kryejë kopje rezervë të plotë ose në rritje. Përveç kësaj, është i disponueshëm në të gjitha llojet e UNIX, duke përfshirë Mac OS X, duke e bërë të lehtë lidhjen e pothuajse çdo versioni të UNIX me të.

Për t'u njohur me rsync, fillimisht do të shikojmë rastet tipike të përdorimit dhe më pas do të kalojmë në përdorime më të avancuara. Për të demonstruar se si funksionon rsync, unë do të përdor Mac OS X versionin 10.5, Leopard (një shije e FreeBSD) dhe Ubuntu Linux® versionin 8. Nëse jeni duke përdorur një sistem operativ tjetër, ju mund të transferoni shumicën e shembujve në të gjithashtu; shikoni faqen rsync man në kompjuterin tuaj për të parë nëse operacionet e përdorura këtu mbështeten dhe nëse është e nevojshme, përpiquni të gjeni një ekuivalent.

Prezantimi i rsync

Ashtu si cp, rsync kopjon skedarët nga një vend në tjetrin. Ndryshe nga cp, rsync mund të kryejë kopjim lokal dhe në distancë. Për shembull, komanda e dhënë kopjon direktorinë / tmp / photos me të gjithë përmbajtjen e saj në direktorinë kryesore.

Listimi 1. Kopjimi i drejtorisë dhe përmbajtjes së tij
$ rsync -n -av / tmp / photos ~ Lista e skedarëve të ndërtimit ... fotot e bëra / fotot / Foto 2.jpg foto / Foto 3.jpg foto / Foto 6.jpg foto / Foto 9.jpg dërguar 218 byte të marra 56 bajte 548.00 bajt/sek madhësia totale është 375409 përshpejtimi është 1370.11

Opsioni -v mundëson mesazhe me fjalë. Opsioni -a (këtu qëndron për arkiv) është një formë e shkurtër e shkrimit të opsioneve -rlptgoD, të cilat tregojnë se duhet të kryhet një kopje e përsëritur, duke kopjuar lidhjet simbolike si lidhje simbolike (lidhje), duke ruajtur lejet për të gjithë skedarët, duke krijuar kohë. (herë), grupi (grupi) dhe pronari i skedarit (pronari), si dhe ruajtja e skedarëve të pajisjes dhe skedarëve të veçantë (pajisjeve). Në mënyrë tipike, çelësi -a krijon një kopje pasqyre të skedarëve, përveç nëse sistemi në të cilin kopjohet nuk mbështet asnjë nga atributet e skedarëve që kopjohen. Për shembull, kopjimi i një drejtorie nga UNIX në Windows® nuk i shfaq gjithmonë atributet në mënyrë perfekte. Më poshtë janë disa sugjerime për t'u përballur me situata të pazakonta.

rsync ka shumë opsione. Nëse dyshoni se parametrat e komandës, përshkrimi i burimit ose destinacioni i kopjimit janë të pasakta, mund të përdorni -n për të kryer një provë. Gjatë një ekzekutimi provë, rsync do t'ju tregojë se çfarë do të bëhet me çdo skedar pa lëvizur në fakt asnjë bajt të vetëm. Pas kësaj, pasi të siguroheni që të gjithë parametrat janë të saktë, -n mund të hiqet dhe ndryshimet do të kryhen.

Listimi 7. Kopjimi i skedarëve në makinën lokale
rsync --port = 7777 mymachine.example.com::pickup/ Përshëndetje! Mirë se vini në serverin rsync të Martin. Drwxr-xr-x 4096 2009/08/23 08:56:19. -Rw-r - r-- 0 2009/08/23 08:56:19 article21.html -rw - r - r-- 0 2009/08/23 08:56:19 design.txt -rw-r - r-- 0 2009/08/23 08:56:19 figure1.png

Duke ndërruar adresat e burimit dhe të destinacionit, mund të shkruani skedarin (s) në modul nga makina lokale, siç tregohet në.

Listimi 8. Ndërrimi i drejtorive të burimit dhe destinacionit
$ rsync -v --port = 7777 application.js mymachine.example.com::dropbox Përshëndetje! Mirë se vini në serverin rsync të Martinit. Application.js dërgoi 245 bajte të marra 38 bajte 113,20 bajte / sek madhësia totale është 164 përshpejtimi është 0,58

Ky ishte një përmbledhje e shpejtë, por mjaft e plotë e aftësive të rsync. Tani le të shohim se si mund ta aplikoni këtë paketë në detyrat tuaja të përditshme. rsync është veçanërisht i dobishëm për kopjet rezervë. Dhe duke qenë se di të sinkronizojë skedarët lokalë dhe të largët apo edhe sistemet e skedarëve, është një mjet ideal për menaxhimin e grupeve të mëdha të makinave që duhet të jenë (të paktën pjesërisht) identike.

Rezervimi i të dhënave tuaja duke përdorur rsync

Mbajtja e kopjeve rezervë në baza të rregullta është një rutinë jashtëzakonisht e rëndësishme, por zakonisht e anashkaluar. As kohëzgjatja e procedurës së rezervimit, as nevoja për ruajtje të madhe të skedarëve të jashtëm, as ndonjë gjë tjetër nuk mund të jetë një justifikim; kopjimi i të dhënave për të garantuar sigurinë e tyre duhet të jetë një rutinë e përditshme.

Për ta bërë këtë detyrë pa dhimbje, përdorni rsync për kopje rezervë dhe një server në distancë, ndoshta të ofruar nga ISP-ja juaj. Secila nga makinat tuaja UNIX mund të përdorë këtë mekanizëm, i cili është zgjidhja ideale për ruajtjen e sigurt të të dhënave tuaja.

Instaloni çelësat SSH, rsync demon në makinën në distancë dhe krijoni një modul rezervë të shkrueshëm. Pas kësaj, ekzekutoni rsync dhe, siç tregohet në skriptin nga, krijoni kopje rezervë që nuk ka gjasa të zënë shumë hapësirë.

Listimi 9. Krijoni kopje rezervë të skedarëve të përditshëm
#! / bin / sh # Ky skenar bazohet në punën e Michael Jakl (jakl.michael AT gmail DOTCOM) dhe përdoret # me leje të shprehur. HOST = mymachine.example.com BURIMI = $ HOME PATHTOBACKUP = data e rezervimit të shtëpisë = `data” +% Y-% m-% dT% H:% M:% S "` rsync -az --link-dest = $ PATHTOBACKUP / aktuale $ BURIMI $ HOST: PATHTOBACKUP / prapa- $ data ssh $ HOST "rm $ PATHTOBACKUP / aktuale && ln -s prapa- $ data $ PATHTOBACKUP / aktuale"

Zëvendësoni HOST me emrin e serverit tuaj rezervë dhe SOURCE me direktorinë që dëshironi të ruani. Zëvendësoni PATHTOBACKUP me emrin e modulit. (Përndryshe, tre rreshtat e fundit të skriptit mund të vendosen në lak dhe disa direktori mund të kopjohen duke ndryshuar variablin SOURCE). Ky skenar funksionon si më poshtë.

  • Së pari, një varg si 2009-08-23T12: 32: 18 vendoset në variablin data, që përmban datën dhe kohën aktuale; ky varg do të identifikojë në mënyrë unike çdo kopje rezervë.
  • Komanda rsync bën pjesën më të madhe të punës këtu. Opsionet -az ruajnë të gjitha informacionet rreth skedarëve dhe kryejnë kompresimin e të dhënave përpara se t'i transferojnë ato, dhe opsioni --link-dest = $ PATHTOBACKUP / aktuale tregon që nëse një skedar nuk ka ndryshuar, nuk duhet ta kopjoni atë në një shembull të ri rezervë , por krijoni një lidhje të fortë që tregon këtë skedar në një arkiv ekzistues. Me fjalë të tjera, rezervimi i ri përmban vetëm skedarë që kanë kaluar ndryshimet, pjesa tjetër e skedarëve janë lidhje.

    Le të shqyrtojmë më në detaje skenarin (dhe të zëvendësojmë vlerat e tyre për të gjitha variablat). Arkivi aktual është mymachine.example.com::home-backup/current. Arkivi i ri për drejtorinë / home / strike do të gjendet në direktorinë mymachine.example.com::home-backup/back-2009-08-23T12:32:18. Nëse skedari në / shtëpi / greva nuk është ndryshuar, atëherë skedari në arkivin e ri do të përfaqësohet nga një lidhje e fortë me skedarin përkatës në arkivin aktual. Përndryshe, skedari i ri kopjohet në arkivin e ri.

    Nëse ndryshoni vetëm një numër të vogël skedarësh dhe drejtorish çdo ditë, atëherë hapësira shtesë e kërkuar për kopjen tjetër të kopjes rezervë do të jetë e papërfillshme. Për më tepër, duke qenë se të gjitha kopjet rezervë (përveç të parës) janë mjaft të vogla, ju mund të mbani në dispozicion një histori të gjatë të skedarëve tuaj.

  • Në hapin e fundit, ne ndryshojmë organizimin e kopjeve rezervë në makinën në distancë për ta bërë arkivin e krijuar rishtazi arkivin aktual dhe kështu të minimizojmë dallimet që duhen regjistruar gjatë ekzekutimit të skriptit të ardhshëm. Komanda e fundit fshin arkivin aktual (i cili është thjesht një lidhje e vështirë) dhe krijon një lidhje simbolike me të njëjtin emër që tregon arkivin e ri.

Pasi të filloni me rsync në distancë për detyrat tuaja të përditshme, ndoshta duhet ta mbani demonin në funksion dhe funksionalitet gjatë gjithë kohës. Për makinat Linux dhe UNIX, ekziston një skrip boot rsync, i cili zakonisht gjendet në /etc/init.d/rsync. Duke përdorur këtë skript dhe programin e sistemit tuaj operativ që kontrollon se si ndizen dhe çaktivizohen komponentët, mund të organizoni që rsync të fillojë në nisje. Nëse po ekzekutoni rsync daemon pa privilegje superpërdoruesi, ose nuk keni akses në skriptet e nisjes, mund të ekzekutoni rsync duke përdorur cron:

@reboot / usr / bin / rsync --daemon --port = 7777 --config = / home / strike / rsyncd / rsyncd.conf

Kjo komandë e nis demonin sa herë që kompjuteri riniset. Vendoseni këtë rresht në skedarin tuaj crontab dhe ruajeni.

Ju keni parë tashmë se si mund ta zbuloni një problem herët duke përdorur pamjen paraprake -n. Ju gjithashtu mund të monitoroni statusin e detyrave rsync duke përdorur dy parametra: --progres dhe --stats. E para nga këto opsione shfaq një shirit progresi për detyrën. E dyta tregon statistikat e ngjeshjes dhe transmetimit të të dhënave. Me --compress, mund të përshpejtoni transferimin e të dhënave ndërmjet makinave. Në vend që t'i dërgojë të dhënat në formën e tyre origjinale, dërguesi i ngjesh ato para se t'i dërgojë, dhe marrësi i dekompreson ato dhe si rezultat transferohen më pak byte në më pak kohë.

Si parazgjedhje, rsync kopjon të gjithë skedarët nga burimi i të dhënave në destinacion. Kjo quhet dyfishim. Nëse dëshironi të organizoni pasqyrimin e të dhënave, d.m.th. për të përputhur saktësisht të dhënat lokale dhe ato të largëta, përdorni parametrin --delete. Për shembull, nëse burimi përmban skedarë A, B dhe C, atëherë si parazgjedhje rsync do të krijojë kopje të të tre skedarëve në makinën në distancë. Megjithatë, nëse fshini nga burimi, për shembull, skedarin B dhe kryeni përsëri dublikim, atëherë skedari B do të mbetet në makinën në distancë, d.m.th. kopja në distancë nuk do të jetë më një kopje e saktë e të dhënave lokale. Komanda --delete kryen pasqyrimin e të dhënave duke hequr skedarët nga kopja në distancë që nuk ekzistojnë më në të dhënat origjinale.

Shpesh ka skedarë që nuk do të dëshironit t'i arkivoni ose rezervoni. Këta mund të jenë skedarë ndihmës të krijuar nga redaktorët (emrat e tyre zakonisht përfundojnë me një tildë [~]) dhe pajisje të tjera, si dhe shumë skedarë të parëndësishëm në drejtorinë tuaj të shtëpisë, si skedarët MP3, që mund të restaurohen nëse është e nevojshme. Në këtë rast, mund të specifikoni shabllonet rsync me të cilat do të përjashtojë skedarët nga përpunimi. Mund të specifikoni një shabllon në vijën e komandës ose mund të specifikoni një skedar teksti që përmban një listë shabllonesh. Modelet mund të përdoren gjithashtu në lidhje me komandën --delete-excluded për të hequr skedarë të tillë nga një kopje e fshirë.

Për të përjashtuar skedarët që përputhen me një model specifik, përdorni komandën --exclude. Mos harroni se nëse ndonjë karakter në model ka kuptim të veçantë për guaskën, si p.sh. *, atëherë modeli duhet të mbyllet në thonjëza të vetme:

$ rsync -a --exclude = "* ~" / shtëpi / greva / të dhëna shembull.com::data

Le të themi se skedari / shtëpia / greva / përjashton përmban listën e mëposhtme të shablloneve:

* ~ * .vjetër * .mp3 tmp

Pastaj mund të kopjoni të gjithë skedarët përveç atyre që përputhen me ndonjë nga këto modele duke përdorur komandën e mëposhtme:

$ rsync -a --exclude-from = / shtëpi / grevë / përjashton / shtëpi / grevë / të dhëna shembull.com:: të dhëna

Sinkronizoni atë

Tani që jeni njohur me rsync, nuk keni arsye të mos kryeni kopje rezervë të rregullt. Cfare ndodhi? A ka përtypur qeni në hard diskun tuaj? (Ndodh gjithashtu!) Veproni paraprakisht dhe më pas të dhënat tuaja do të mbeten në rregull të përsosur. Në fund të fundit, tani të gjithë skedarët tuaj të vlefshëm janë ruajtur v

Rsync është një mjet për sinkronizimin dhe rezervimin e skedarëve. Ai funksionon në shumë sisteme * nix).

Kufizimi i rsync është se të dhënat nuk mund të kopjohen midis 2 sistemeve të largëta. Në këtë rast, do t'ju duhet të kopjoni të dhënat nga një sistem në distancë dhe më pas t'i transferoni në një tjetër.

Në aptosid keni mundësi të ndryshme për të filluar procesin e sinkronizimit. Mund të ekzekutoni rsync me një komandë në një terminal ose të instaloni paketa shtesë nga Debian Sid:

Për të instaluar një paketë deb:
apt-get install Luckybackup
Udhëzime për përdorim në terminal

Në seksionin tjetër, ne paraqesim rsync, veçoritë e tij dhe disa shembuj se si mund të përdoret rsync me një skript rezervë të personalizuar.

rsync është një program i shpejtë rezervë për drejtoritë dhe skedarët. rsync llogarit skedarët dhe drejtoritë e modifikuara duke përdorur atribute të tilla si vlera ose data, të cilat mund ta bëjnë sinkronizimin shumë të shpejtë. Të dhënat arkivohen përpara kopjimit dhe shpaketohen në destinacion.

rsync mund të kopjojë të dhënat:
* nga sistemi lokal në sistemin lokal,
* nga sistemi lokal në sistemin në distancë (të largët),
* nga një sistem i largët në një sistem lokal.

Në këtë rast, rsync përdor klientin ssh (i përfshirë në instalimin bazë), ose rsync-daemon, të cilat funksionojnë në burim dhe në sistemin e synuar. Faqet e menaxhimit të rsync thonë se nëse sistemet mund të komunikojnë përmes ssh, ssh mund të përdoret gjithashtu për rsync.

Kufizimi me rsync është se të dhënat nuk mund të kopjohen midis 2 sistemeve në distancë. Në këtë rast, do t'ju duhet të kopjoni të dhënat nga një sistem në distancë dhe më pas të transferoni nga rsync në tjetrin.

Për ta sqaruar këtë, merrni parasysh shembullin e mëposhtëm me 3 kompjuterë:

Neo - sistem lokal morpheus - sistem i largët trinitet - sistem i largët

Çdo përdorues e di emrin e një përdoruesi tjetër dhe rsync funksionon ekskluzivisht në neo, sistemin lokal:

Emri i përdoruesit në neo është cuddles, emri i përdoruesit në morpheus është tartie, emri i përdoruesit në trinity është taylar.

Qëllimi është të mbash të sinkronizuara direktoriumet / home / $ user / Files:

Neo: / shtëpi / përkëdhel / të dhëna me morfeus dhe trinitet, morfeus: / shtëpi / tartie / të dhëna me neo dhe trinitet, trinitet: / shtëpi / taylar / të dhëna me neo dhe morfe.

Tani lind problemi që rsync nuk mund të aplikohet midis 2 kompjuterëve të largët:

Neo-> morpheus - nga lokali në të largët, do të rezultojë neo-> trinitet - nga lokali në të largët, do të dalë morpheus-> neo - nga i largët në lokal, do të dalë trinitet-> neo - nga i largët në lokale, do të rezultojë morpheus-> trinitet - e pamundur , nga e largët në trinitet të largët-> morpheus - nuk është e mundur, nga e largëta në e largët

Për të kapërcyer këtë kufizim, ne veprojmë si më poshtë:

Morpheus -> trinitet - bëhet: morpheus -> neo dhe neo -> trinitet trinitet -> morpheus - bëhet: trinitet -> neo dhe neo -> morpheus

Ky hap shtesë nuk ndryshon përfundimisht asgjë. Megjithatë, tregon se:

Ky kufizim me rsync duhet të merret parasysh kur planifikoni procesin e rezervimit.

Përdorimi i emrave të hosteve me emrat e hosteve në rsync.

Përdorimi i emrave të hosteve neo, morpheus dhe trinity në vend të adresave IP mund ta bëjë procesin e kopjimit më të qartë dhe më të lehtë për t'u kuptuar.

Për ta bërë këtë, duhet të modifikoni / etc / hostet dhe të futni emrat e hosteve dhe adresat e tyre IP të lidhura. Kështu, në shembullin tonë, skedari / etc / hosts do të duket kështu:

192.168.1.15 neo 192.168.1.16 morpheus 192.168.1.17 trinitet

Rreshti i parë përkthen adresën IP 192.168.1.15 në "neo", e dyta 192.168.1.16 në "morpheus" dhe e treta 192.168.1.17 në "trinitet". Pas regjistrimit, një emër pritës shtesë mund të përdoret në vend të një adrese IP. Kjo është veçanërisht e përshtatshme nëse adresat IP të shpërndara ndryshohen, për shembull, për "neo" nga 192.168.1.15 në 192.168.1.25 Kjo e bën më të lehtë punën me skriptet, pasi ato nuk duhet të ndryshojnë në rast të një ndryshimi në adresat IP , por vetëm hostet e skedarit / etc /.

Dy mënyra për të përdorur rsync.

Mënyra e parë janë të dhënat "Shty (shtyj)" në makinën e synuar; tjetra janë të dhënat "Tërheq (tërheq)" nga burimi. Secila metodë ka të mirat dhe të këqijat, të cilat do të diskutohen më poshtë. Shembulli ynë përdor sisteme lokale dhe të largëta për të ndihmuar në shpjegimin më të qartë të terminologjisë.

"Shty"- sistemi lokal mbart direktoritë burimore dhe skedarët, objektivi është sistemi në distancë. Komanda rsync funksionon në sistemin lokal dhe i shtyn të dhënat në sistemin e synuar.

Përparësitë:
* Më shumë se një sistem burimor mund të rezervohen në objektiv. * Procesi i kopjimit në shumë kompjuterë mund të bëhet në të njëjtën kohë. * Nëse sistemi përfundon procesin e rezervimit më shpejt, ai lejon që burimet të përdoren për punë të tjera.

Të metat:
* Nëse skripti përdoret me sinkronizimin nëpërmjet cron, atëherë crontabs duhet të vendosen në çdo sistem. Kur modifikoni skriptin, është e nevojshme të bëhen ndryshimet e duhura në secilin sistem; kur ndryshon orari, çdo krontab në çdo kompjuter duhet të ndryshojë. Si rezultat, shërbimi administrativ bëhet shumë i rëndë dhe konfuz. * Procesi i rezervimit nuk është i mundur për të kontrolluar nëse ndarja e synuar është montuar nga sistemi i synuar. Nëse nuk është montuar, nuk do të bëhet asnjë kopje rezervë.

"Tërheq"- sistemi në distancë mbart direktoritë burimore dhe skedarët, objektivi është sistemi lokal. Komanda rsync funksionon në sistemin lokal dhe tërheq të dhëna nga sistemi burimor.

Përparësitë:
* Sistemi do të bëhet serveri që menaxhon të gjitha proceset rezervë të të gjitha sistemeve të tjera. Proceset rezervë janë të centralizuara.
* Kur përdorni skriptin, ai duhet të jetë vetëm në një sistem, gjë që thjeshton çdo modifikim. Vetëm një krontab duhet të ndryshojë për çdo ndryshim të planit.
* Skripti mund të kontrollojë nëse ndarja e synuar është montuar dhe do ta montojë atë me raste.

Sintaksa rsync (pjesë nga "man rsync"):
rsync ... SRC ... DEST rsync ... SRC ... HOST: DEST rsync ... SRC ... HOST :: DEST rsync ... SRC ... rsync: // HOST [: PORT] / DEST rsync ... SRC rsync ... HOST: SRC rsync ... HOST :: SRC rsync ... rsync: // HOST [: PORT] / SRC
Shembuj pune të komandave rsync:

Shpjegimi i pjesëve të kësaj komande:

Burimi: (/ rruga / skedari) morpheus: / shtëpi / tartie, objektivi është: / media / sda7 / SysBackups / morpheus / shtëpi

Drejtoria / home / tartie (duke përfshirë nëndirektoritë) do të ruhet në / media / sda7 / SysBackups / morpheus / home, e cila do të duket kështu pas rsync:

/ media / sda7 / SysBackups / morpheus / shtëpi / tartie

Vini re se vetëm drejtoria / tartie kopjohet në shtegun e specifikuar nga rsync / media / sda7 / SysBackups / morpheus / home. "Burimi" zgjedh vetëm se nga vijnë të dhënat dhe "Target" i tregon rsync se ku duhet të kopjohen të dhënat nga "burimi", ai nuk e percepton më atë si / shtëpi / tartie, por thjesht / tartie, që duhet. dërgo te / media / sda7 / SysBackups / morpheus / shtëpi. Një shembull tjetër:

Rsync [...] / shtëpi / përdorues / të dhëna / skedarë / media / sda7 / SysBackups / neo

Këtu, drejtoria e burimit / skedarëve dhe të gjitha drejtoritë dhe skedarët në të do të kopjohen në dosjen e synuar / media / sda7 / SysBackups / neo / - dhe jo në / media / sda7 / SysBackups / neo / shtëpi / përdorues / të dhëna / dosjet.

Kjo është diçka për të cilën duhet të keni parasysh kur përdorni kopje rezervë rsync.

Shpjegimi i opts_y (përkthim chornovy nga gjuha angleze "man rsync"):
-a për mënyrën e arkivimit. Faqja e menaxhimit thotë për këtë: “Thënë thjesht, kjo metodë është të krijojë kopje rezervë rekursive dhe të kopjojë pothuajse të gjitha atributet. Vetëm lidhjet e forta nuk ruhen për shkak të kompleksitetit të procesit. Opsioni -a përputhet me: -rlptgoD, që do të thotë: -r = rekursiv - kopjoni nëndirektoritë dhe skedarët tek ata nga "vendndodhja e tyre origjinale". -l = Lidhje - lidhjet simbolike rikthehen në destinacion. -p = të drejtat - të drejtat janë identike me to në vendndodhjen origjinale. -t = vula kohore - vula kohore në vendndodhjen origjinale është identike me të. -q = qetë - prodhimi minimal i informacionit. Më shumë informacion merret me opsionin -v pas opsionit -a. Ekzekutimi pa asnjë përgjigje do të arrihet pa vendosur opsionin -v. -o = pronar - Nëse rsync ekzekutohet si rrënjë, pronarët e skedarëve origjinalë mbahen siç duhet. -D = përputhet me të dyja këto komanda: --devices --specials --devices = skedarët e karaktereve dhe bllokut të pajisjes do të kopjohen në sistemin në distancë për rikuperim të mëvonshëm. Vini re se pa opsionin --super, opsioni --devices nuk funksionon. --specials = rsync kopjon skedarë të veçantë si prizat dhe fifos. --g: grupet ruhen sipas skedarëve origjinal. -E: Atributi "i realizueshëm" ruhet. -v: për dalje me fjalë. Nëse detajet nuk janë të rëndësishme, ky opsion mund të hiqet. Megjithatë, nëse keni nevojë të shihni se çfarë po ndodh, ky opsion është shumë i dobishëm. -z: Të dhënat e kopjuara arkivohen, gjë që përshpejton procesin e kopjimit, pasi sasia e të dhënave të zhvendosura do të jetë më e vogël. --delete-after = Drejtoritë e synuara ose skedarët e synuar që nuk janë më në burim fshihen pas lëvizjes, jo më parë. Në rast problemesh ose fatkeqësish, do të përdoret "pas", "fshij" parandalon përdorimin e skedarëve dhe drejtorive të panevojshme në destinacion. - përjashto = tregon skedarët ose drejtoritë që do të përjashtohen nga procesi i kopjimit. Në shembull, -- exclude = "* ~ "Do të përjashtonte të gjithë skedarët që mbarojnë me" ~ "nga procesi i rezervimit. Me një opsion --exclude, mund të kalohet vetëm një argument, me më shumë argumente përjashtimi, duhen përdorur opsione të shumta --exclude.
Komandat shtesë:
-c - Kryen kontrolle të mëtejshme krahasimi, gjë që kërkon kohë. Meqenëse rsync tashmë po bën krahasime, kjo komandë nuk është integruar në --a për shkak të tepricës së saj dhe gjithashtu për të kursyer kohë. Ky opsion zakonisht nuk është i nevojshëm. --super - sistemi i synuar do të përpiqet të bëjë veprimet e superpërdoruesit (rrënjës) (shih faqen e menaxhimit) --dry-run - test run: thjesht tregon se çfarë duhet të kopjohet. Asnjë skedar nuk është kopjuar.

Dhe së fundi, opsionet për specifikimin e drejtorive të burimit dhe objektivit.

Shembuj të komandave:
rsync -agEvz --delete-after --exclude = ”* ~” morfeus: / shtëpi / tartie / media / sda7 / SysBackups / morpheus / shtëpi

Kjo komandë kopjon të gjitha drejtoritë dhe skedarët më poshtë nga / home / tartie në sistemin "morpheus" dhe i vendos ato në këtë direktori / media / sda7 / SysBackups / morpheus / home. Struktura e drejtorisë tartie është ruajtur.

Rsync -agEvz --delete-after --exclude = ”* ~” / shtëpi / tartie neo: / media / sda7 / SysBackups / morpheus / shtëpi

Kjo është komanda e kundërt e shembullit të parë. Ai "lëviz" direktoriumin / home / tartie dhe përmbajtjen e tij në drejtorinë e specifikuar të sistemit "neo" - vini re se sistemi konsiderohet "i largët" nëse vendosni një dy pika përpara shtegut.

Rsync -agEvz --delete-after --exclude = ”* ~” / shtëpi / përkëdhelje / media / sda7 / SysBackups / neo / shtëpi

Ky është një proces rezervë i kompjuterit lokal. Vini re këtu se nuk është vendosur dy pika. Drejtoria lokale / shtëpi / cuddles kopjohet në / media / sda7 / SysBackups / neo / home në të njëjtën makinë lokale.

rsync me shumë opsione --exclude:
rsync -agEvz --delete-after --exclude = ”* ~” --exclude = ”*. c” --exclude = ”*. o” "/ *" / media / sda7 / SysBackups / neo

Kjo komandë kopjon gjithçka nga direktoria kryesore e sistemit lokal (të gjitha drejtoritë dhe skedarët) në / media / sda7 / SysBackups / neo - të përjashtuar nga kjo janë të gjithë skedarët dhe drejtoritë që përfundojnë me "~", ".c" ose ".o" ...

Zëvendësimi i emrit të hostit me një adresë IP:

Komanda e parë instalohet me metodën e emrit të hostit, e dyta me metodën e adresave IP. Të dy komandat janë identike në ekzekutimin e tyre:

Rsync -agEvz --delete-after --exclude = ”* ~” morfeus: / home / tartie / media / sda7 / SysBackups / morpheus / home rsync -agEvz --delete-pas --exclude = ”* ~” 192.168. 1.16: / shtëpi / tartie / media / sda7 / SysBackups / morpheus / shtëpi

Metoda e emrit të hostit nuk duhet të përdoret, por sipas mendimit tonë ajo thjeshton kopjet rezervë rsync përmes rrjeteve.

class = "highlight-2"> Komanda e pamundur:

rsync -agEvz --delete-after --exclude = ”* ~” morpheus: / home / tartie trinity: / home

Siç u përmend tashmë, kufizimi i rsync është se kjo komandë nuk mund të kopjohet midis 2 kompjuterëve të largët. Ne dëshirojmë të tërheqim vëmendjen tuaj për këtë edhe një herë.

Shpresojmë që ky tutorial i vogël do t'jua bëjë më të lehtë fillimin e përdorimit të rsync, është një program shumë i suksesshëm rezervë.

Kam gjetur një skrip për sinkronizimin e drejtorive përmes programit rsync... Mendova se sinkronizimi, ai rezervë është e njëjta gjë, vetëm se quhen ndryshe
Programi rsync është i përfshirë me të gjitha shpërndarjet dhe është mjaft popullor sa mund ta gjeni lehtësisht në çdo shpërndarje.
Le të shkojmë drejtpërdrejt te shembujt e sinkronizimit të rsync.
Ne duam të kemi një kopje të drejtorisë / home / user / foto dhe do ta ruajmë dosjen e kopjuar në / mnt / rezervë. Ekzekutoni (mos harroni të kontrolloni lejet e dosjes ku e kopjojmë ose ekzekutoni si root-sudo )

Rsync -av / shtëpi / përdorues / foto / mnt / rezervë

  • -një transferim arkivi (së bashku me dosjet, nëndosjet, skedarët, skedarët e fshehur, etj.)
  • -v shfaq të dhënat e ekzekutimit të komandës

Është kaq e thjeshtë! Fotot tona janë tashmë në dy vende. Sigurisht që nuk janë të arkivuara dhe zënë aq hapësirë ​​sa dosja e parë, por duhet të sakrifikosh diçka. Dhe do t'ju duhet të sakrifikoni hapësirën në disk. Nga rruga, për fotografitë, arkivimi është i paefektshëm, raporti i kompresimit është shumë i ulët. Natyrisht, ju duhet të kopjoni në një disk tjetër fizik! Sepse nëse një hard disk vdes, atëherë të gjitha ndarjet e tjera në këtë disk me të gjitha rezervat do të vdesin gjithashtu.
Le të vazhdojmë, jam i hutuar për diçka..
Ka një kapje të vogël në komandën e mësipërme. Për shembull, keni riemërtuar ose renditur fotot në dosje të tjera dhe keni ndryshuar emrin e dosjeve të vjetra ose i keni fshirë fare. Çfarë do të ndodhë? Skripti do të transferojë sinqerisht skedarët dhe drejtoritë e reja që janë shfaqur, dhe të vjetrat që keni fshirë në dosjen / home / user / foto do të mbeten në dosjen rezervë. Në fakt, në drejtoritë e ndryshuara shpesh, ekzekutimi i një skripti të tillë do të çojë në një grumbull plehrash në dosjen rezervë. Për të shmangur këtë, komanda duhet të ekzekutohet me çelës --fshij

Rsync -av -- fshij / shtëpi / përdorues / foto / mnt / rezervë

Dhe të dy dosjet do të jenë gjithmonë identike
Tani ju duhet të zgjidhni drejtoritë tuaja më të rëndësishme dhe të shkruani një listë të thjeshtë të komandave rezervë në skedar. Dikur më dukej diçka e tillë.

Rsync -av --delete / home / mik / mail / mnt / rezervë / shtëpi / mik / rsync -av --fshij /home/mik/.mozilla / mnt / rezervë / shtëpi / mik / rsync -av --fshij / shtëpi / mik / .claws-mail / mnt / kopje rezervë / shtëpi / mik / rsync -av --fshij / bin / mnt / rezervë / sistem rsync -av --fshij / boot / mnt / rezervë / sistem rsync -av - fshij / dev / mnt / rezervë / sistem rsync -av --fshij / etj / mnt / rezervë / sistem rsync -av --fshij / lib / mnt / rezervë / sistem rsync -av --fshij / netup / mnt / rezervë / sistem rsync -av --fshij / opt / mnt / rezervë / sistem rsync -av --fshij / rrënjë / mnt / rezervë / sistem rsync -av --fshij / sbin / mnt / rezervë / sistem rsync -av --fshij / var / mnt / rezervë / sistem

I kushtoj vëmendje të veçantë që të mos kopjoni gjithçka. Nëse, për shembull, zgjidhni të gjithë drejtorinë tuaj të shtëpisë për kopje rezervë, atëherë mund të ketë një koleksion të filmave tuaj, shpërndarjet me burim të hapur, etj. E gjithë kjo merr shumë hapësirë, dhe për mendimin tim, nuk ia vlen të mbështetet.
Le të kthehemi te skedari ynë me një listë drejtorish për kopje rezervë dhe ta bëjmë atë të ekzekutueshëm

Chmod + x ./ emri i skedarit

Skripti mund të shkruhet në crontab për ekzekutim ditor, dhe në shumicën e shpërndarjeve si p.sh ubuntu ose debian thjesht vendoseni në drejtorinë /etc/cron.daily. Megjithatë, mund t'ju duhet ende të bëni ndryshime në skedarin / etc / crontab. Shumica e kompjuterëve nuk punojnë gjatë natës, kështu që ndryshoni detyrat /etc/cron.daily në një kohë kur kompjuteri juaj është zakonisht i ndezur.

Dhe tani shembujt e komandës rsync që thjesht duhet të keni parasysh. Dhe atëherë ju kurrë nuk e dini se çfarë detyrash mund të përballeni në të ardhmen.

1 shembull.

Rsync -av --delete --exclude = "*. Avi" --exclude = "*. Mpg" / shtëpi / përdorues / mnt / rezervë

Ekipi sinkronizohet e gjitha drejtoria juaj e shtëpisë, por nuk kopjon skedarë me shtesa avi dhe mpg. Nëse nuk ju nevojitet diçka tjetër, atëherë thjesht shtoni me radhë --exclude = "_ what_exclude_"

2 shembull.

Rsync -avz -e "ssh -l ssh_user -p5623" --delete / home / user / foto 192.168.0.1:"./temp "

Por kjo është tashmë një komandë për sinkronizimin midis kompjuterit tuaj dhe një kompjuteri të largët përmes një lidhjeje ssh.

  • -z kompresoni gjithashtu të dhënat
  • -e duke përdorur një guaskë të largët
  • ssh -l ssh_user -p5623- një komandë për t'u lidhur me një kompjuter të largët. përdorues ssh_user, dhe -p5623 është nëse porta ssh është jo standarde, në shembullin 5623
  • 192.168.0.1:"./temp "- adresën IP të kompjuterit (mund të përdorni edhe emrin). Ne gjithashtu tregojmë drejtorinë ku do të transferojmë të dhënat. Vini re se drejtoria është specifikuar nëpërmjet ./ , ne tashmë po fillojmë nga shtegu i direktorisë kryesore ssh_user ku marrim kur lidhemi nëpërmjet ssh

Pasi të kemi futur këtë komandë, duhet të identifikohemi me fjalëkalimin ssh_user dhe vetëm atëherë do të fillojë sinkronizimi i direktoriumit. Po kështu, mund të sinkronizoni drejtorinë në distancë dhe atë lokale. Mjafton vetëm të ndërrojmë dosjet nga dhe ku sinkronizojmë.
Nëse dëshironi të automatizoni procesin dhe të mos vendosni një fjalëkalim çdo herë, atëherë lexoni artikullin tim

Artikujt kryesorë të lidhur