Mga diskarte sa pagtatrabaho sa rsync. Epektibong paggamit ng rsync

rsync(eng. Remote Synchronization) ay isang programa para sa UNIX-like system na nagsi-synchronize ng mga file at direktoryo sa dalawang lugar habang pinapaliit ang trapiko, gamit ang data encoding kung kinakailangan. Ang isang mahalagang pagkakaiba sa pagitan ng rsync at maraming iba pang mga program/protocol ay ang pag-mirror ay ginagawa ng isang thread sa bawat direksyon (sa halip na isa o higit pang mga thread bawat file). Ang rsync ay maaaring kopyahin o ipakita ang mga nilalaman ng isang direktoryo at kopyahin ang mga file, opsyonal na gumagamit ng compression at recursion.

Ang rsyncd daemon, na nagpapatupad ng rsync protocol, ay gumagamit ng TCP port 873 bilang default.

    Algorithm

Gumagamit ang rsync utility ng algorithm na binuo ng Australian programmer na si Andrew Tridgell upang mahusay na maglipat ng mga istruktura (tulad ng mga file) sa mga koneksyon sa komunikasyon kapag ang tumatanggap na computer ay mayroon nang ibang bersyon ng istrukturang iyon. Hinahati ng tumatanggap na computer ang kopya nito ng file sa mga hindi magkakapatong na chunks na may nakapirming laki S, at kinakalkula ang checksum para sa bawat chunk: isang MD4 hash at isang mas mahinang rolling checksum, at ipinapadala ang mga ito sa server kung saan ito naka-synchronize. Ang server na sini-synchronize sa ay kinakalkula ang mga checksum para sa bawat tipak ng laki S sa bersyon nito ng file, kabilang ang mga magkakapatong na tipak. Mahusay itong kalkulahin dahil sa espesyal na pag-aari ng rolling checksum: kung ang rolling checksum bytes n hanggang n+S-1 ay katumbas ng R, ang rolling checksum bytes n+1 hanggang n+S ay maaaring kalkulahin mula sa R, byte n at byte n +S nang hindi kinakailangang isaalang-alang ang mga byte na nasa loob ng agwat na ito. Kaya, kung ang rolling checksum bytes 1-25 ay nakalkula na, ang nakaraang checksum at bytes 1 at 26 ay gagamitin upang kalkulahin ang rolling checksum bytes 2-26.

    Naghahanap ang Rsync ng mga file na ipapadala gamit ang algorithm na "mabilis na pagsusuri" (ang default na algorithm), na naghahanap ng mga file na nagbago sa laki o huling binagong petsa.

    Mangyaring tandaan na ang rsync ay dapat na naka-install sa parehong mga node, lokal at remote.

    Aplikasyon. rsync ay nilikha bilang isang kapalit para sa rcp at scp. Isa sa mga unang gamit ng rsync ay ang pag-mirror o pag-backup ng mga Unix client system sa isang central Unix server gamit ang rsync/SSH at isang regular na Unix account. Sa isang task scheduler gaya ng Paggamit ng Linux cron scheduler, posibleng ayusin ang automated rsync-based mirroring sa isang cryptographically secure na channel sa pagitan ng maraming computer at isang central server.

rsync startup key

    Halimbawa: Mga lokal na direktoryo. Ang mga nilalaman ng dir_a folder ay recursively synchronize (kung mayroong "/" sa dulo ng source na direktoryo, nangangahulugan ito ng pagkopya sa mga nilalaman ng direktoryo; ang kawalan ng slash ay nangangahulugan ng pagkopya sa direktoryo at mga nilalaman nito.) kasama ang dir_b na direktoryo. Ang mga file ay inililipat sa "archive" na mode, na nagsisiguro na ang mga simbolikong link, mga file ng device, mga katangian, mga karapatan, mga pahintulot sa pag-access, atbp. ay mapapanatili sa panahon ng paglilipat. Ginagamit ang compression upang bawasan ang laki ng ipinadalang data. Sa direktoryo ng dir_b, ang mga file na wala sa pinagmulan (dir_a) ay tatanggalin. rsync -avz --delete /src/dir_a/ /data/dir_b

    Halimbawa: Ang malayong direktoryo ay naka-synchronize sa lokal na direktoryo: rsync -az -e ssh --delete 192.168.1.14:/home/pub_remote/ /home/pub_local

    Halimbawa: pagpasa ng ssh identity key sa pamamagitan ng command line rsync -avz --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i /root/rsync /mirror-rsync-key"

    -n, –dry-run Debug mode. Sa kasong ito, hindi babaguhin o tatanggalin ng rsync ang mga file, ngunit ipapakita ang buong pag-unlad.

    -q, -tahimik Binabawasan ng pagpipiliang ito ang dami ng output ng impormasyon sa panahon ng paglilipat at makabuluhang pinipigilan ang bilang ng mga mensahe mula sa server. Ang pagpipiliang ito ay kapaki-pakinabang kapag ang rsync ay inilunsad ng cron.

    -v, –verbose Pinapataas ng opsyon ang dami ng impormasyong ipinapakita sa panahon ng paglilipat. Bilang default, walang nailalabas ang rsync. Ang pagpipiliang -v lamang ay magbibigay sa iyo ng impormasyon tungkol sa kung anong mga file ang inililipat at isang maikling buod sa dulo. Ang dalawang -v na opsyon ay magbibigay ng impormasyon tungkol sa kung aling mga file ang inilipat, na hindi nangangailangan ng pag-update, at kaunti pang impormasyon sa dulo. Higit sa dalawang -v na opsyon ang ginagamit kapag nagde-debug ng rsync. Ang default na format ng output ng file ay nakatakda sa -out-format na "%n%L", na nagpapakita lamang ng mga pangalan ng file at, kung ang object ay isang link, kung ano ang tinutukoy nito. Sa unang antas ng pag-debug (one -v) ang pagbabago ng mga katangian ng file ay hindi ipinapakita. Kung hihingi ka ng detalyadong listahan ng mga attribute na nagbago (tukuyin ang -itemize-changes na opsyon, o idagdag ang "%i" sa -out-format), lalawak ang output (sa client) para banggitin ang lahat ng item na mayroon. nagbago. Tingnan ang opsyong -out-format para sa higit pang mga detalye.

    -a, –archive Katumbas ng -rlptgoD. Ito ay isang mabilis na paraan upang sabihin na gusto mo ng recursive processing at panatilihin ang halos lahat ng bagay (ang -H na opsyon ay magiging isang kapansin-pansing pagkukulang). Ang tanging pagbubukod sa pagkakapareho sa itaas ay kapag tinukoy ang -files-from, kung saan walang epekto ang pagpipiliang -r. Tandaan na ang pagpipiliang -a ay hindi nagpapanatili ng mga matitigas na link dahil ang paghahanap ng mga multi-character na file ay mahal. Dapat mong gamitin ang pagpipiliang -H nang hiwalay.

    –walang-OPTION Maaari mong i-disable ang isa o higit pang mga opsyon sa pamamagitan ng paglalagay ng prefix sa pangalan ng opsyon na may "no-". Hindi lahat ng opsyon ay maaaring mailapat ang prefix na ito: mga opsyon lamang na sumusunod mula sa iba pang mga opsyon (hal -no-D, -no-perms) o may iba't ibang obligasyon sa iba't ibang sitwasyon (hal -no-whole-file, -no- blocking-io , -no-dirs). Maaari mong tukuyin ang mahaba o maikling mga opsyon pagkatapos ng prefix (halimbawa -no-R o -no-relative). Halimbawa: kung gusto mong gamitin ang opsyong -a (-archive) ngunit ayaw mong -o (-owner), sa halip na gawing -rlptgD ang -a, maaari mong tukuyin ang -a -no-o (o -a -walang may-ari). Ang pagkakasunud-sunod ng mga opsyon ay mahalaga: kung tinukoy mo ang -no-r -a, ang -r na opsyon ay ie-enable pa rin; Tandaan na ang side effect ng -files-from na opsyon ay HINDI positional, habang ito ay nakakaapekto sa default na estado ng ilang mga opsyon at bahagyang nagbabago sa kahulugan ng -a na opsyon (tingnan ang -files-from na opsyon para sa higit pang mga detalye)

    -z, –ipitin Sa opsyong ito, pini-compress ng rsync ang lahat ng data ng file na inilipat. Ito ay kapaki-pakinabang sa mabagal na linya. Ang ginamit na paraan ng compression ay kapareho ng ipinatupad ng gzip. Tandaan na kadalasang nakakakuha ito ng mas mahusay na compression ratio kaysa sa maaaring makamit gamit ang remote shell program compression o transport layer compression dahil Kasama sa proseso ng compression ang lahat ng impormasyong ipinadala sa kaukulang mga bloke ng data. --compress-level=NUM tahasang nagtakda ng antas ng compression --skip-compress=LIST laktawan ang pag-compress ng mga file na may suffix sa LIST

    -b, –backup gumawa ng mga backup --backup-dir=DIR gumawa ng mga backup sa tinukoy na direktoryo --suffix=SUFFIX backup suffix (default ~)

    –numeric-id Sa halip na mga pangalan ng pangkat at user, ang kanilang mga numerong id ay ipinapadala at itinutugma sa isa't isa sa magkabilang dulo. Bilang default, gumagamit ang rsync ng mga pangalan ng pangkat at user upang matukoy ang may-ari ng mga file. Ang espesyal na uid 0 at gid 0 ay hindi kailanman nalalantad sa pamamagitan ng mga pangalan ng user/grupo, kahit na –numeric-id ay hindi tinukoy.

Kung ang source system ay tumatakbo sa isang chrooted environment o kung ang user o grupo ay wala sa receiving end, ang orihinal na mga numeric id ay gagamitin.

    -c, –checksum Binabago ang paraan ng pagsuri nito para sa mga binagong file. Kung wala ang opsyong ito, gumagamit ang rsync ng algorithm na "quick check" (itinakda bilang default) na tumitingin ng mga pagkakaiba sa laki ng file at oras ng pagbabago. Binabago ng opsyong ito ang algorithm upang ihambing gamit ang 128-bit MD4 checksum para sa bawat file na tumutugma sa laki. Ang pag-compile ng mga checksum ay nangangahulugan na ang magkabilang panig ay mag-aaksaya ng maraming disk I/O sa pagbabasa ng lahat ng data sa mga inilipat na file (at ito ay bago ang anumang pagbabasa na gagawin upang ilipat ang mga binagong file), kaya maaari nitong pabagalin ang mga bagay nang malaki. Ang panig ng pagpapadala ay bumubuo ng mga checksum habang ini-scan nito ang file system, na gumagawa ng listahan ng mga available na file. Bumubuo ang tatanggap ng mga checksum kapag naghahanap ito ng mga binagong file, at sinusuri ang mga checksum ng anumang file na kapareho ng laki ng ipinapadalang file: ang mga file na may binagong laki o binagong checksum ay pinili para sa paghahatid. Tandaan na palaging bini-verify ng rsync na ang bawat file na inilipat ay wastong na-reconstructed sa pagtanggap ng dulo;

    -e, –rsh=COMMAND - maaari mong tukuyin ang anumang remote na shell (Pagse-set up at paggamit ng SSH, rsh, remsh), o itakda ang RSYNC_RSH environment variable. --rsync-path=PROGRAM tukuyin ang rsync na tatakbo sa remote na makina --umiiral na laktawan ang paggawa ng mga bagong file sa receiver --ignore-umiiral na laktawan ang pag-update ng mga file na umiiral sa receiver --remove-source-files sender ay nag-aalis ng mga naka-synchronize na file (hindi- dir) --del an alias para sa --delete-during --delete tanggalin ang mga extraneous na file mula sa mga dest dirs. tanggalin ang mga file mula sa backup na wala na sa source side --delete-bago magtanggal ang mga receiver bago ilipat (default) --delete-sa panahon ng pagtanggal ng receiver sa panahon ng xfer, hindi bago --delete-delay hanapin ang mga pagtanggal habang, tanggalin pagkatapos -- tanggalin- pagkatapos tanggalin ng receiver pagkatapos ng paglipat, hindi bago ang "-pagkatapos" ay nangangahulugan na kailangan mong tanggalin ang mga file lamang pagkatapos makumpleto ang pag-synchronize.

--delete-excluded din tanggalin ang mga ibinukod na file mula sa mga dest dirs --ignore-errors tanggalin kahit na may mga I/O error. Tanggalin kahit na may mga I/O error.

--puwersahang tanggalin ang mga dir kahit walang laman --max-delete=NUM huwag magtanggal ng higit sa NUM na file --max-size=SIZE huwag maglipat ng anumang file na mas malaki sa SIZE --min-size=SIZE don "t maglipat ng anumang file na mas maliit sa SIZE --partial keep partially transferred files --partial-dir=DIR put a partially transferred file into DIR --delay-updates put all updated files to place at end

Ang pagtanggal ay naiiba sa –delete-pagkatapos na ang pagtanggal ay isinasagawa sa simula, at hindi sa huling yugto ng proseso ng pag-backup. Ang –delete-after ay mas mabilis dahil hindi ito nangangailangan ng karagdagang yugto ng pagtawid sa listahan ng mga file, ngunit nangangailangan ng paggamit ng –force na opsyon upang pangasiwaan ang mga sitwasyon tulad ng pagtanggal ng file at paglikha ng direktoryo na may parehong pangalan;

Mga pattern ng pagbubukod

Ang mga pangalan ng mga file na nasuri laban sa naturang mga pattern ay tinukoy na nauugnay sa direktoryo ng patutunguhan, ang "nangungunang direktoryo", kaya ang mga pattern ay hindi kinakailangang magsama ng mga elemento ng pinagmulan o mga direktoryo ng patutunguhan. Ang tanging mga pattern ng oras ay susuriin laban sa ganap na file o mga path ng direktoryo ay kapag ang source path ay ang root directory ng file system.

Tandaan na kapag ginagamit ang -r na opsyon (ipinahiwatig ng -a), ang bawat indibidwal na bahagi ng bawat landas ay hahanapin mula sa itaas hanggang sa ibaba, upang ang mga pattern ng pagsasama/pagbubukod ay inilapat nang pabalik-balik sa bawat naturang bahagi.

Tandaan din na ang –include at –exclude na mga opsyon ay nagpapahintulot lamang ng isang pattern bawat isa. Upang magdagdag ng maraming template, gamitin ang –include-from at –exclude-from na mga opsyon o ang –include at –exclude ang maramihang opsyon, ayon sa pagkakabanggit.

Maaaring tukuyin ang mga template sa ilang mga anyo. Ang mga patakaran para sa kanila ay:

    Kung ang pattern ay nagsisimula sa /, pagkatapos ito ay naka-check laban sa simula ng pangalan ng file, kung hindi man - laban sa trailing na bahagi ng pangalan. Ito ang katumbas ng isang nangungunang ^ sa mga regular na expression. Kaya, ang "/foo" ay dapat tumugma sa isang file na pinangalanang "foo" sa tuktok ng punong ipinapasa. Sa kabilang banda, ang "foo" ay dapat tumugma sa anumang file na "foo" saanman sa loob ng puno ng direktoryo, dahil ang algorithm ay inilapat nang recursively mula sa itaas hanggang sa ibaba. Gumagana ito na parang ang bawat bahagi ng landas ay isang pangwakas na filename. Ang inisyal / ay hindi ginagawang ganap na landas ang pattern.

    Kung ang pattern ay nagtatapos sa /, pagkatapos ay tumutugma lamang ito sa isang direktoryo, hindi isang file, hindi isang link, at hindi isang aparato.

    Kung ang pattern ay naglalaman ng mga wildcard na character mula sa *?[ set, ang mga panuntunan ng wildcard ng shell para sa mga filename ay ginagamit upang suriin ang tugma. Kung hindi, ginagamit lamang ang pagtutugma ng string.

    Ang mga double asterisk na tugma ay may kasamang slash, habang ang solong asterisk * na mga tugma ay nagtatapos sa isang slash.

    Kung ang isang pattern ay naglalaman ng slash (hindi binibilang ang trailing slash) o "" , ang pattern ay susuriin laban sa buong filename, kabilang ang anumang mga parent na direktoryo. Kung ang pattern ay hindi naglalaman ng / o " ", pagkatapos ay ang pattern ay naka-check laban sa trailing na bahagi ng pangalan ng file. Muli, tandaan na ang algorithm ay inilapat nang recursively, kaya ang "buong filename" ay maaaring maging anumang bahagi ng path na malalim sa hierarchy mula sa panimulang direktoryo.

    Kung ang isang pattern ay nagsisimula sa "+" (isang plus na sinusundan ng isang espasyo), kung gayon ito ay palaging itinuturing bilang isang inclusive pattern, kahit na tinukoy bilang bahagi ng isang parameter ng pagbubukod. Ang "+" na bahagi mismo ay hindi isinasaalang-alang kapag sinusuri ang pagsunod.

    Kung ang isang pattern ay nagsisimula sa "-" (minus na sinusundan ng isang puwang), kung gayon ito ay palaging itinuturing bilang isang eksklusibong pattern, kahit na ito ay lilitaw bilang bahagi ng parameter ng pagsasama. Ang "-" na bahagi mismo ay hindi isinasaalang-alang kapag sinusuri ang pagsunod.

    Kung ang pattern ay tumutukoy ng isang tandang padamdam! , pagkatapos ay ire-reset ang kasalukuyang listahan ng isama/ibukod sa pamamagitan ng pag-alis sa lahat ng dating tinukoy na pattern.

Ang mga +/- na panuntunan ay pinakakapaki-pakinabang sa mga listahang nabasa mula sa isang file, na nagbibigay-daan sa iyong magkaroon ng isang pangkalahatang listahan na naglalaman ng parehong eksklusibo at inclusive na mga pattern.

Kung tatapusin mo ang listahan ng pagbubukod gamit ang --exclude "*", tandaan na dahil sa likas na recursive, ang algorithm ay titigil sa mga pangunahing direktoryo at hindi susubukan ang mga file sa loob ng mga ito maliban kung tahasan mong tinukoy na isama ang mga pangunahing direktoryo ng mga file na iyong gustong i-on. Upang isama ang lahat ng mga direktoryo, gamitin ang –isama ang "*/" bago ang –ibukod ang "*".

Ilang halimbawa ng pagsasama/pagbubukod:

Ibukod ang "*.o" ibukod ang lahat ng filename na tumutugma sa *.o --ibukod ang "/foo" ibukod ang file na pinangalanang foo sa nangungunang direktoryo --ibukod ang "foo/" ibukod ang anumang direktoryo na pinangalanang foo --ibukod ang "/foo/ */bar " ibukod ang anumang file na pinangalanang bar ng dalawang antas sa lalim ng hierarchy mula sa direktoryo na "foo" sa tuktok ng puno --ibukod ang "/foo/**/bar" ay ibukod ang anumang file na pinangalanang bar na dalawa o higit pang mga antas na malalim sa hierarchy mula sa ang nangungunang direktoryo na "foo" --include "*/" --include "*.c" --exclude "*" isama lang ang mga direktoryo at file na may C source --include "foo/" --include "foo/bar . c" --exclude "*" ay magsasama lamang ng foo/bar.c (ang foo/ directory ay dapat na tahasang isama, kung hindi, ito ay lalaktawan dahil sa "*")

Mga code ng pagkumpleto

0 Tagumpay 1 Syntax o error sa paggamit 2 Protocol incompatibility 3 Input/output file at mga error sa pagpili ng direktoryo 4 Ang hiniling na aksyon ay hindi suportado: isang pagtatangka upang gumana sa 64-bit na mga file sa isang platform na hindi sumusuporta sa kanila; o may tinukoy na parameter na sinusuportahan lamang ng kliyente at hindi sinusuportahan ng server. 5 Error kapag sinusubukang magsimulang magtrabaho sa pamamagitan ng client-server protocol 10 I/O socket error 11 File I/O error 12 Error sa rsync protocol data stream 13 Diagnostic error 14 Error sa IPC code 20 Natanggap ang alinman sa SIGUSR1 o SIGINT signal 21 Waitpid() call returns error 22 Error sa paglalaan ng mga core memory buffer 23 Hindi kumpletong paglilipat dahil sa error 24 Hindi kumpletong paglilipat dahil sa nawawalang source file 30 Waiting time kapag nagpapadala/ tumatanggap ng data

Mga variable ng kapaligiran

CVSIGNORE Ang CVSIGNORE environment variable ay kumpletuhin ang mga pattern ng pagbubukod mula sa .cvsignore file. Tingnan ang --cvs-exclude na opsyon para sa mga detalye. RSYNC_RSH Ang RSYNC_RSH environment variable ay nagbibigay-daan sa iyo na i-override ang remote shell program na ginagamit ng rsync bilang isang command line na opsyon para sa shell ay tinukoy pagkatapos ng pangalan ng program, pati na rin para sa -e parameter na RSYNC_PROXY environment variable sabihin sa rsync client na gumamit ng web proxy para kumonekta sa rsync server dapat mong tukuyin ang proxy bilang hostname:port pair ito ay hindi katulad ng password para sa transport shell eg ssh USER o LOGNAME Ang USER o LOGNAME na mga variable ng kapaligiran ay ginagamit upang tukuyin ang default na user na ang pangalan ay ibinigay sa rsync server para sa pagpapatunay hanapin ang .cvsignore file ng user.

Halimbawa ng rsync script

#!/bin/bash # buong landas sa iyong listahan ng direktoryo BACKUP_LST =/ etc/ backup/ backup.lst cat $(BACKUP_LST) |

habang binabasa ang Res; do rsync -e ssh -acq --delete --force $Res backup@ B:/ var/ backup$Res done

Bilang karagdagan, paminsan-minsan kailangan mong tanggalin ang mga hindi napapanahong mga file sa lahat ng mga server nang sabay-sabay, na kasalukuyang ginagawa nang manu-mano at tumatagal ng ilang araw. Plano kong ilarawan ang tanong ng pinakamabilis na file system para sa naturang Use Case mamaya. Magpapareserba lang ako na napili ang XFS sa ilang kadahilanan.

Matapos subukan ang ilang mga teknolohiya ng kumpol at mga file system, sa payo ng isang mas matandang kaibigan, nagpasya kaming gamitin ang parehong rsync, ngunit kasabay ng inotify. Matapos maghanap ng kaunti sa Internet para sa isang handa na solusyon, upang hindi muling likhain ang gulong, nakita ko ang csyncd, inosync at lsyncd. Nasa hub na ako, ngunit hindi ito kasya dito, dahil... nag-iimbak ng isang listahan ng mga file sa isang database ng SQLite, na malamang na hindi gumana nang maayos kahit na may isang milyong talaan. At sa gayong mga volume ay hindi na kailangan ng dagdag na link. Ngunit ang lsyncd ay naging eksakto kung ano ang kailangan namin.

4. Simulan natin ang demonyo sa lahat ng node:

/etc/init.d/lsyncd simulan

Kung iniwan mo ang "nodaemon = true" sa config, makikita mo kung ano ang nangyayari.

Ang bilis ng paglipat ng data ay umabot sa 300 Mbit/s at ito ay may maliit na epekto sa pag-load ng server (kumpara sa parehong GlusterFS, halimbawa), at ang pagkaantala sa kasong ito ay nagpapakinis ng mga taluktok. Malaki pa rin ang nakasalalay sa FS na ginamit. Dito rin, kailangan kong gumawa ng kaunting pananaliksik, na may mga numero at mga graph, dahil ang sitwasyon ay medyo tiyak at ang mga resulta ng mga umiiral na nai-publish na mga pagsubok ay hindi sumasalamin sa kung ano ang kinakailangan sa gawain.

Ano pa ang isinasaalang-alang at bakit hindi ito angkop sa kasong ito

Ang buong pag-aaral ay naglalayong magtrabaho kasama ang Amazon EC2, na isinasaalang-alang ang mga limitasyon at tampok nito, kaya ang mga natuklasan ay pangunahing nag-aalala lamang dito.
  • DRBD - nangyayari ang pagtitiklop sa antas ng block. Kung ang isang host ay humina, pareho ang papatayin. Limitasyon ng 2 node. (Mas marami ang posible, ngunit ang ika-3 at ika-4 ay maaari lamang ikonekta bilang mga alipin.)
  • Ang Ocfs2 - ay ginagamit alinman sa tuktok ng DRBD (na kung saan ay may magandang tungkol sa Habré), o kailangan mong ma-mount ang isang partition mula sa ilang mga node. Hindi pwede sa ec2.
  • Ang Gfs2 ay isang analogue ng ocfs2. I haven't tried it, because according to tests, this FS is slower than ocfs2, otherwise it's its analogue.
  • GlusterFS - dito ang lahat ay gumana halos kaagad at ayon sa nararapat! Simple at lohikal na pangasiwaan. Maaari kang gumawa ng kumpol ng hanggang 255 node na may arbitrary na replica na halaga. Gumawa ako ng isang cluster partition mula sa isang pares ng mga server at inilagay ito sa kanila ngunit sa ibang direktoryo (iyon ay, ang mga server ay mga kliyente din). Sa kasamaang palad, ang cluster na ito ay naka-mount sa client sa pamamagitan ng FUSE, at ang bilis ng pagsulat ay naging mas mababa sa 3 MB/sec. At kaya, ang mga impression mula sa paggamit ay napakahusay.
  • Lustre - upang patakbuhin ang bagay na ito sa krenel mode kailangan mong i-patch ang kernel. Kakatwa, mayroong isang pakete na may mga patch na ito sa repositoryo ng Ubuntu, ngunit hindi ako makahanap ng anumang mga patch para dito o hindi bababa sa para sa Debian. At sa paghusga sa pamamagitan ng mga pagsusuri, napagtanto ko na ang pagpapatakbo nito sa sistema ng deb ay shamanismo.
  • Hadoop w/ HDFS, Cloudera - hindi sinubukan dahil may nakitang ibang solusyon (tingnan sa ibaba). Ngunit ang unang bagay na nakakuha ng iyong mata ay nakasulat ito sa Java, kaya ito ay kumonsumo ng maraming mapagkukunan, at ang sukat ay hindi tulad ng Facebook o Yahoo, 4 na node lamang sa ngayon.

UPD: Ang solusyon na ito ay gumanap nang maayos sa mga pagsubok (pagkatapos kung saan isinulat ang artikulo), ngunit sa mga kondisyon ng labanan ang lahat ay naging ganap na naiiba. Ang pinakamababang configuration ng produksyon ay 584 thousand nested directories. At ang lsyncd ay nag-hang inotify" at higit pa bawat direktoryo. Imposibleng gawin ito para sa buong puno nang sabay-sabay. Ang memorya, 584 libong mga abiso, ay kumakain ng medyo kaunti, mga 200 MB (mula sa 16 GB na magagamit), ngunit ang prosesong ito ay tumatagal ng 22 minuto. Sa prinsipyo, hindi ito nakakatakot: sa sandaling ilunsad mo ito at kalimutan ito. Ngunit pagkatapos nito, kasama ang karaniwang pagsasaayos, sinisimulan ng lsyncd ang pag-synchronize ng lahat ng mga file, na sa aming mga kundisyon ay alinman sa maraming surot o tumagal ng mga araw. Sa pangkalahatan - hindi isang opsyon. Hindi kinakailangan ang 100% na pagkakapare-pareho at maaaring ibigay ang paunang pag-synchronize. Ang natitira na lang ay "i-off ito." Sa kabutihang palad, ang daemon ay nakasulat sa paraang maaari mong baguhin ang halos lahat ng mga function nito nang direkta mula sa config. Gayundin, upang mapataas ang pagganap, ang default.rsync ay pinalitan ng default.rsyncssh, at ang kernel ay nakatutok para sa mga limitasyon ng inotify Iyon ay, ang config sa itaas ay angkop para sa karamihan ng mga gawain, ngunit sa aming partikular na sitwasyon gumagana ang mga sumusunod.

Mga Setting = ( logfile = "/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 }

Mga setting ng kernel

Ang inotify ay may tatlong opsyon (tingnan ang ls /proc/sys/fs/inotify/):
max_queued_events - maximum na bilang ng mga kaganapan sa queue; default = 16384;
max_user_instances - kung gaano karaming mga innotify na pagkakataon ang maaaring ilunsad ng isang user; default = 128;
max_user_watches - kung gaano karaming mga file ang mapapanood ng isang user; default = 8192.

Mga halaga ng pagpapatakbo:
echo " fs.inotify.max_user_watches = 16777216 # fs.inotify.max_queued_events = 65536 " >> /etc/sysctl.conf echo 16777216 > /proc/sys/fs/inotify/max_user_5watches echo >/6777216 > /max_queued_events

Kaya ang lahat ay nagsimulang magtrabaho sa produksyon.

Salamat sa iyong pansin!

recruit Oktubre 24, 2011 sa 00:52

Rsync: Isang malakas na utility para sa mabilis, nababaluktot na remote at lokal na pagkopya ng file

  • Closet *

Ang Rsync ay idinisenyo upang palitan ang rcp, isang sinaunang remote copy program para sa Unix. Dahil sa malawak nitong pag-synchronize at mga kakayahan sa paglilipat ng file, kadalasang ginagamit ang rsync upang lumikha ng mga salamin.
Gamit ang isang matalinong algorithm, pinapayagan ng rsync ang rsync na magpadala lamang ng mga pagbabago sa mga file, nang hindi kinakailangang magkumpara ng dalawang file upang makita ang mga pagbabago. Bilang karagdagan, ang rsync ay nagsasagawa ng on-the-fly compression, na nagbibigay-daan sa iyong maglipat ng mga file nang may pinakamataas na kahusayan.
Bilang karagdagan sa mga goodies na inilarawan sa itaas, ang rsync ay mayroon ding ilang mga kapaki-pakinabang na tampok sa seguridad. Sinusuportahan nito ang ssh, ang inirerekomendang protocol para sa ligtas na paglipat ng data; Bago ang pagproseso ng impormasyon, isinusulat ito sa isang pansamantalang file upang walang mangyari sa orihinal, sa wakas, sinusuportahan nito ang isang espesyal na mode para sa ligtas na pag-debug ng mga utos.
Ang Rsync ay madaling gamitin, ngunit hindi ito isang click-and-play na programa. Ito ay isang makapangyarihang tool na maaaring maging lubhang kapaki-pakinabang, ngunit mag-ingat dahil madali itong makasira ng isang bagay.

Syntax ng utility
Ang syntax ng utility ay simple at medyo karaniwan.
rsync [mga opsyon] pinagmulan [destinasyon]
Sa pamamagitan lamang ng pagtukoy sa pinagmulan, makakakita kami ng listahan ng mga file nang walang operasyon ng pagkopya.

Mga pagpipilian at halimbawa
Para sa kadalian ng pag-unawa, ipinakita ko muna ang mga pagpapatakbo ng pag-synchronize sa lokal.
Ang isang mabilis na paraan upang i-sync ang dalawang direktoryo ay ang paggamit ng opsyon -a:
rsync -a foobar_src/ foobar_dst/
Sa kasong ito, ang mga file at direktoryo mula sa pinagmulan ay makokopya sa patutunguhan, at kung mayroong mga file doon, ang mga tumutugma sa pangalan ay mapapatungan, at ang iba ay hindi magagalaw.

Pagpipilian -a tumutukoy sa archive mode ng utility, at katumbas ng isang hanay ng mga opsyon:
-r, --recursive - recursive mode;
-l, --links - muling paglikha mga symlink, nangangahulugan ito na ang mga simbolikong link ay ililipat din;
-p, --perms - paglilipat ng mga karapatan;
-t, --times - ilipat ang oras ng pagbabago at i-update ito sa remote system. Dapat itakda ang key na ito para sa tumpak na pag-synchronize;
-g, --group - itakda ang pangkat ng target na file sa kapareho ng sa pinagmulan;
-o, --owner - itakda ang may-ari ng target na file sa kapareho ng pinagmulan;
-D, - katulad ng --devices --specials - itakda ang uri ng file ng device at espesyal na uri ng file sa kapareho ng orihinal.
Bilang resulta, nakakakuha kami ng kopya ng source directory. Sa pamamagitan ng paraan, maaari itong magamit kapag naglilipat ng OS sa isa pang hard drive sa pamamagitan ng pag-edit ng /etc/fstab, pag-install/pag-reinstall ng grub sa bagong hard drive - nakakakuha kami ng isang gumaganang sistema, ngunit iyon ay isa pang paksa.

Upang ipakita ang impormasyon tungkol sa pagpapatakbo ng utility, mayroong isang pagpipilian - v, --verbose. Ang mas maraming mga pagpipilian -v, mas magiging informative ang output ng utility. Ang pinakamataas na nilalaman ng impormasyon ay nakakamit gamit ang apat na pagpipilian -v, --verbose.

Kung mayroon kaming napapanahon na impormasyon sa direktoryo ng pinagmulan, kung gayon upang hindi mabara ang receiver ng impormasyon na tinanggal o inilipat sa pinagmulan sa panahon ng trabaho, kailangan naming tanggalin ang mga lumang file at direktoryo. Mayroong ilang mga opsyon sa pag-alis para dito, bawat isa ay nagbibigay ng sarili nitong algorithm sa pag-alis. Anim na sila!
--del ay isang pinaikling anyo ng --delete-during ;
--delete - tanggalin lang ang mga extraneous na file mula sa receiver;
--delete-before - tinatanggal ng receiver bago i-transmit;
--delete-during - ang receiver ay nagtatanggal sa panahon ng paghahatid, ngunit hindi bago;
--delete-delay - antalahin ang pagtanggal/hanapin ang mga file na tatanggalin sa panahon ng paglilipat, ngunit tanggalin pagkatapos ng paglipat;
--delete-after - tinatanggal ng receiver pagkatapos ng paghahatid, ngunit hindi bago ito;
--delete-excluded - tanggalin din ang mga hindi kasamang file sa receiver para dito, may tinukoy na pattern (--exclude=PATTERN).

Ipagpalagay na mayroon kaming mas kamakailang mga file sa receiver, at hindi namin nais na ang mga ito ay ma-overwrite ng mga luma mula sa pinagmulan, kung gayon ang susi ay ginagamit para dito -u, --update.
-u, --update - laktawan ang mga file kung mas bago ang file sa receiver.
Huwag mag-alala kung nagbago ang mga petsa ng direktoryo, dahil... Ang mga file mismo ay hindi na-overwrite.

Minsan ang mga file ay maaaring masira o mabago, ngunit ang petsa at laki ay pareho. Pagkatapos ay maaari mong gamitin ang checksum verification, opsyon -c, --checksum.

Ang aking gawain ay alamin kung paano gumawa ng backup na kopya ng mga koleksyon ng mga litrato, musika, at trabaho mula sa unibersidad at trabaho. Kasabay nito, ang impormasyon sa pinagmulan ay palaging napapanahon, at ang tinatanggal ay basura. Isang halimbawa upang malutas ang aking problema:
rsync -auvv --delete-sa panahon ng foobar_src/ foobar_dst/
Ia-update nito ang aking receiver, kung napuno na ito ng isang bagay - aalisin nito ang wala sa pinagmulan, ngunit hindi makakaapekto sa mas bagong mga file, mga istatistika ng display at katayuan para sa bawat file.

Malayong trabaho
Bilang karagdagan, ang kakayahang magtrabaho sa pamamagitan ng ssh ay magiging lubhang kapaki-pakinabang. Tinitiyak nito ang pag-encrypt ng channel, na napakahalaga kung nagsi-synchronize ka ng dalawang server sa Internet. Upang bawasan ang trapiko, maaari ring i-compress ng rsync ang data kapag ipinadala sa network.
Ang mga sumusunod na opsyon ay kinakailangan:
-e - itakda ang remote na shell upang gamitin;
-z - i-compress ang ipinadalang data, o itakda:
-compress-level=9 - compression sa pagtatakda ng antas ng compression.

Halimbawa ng pagkopya mula sa isang malayuang host sa pamamagitan ng ssh:
rsync -avv --delete-during -compress-level=9 -e "ssh -p remote_ssh_port" user@host:/dir/to/foobar_src foobar_dst/
Sa kasong ito, sa source side kailangan mong i-install ang rsync utility.

Umaasa ako na ang impormasyong ito ay magiging kapaki-pakinabang sa marami. Makakahanap ka ng higit pang impormasyon tungkol sa rsync utility sa dokumentasyon nito, sa kabutihang palad ito ay mahusay na inilarawan.
Doon ay makakahanap ka rin ng impormasyon kung paano itaas ang rSync daemon para sa direktang koneksyon nang hindi gumagamit ng remote na ssh shell, pati na rin ang isang paglalarawan ng maraming iba pang mga opsyon para sa bawat panlasa at kulay.

Mga tag: rsync, pagkopya, pag-backup ng file, pag-synchronize ng file

Ang rsync ay gumagamit ng GNU long parameter na kombensyon sa pagbibigay ng pangalan. Marami sa mga opsyon sa command line ay may dalawang opsyon: ang isa ay maikli at ang isa ay mahaba. Ito ay makikita sa ibaba sa pamamagitan ng paghihiwalay sa dalawang opsyon gamit ang kuwit. Ang ilang mga pagpipilian ay mayroon lamang isang mahabang pagpipilian. Ang "=" sign para sa mga parameter na may karagdagang halaga ay opsyonal at maaaring mapalitan ng espasyo.

    H, --help Nagpi-print ng maikling pahiwatig na naglalarawan sa mga magagamit na opsyon sa rsync

    Bersyon Ini-print ang numero ng bersyon ng rsync at paglabas

    V, --verbose Ang opsyong ito ay nagdaragdag sa dami ng verbosity na naka-print sa panahon ng paglilipat. Bilang default, tahimik na gumagana ang rsync. Ang One -v ay magkakaroon ng epekto ng pagpapakita ng isang listahan ng mga inilipat na file at isang maikling buod sa dulo. Ang Two -vs ay nagpapakita ng mga detalye tungkol sa mga nawawalang file at nagbibigay ng kaunti pang impormasyon sa dulo. Maaaring kailanganin lang ang mas malaking numero kapag nagde-debug ng rsync.

    Q, --quiet Binabawasan ang dami ng mga detalye ng paghahatid, pangunahin ang mga mensahe mula sa malayong server. Ang pagpipiliang ito ay kapaki-pakinabang kapag tinawag mula sa cron.

    I, --ignore-times Karaniwang lalaktawan ng rsync ang mga file na ang laki at oras ng pagbabago ay magkapareho. Hindi pinapagana ng setting na ito ang "mabilis na pagsusuri" na gawi na ito.

    Sukat-lamang Karaniwang nilalaktawan ng rsync ang mga file na ang laki at oras ng pagbabago ay magkapareho. Sa --size-only , lalaktawan ang mga file kung magkapareho ang laki ng mga ito, anuman ang oras ng pagbabago. Ito ay kapaki-pakinabang kapag gumagamit ng rsync kaagad pagkatapos magpatakbo ng isa pang mirroring system na hindi nag-imbak ng eksaktong mga oras.

    modify-window Kapag naghahambing ng dalawang timestamp, isinasaalang-alang ng rsync na pantay ang mga timestamp kung maghihiwalay ang mga ito sa loob ng halaga ng modify_window. Karaniwan ang halagang ito ay zero, ngunit maaaring makita mong kapaki-pakinabang na itakda ito sa mas mataas na halaga sa ilang mga kaso. Sa pagsasagawa, kapag naglilipat sa isang Windows FAT file system na hindi maaaring kumatawan sa oras hanggang sa pangalawa, --modify_window=1 ay lubos na kapaki-pakinabang.

    C, --checksum Pinipilit ang sending side na kalkulahin ang mga checksum ng lahat ng mga file gamit ang 128-bit MD4 algorithm bago ipadala. Pagkatapos ay ibe-verify ang checksum sa receiving end upang payagan ang mga pagpapadala ng mga kasalukuyang file na may parehong laki at checksum na dumaan. Ang setting na ito ay maaaring magdulot ng kaunting pagbagal.

Gayunpaman, tandaan na hindi pinapanatili ng -a ang mga hard link dahil mahal ang paghahanap ng mga multilink na file. Kakailanganin mong tukuyin ang -H nang hiwalay.

    R, --relative Gumamit ng mga relative path. Nangangahulugan ito na ang buong mga landas na tinukoy sa command line ay ipinadala, sa halip na ang mga huling bahagi ng mga pangalan ng file. Sa pagsasagawa, ito ay kapaki-pakinabang kapag kailangan mong magpadala ng maraming magkakaibang mga direktoryo nang sabay-sabay. Halimbawa, kung tinukoy mo ang utos:

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

pagkatapos ay lilikha ito ng file na foo.c sa /tmp sa remote na makina. Kung sa halip ay tinukoy mo

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

pagkatapos ay malilikha ang file sa /tmp/foo/bar/foo.c sa remote na makina - ang buong landas ay mase-save.

Hindi pinapagana ang --relative na opsyon. Ito ay kailangan lamang kung gusto mong gamitin ang --files-from na opsyon nang walang ipinahiwatig na gawi nito na may pinaganang --relative na opsyon.

    No-implied-dirs

Kapag pinagsama sa --relative, lahat ng apektadong direktoryo sa bawat path ay hindi tahasang kinokopya bilang bahagi ng proseso ng paglilipat. Ginagawa nitong mas pinakamainam ang paglilipat at nagbibigay-daan din ito para sa hindi ipinares (tingnan ang halimbawa sa ibaba) ng mga simbolikong link sa mga landas na ipinahiwatig ng paglilipat. Halimbawa, kung ang file na "/path/foo/file" ay naipasa gamit ang -R na opsyon, bilang default, titiyakin ng rsync na ang "/path" at "/path/foo" ay eksaktong tumutugma sa mga direktoryo/link sa receiving end . Ang --no-implied-dirs na opsyon ay nagbibigay-daan sa iyo na huwag pansinin ang mismatch kapag ang "/path" ay isang tunay na direktoryo sa isang tabi at isang simbolikong link sa kabilang panig. Hindi sinusubukan ng rsync na baguhin ang anuman sa parameter na ito sa kasong ito.

    B, --backup Gamit ang opsyong ito, ang mga dati nang file sa receiving side ay papalitan ng pangalan sa sandaling mailipat o matanggal ang kaukulang file. Maaari mong kontrolin kung saan inililipat ang mga file at kung anong suffix (kung kinakailangan) ang idinaragdag sa pangalan gamit ang --backup-dir at --suffix na mga opsyon.

    Backup-dir=DIR Sa kumbinasyon ng --backup ay tumutukoy sa direktoryo kung saan magse-save ng mga backup. Ito ay lubos na kapaki-pakinabang para sa incremental backups. Maaari mong opsyonal na tukuyin ang isang suffix gamit ang --suffix (kung hindi, ang mga backup na file ay papanatilihin ang kanilang mga orihinal na pangalan).

    Suffix=SUFFIX Binibigyang-daan ka ng opsyong ito na tumukoy ng suffix maliban sa default na suffix para sa mga backup ng file kapag nakatakda ang --backup (-b). Bilang default, ang suffix na ito ay nakatakda sa ~ without setting --backup-dir, na nagre-reset sa suffix na ito sa walang laman na string.

    U, --update Tinutukoy na laktawan ang anumang mga file na mayroon na sa receiving end na may mas huling petsa kaysa sa mga source file.

    L, --copy-links Kung may makitang simbolikong link, ang file na itinuturo nito ay makokopya sa receiving end, sa halip na sa parehong simbolikong link.

    Copy-unsafe-links Kinokopya ang lahat ng object sa labas ng orihinal na directory tree na isinangguni ng mga simbolikong link. Ang mga ganap na simbolikong link, at gayundin, kung nakatakda ang --relative, ang anumang mga simbolikong link sa loob ng puno ng direktoryo ng pinagmulan, ay itinuturing bilang mga regular na file.

    Safe-links Tinutukoy na huwag pansinin ang anumang simbolikong link na tumutukoy sa isang bagay sa labas ng puno ng target na direktoryo. Nilaktawan din ang lahat ng ganap na sanggunian. Ang paggamit sa opsyong ito kasama ng --relative ay maaaring magdulot ng mga hindi inaasahang resulta.

    H, --hard-links Tinutukoy upang muling likhain ang mga hard link sa patutunguhan na bahagi ayon sa kung ano ang naroroon sa pinagmulan. Kung wala ang opsyong ito, ang mga hard link ay itinuturing na parang mga regular na file.

Tandaan na makikita lang ng rsync ang mga hard link kung ang parehong bahagi ng link ay nasa listahan ng mga file na ililipat. Maaaring medyo mabagal ang mga paglilipat sa setting na ito, kaya gamitin lang ito kung kinakailangan.

    W, --whole-file Ang opsyong ito ay hindi pinapagana ang differential algorithm ng rsync at kasama nito ang buong file ay inililipat sa kasalukuyan, sa kabuuan nito, ang Paglipat ay maaaring mas mabilis sa opsyong ito kung ang bandwidth sa pagitan ng source at destination machine ay mas malawak kaysa sa disk access bandwidth (lalo na kung ang "drive" ay talagang isang network file system.) Ang opsyong ito ay pinagana bilang default kung ang pinagmulan at destinasyon ay lokal.

    No-whole-file Hindi pinapagana ang --whole-file na opsyon kung ito ay pinagana bilang default.

    P, --perms Kinokopya ang lahat ng karapatan sa receiving side nang eksakto tulad ng orihinal.

Nang hindi tinukoy ang parameter na ito, ang bawat bagong file ay tumatanggap ng parehong mga pahintulot tulad ng orihinal, na isinasaalang-alang ang umask na may bisa sa receiving side, habang ang lahat ng iba pa (kabilang ang mga ina-update) ay nagpapanatili ng kanilang mga umiiral na pahintulot (ito ang parehong pag-uugali ng iba ang mga kagamitan sa pagkopya ay may mga file tulad ng cp).

    O, --owner Kinokopya ang mga katangian ng may-ari sa gilid ng pagtanggap nang eksakto tulad ng orihinal. Sa karamihan ng mga system, ang super user lang ang may karapatang itakda ang may-ari ng isang file. Dapat tandaan na kung ang remote na daemon ay gumagana sa isang chrooted na kapaligiran, ang --numeric-ids na opsyon ay ipinahiwatig dahil ang malayong bahagi ay walang access sa mga username sa /etc/passwd.

    G, --group Kinokopya ang mga attribute ng grupo sa receiving side nang eksakto tulad ng orihinal. Kung ang malayong bahagi ay hindi gumagana bilang isang super-user, kung gayon ang mga halaga lamang ng mga grupo kung saan ang tatanggap na side user ay isang miyembro ang nai-save (ang pangalan ng grupo ang mahalaga, hindi ang id nito).

    D, --devices Tinutukoy upang magpadala ng impormasyon tungkol sa character at i-block ang mga device upang muling likhain ang mga ito sa receiving side. Available lang sa superuser.

    T, --times Tinutukoy upang magpadala ng mga oras ng pagbabago ng file at i-update ang kaukulang katangian sa gilid ng pagtanggap kasama nito. Tandaan na kung hindi nakatakda ang parameter na ito, ang pag-optimize ng paglipat upang ibukod ang mga file na hindi nagbago sa paglipas ng panahon ay magiging hindi epektibo; sa madaling salita, ang pag-alis -t o -a ay nangangahulugan na ang susunod na paglipat ay isasagawa gamit ang -I na opsyon, ang mga checksum ay ihahambing para sa lahat ng mga file, at ang mga kaukulang mensahe tungkol sa mga ito ay lilitaw sa log, kahit na sila hindi nagbago.

    N, --dry-run Tinutukoy na hindi magsagawa ng anumang mga paglilipat, ngunit mag-ulat lamang ng mga aksyon na maaaring mangyari.

    S, --sparse Subukang pangasiwaan ang file fragmentation nang mas mahusay upang makatipid ng espasyo sa receiving end.

TANDAAN: Huwag gamitin ang opsyong ito kung ang patutunguhan ay may Solaris "tmpfs" file system. Hindi posible na maayos na pamahalaan ang paghahanap sa mga "butas" (mga null na rehiyon), na nagtatapos sa katiwalian ng file.

    Umiiral na Tinutukoy na hindi gumawa ng anumang mga bagong file - i-update lamang ang mga umiiral na sa receiving end.

    Ignore-existing Tinutukoy na hindi i-update ang mga file na mayroon na sa receiving end.

    Max-delete=NUM Huwag tanggalin ang higit sa NUM file at direktoryo. Ito ay kapaki-pakinabang kapag nag-mirror ng napakalaking mga puno ng direktoryo upang maiwasan ang mga bagay sa problema.

    Tanggalin Tanggalin ang anumang mga file sa receiving side na wala sa sending side. Ang mga file na hindi kasama sa paglilipat ay hindi rin kasama sa proseso ng pagtanggal maliban kung --delete-excluded ay tinukoy.

Walang epekto ang setting na ito maliban kung pinagana ang recursive directory copy. Maaaring mapanganib ang opsyong ito kung ginamit nang hindi tama! Ang isang napakahusay na tuntunin ng hinlalaki ay ang gumamit muna ng idle rsync (-n) upang makita kung anong mga file ang maaaring tanggalin at kung ang alinman sa mga ito ay mahalaga. Kung may anumang mga error sa I/O na nangyari sa gilid ng pagpapadala, ang pagtanggal ng anumang mga file sa gilid ng pagtanggap ay awtomatikong hindi pinagana. Pinipigilan nito ang napakalaking pagtanggal ng file sa receiving end dahil sa pansamantalang file system (hal. NFS) na mga error sa dulo ng pagpapadala. Maaaring hindi paganahin ang gawi na ito gamit ang --ignore-errors na opsyon.

    Delete-excluded Bilang karagdagan sa mga file na tinatanggal sa receiving side dahil wala sila sa sending side, tinutukoy na ang anumang mga file na hindi kasama ng --exclude na opsyon sa receiving side ay dapat ding tanggalin. Ang --delete na opsyon ay ipinapalagay.

    Delete-after Bilang default, tinatanggal muna ng rsync ang mga file bago kumopya para matiyak na may sapat na bakanteng espasyo sa receiving end. Kung gusto mong gawin ang pagtanggal pagkatapos, gamitin ang --delete-after. Ang --delete na opsyon ay ipinapalagay.

    Ignore-errors Kapag nagtatanggal (--delete), pinipilit ang proseso at binabalewala ang anumang mga error, maging ang mga error sa I/O.

    Pilitin ang Alisin ang mga direktoryo kapag pinapalitan ang mga ito ng mga hindi direktoryo, kahit na wala silang laman. Angkop lamang kung wala

    Tanggalin, dahil ang pagtanggal ay nangyayari lamang para sa mga direktoryo ng parehong antas. Nangangailangan ng --recursive (na ipinapahiwatig kung -a) na magkaroon ng makabuluhang epekto.

    B, --block-size=BLOCKSIZE Inaayos ang laki ng block na ginamit ng rsync algorithm. Tingnan ang data sheet para sa mga detalye.

    E, --rsh=COMMAND Binibigyang-daan kang pumili ng alternatibong remote shell program para pangasiwaan ang koneksyon sa pagitan ng remote at lokal na mga kopya ng rsync. Karaniwang naka-configure ang rsync na gumamit ng ssh bilang default, ngunit mas gusto mong gumamit ng rsh sa iyong lokal na network.

Kung ang opsyong ito ay ginagamit sa isang path tulad ng host::module/path, ang COMMAND remote shell program ay gagamitin upang simulan ang rsync server sa malayong bahagi, at lahat ng data ay ililipat sa pamamagitan ng remote shell connection, sa halip na direkta. sa pamamagitan ng koneksyon ng rsync server sa dulong "na". Tingnan ang seksyong "KUMUNEKTA SA RSYNC SERVER SA PAMAMAGITAN NG REMOTE SHELL". Ang mga argumento ng command line sa COMMAND ay pinapayagang tukuyin sa isang form na naglalantad sa COMMAND sa rsync bilang isang argumento. Halimbawa:

    E "ssh -p 2234" (Tandaan na ang mga ssh user ay maaaring alternatibong i-configure ang mga opsyon sa koneksyon na partikular sa kapaligiran sa kanilang mga .ssh/config file.)

Maaari ka ring pumili ng isang remote shell program sa pamamagitan ng RSYNC_RSH environment variable, na kumukuha ng parehong hanay ng mga value bilang -e. Tingnan din ang --blocking-io, na apektado ng pagtatakda ng -e na opsyon.

    C, --cvs-exclude Sa opsyong ito, hindi mo isasama ang malawak na hanay ng mga file na hindi mo gustong ilipat sa pagitan ng mga system. Gumagamit ito ng parehong algorithm na ginagamit ng CVS upang matukoy kung aling mga file ang babalewalain.

Ang listahan ng mga pagbubukod sa una ay kinabibilangan ng:

RCS/ SCCS/ CVS/ .svn/ CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del -* *.a *.o *.obj *.so *.Z *.elc *.ln core pagkatapos ang mga file na nakalista sa $HOME/.cvsignore ay idaragdag sa unang listahan, pati na rin ang anumang nakalista sa CVSIGNORE environment variable ( pinaghihiwalay ng mga puwang). Sa wakas, nilaktawan ang anumang file kung mayroong .cvsignore file sa parehong direktoryo na may template na tumutugma sa file. Tingnan ang cvs(1) manual para sa karagdagang impormasyon. * --exclude=PATTERN Nagbibigay-daan sa iyong piliing ibukod ang ilang mga file mula sa proseso ng paglilipat. Ito ay pinaka-kapaki-pakinabang kapag pumasa nang recursively.

Maaari kang gumamit ng maraming --excludes hangga't gusto mong bumuo ng custom na listahan ng mga file na ibubukod. Tingnan ang seksyong "EXCEPTION PATTERNS" para sa impormasyon sa syntax para sa parameter na ito.

    Exclude-file=FILE Katulad ng --exclude, ngunit sa halip ay ginagamit ang mga pattern ng pagbubukod ng file na nakalista sa FILE file. Mga blangkong linya kasama ang mga linyang nagsisimula sa ";" o "#" ay binabalewala. Kung ang FILE ay tinukoy bilang -, ang listahan ng mga pattern ay binabasa mula sa karaniwang input.

    Include=PATTERN Tinutukoy ang mga pattern para sa mga pangalan ng mga file na iyon na hindi maibubukod sa proseso. Ito ay kapaki-pakinabang dahil pinapayagan ka nitong bumuo ng medyo kumplikadong mga panuntunan sa pagsasama/pagbubukod.

Tingnan ang seksyong "EXCEPTION PATTERNS" para sa impormasyon sa syntax para sa parameter na ito.

    Include-from=FILE Tinutukoy na kunin ang listahan ng mga file na dapat isama sa paglilipat mula sa FILE file. Kung ang FILE ay tinukoy bilang -, ang listahan ng mga pattern ay binabasa mula sa karaniwang input.

    Files-from=FILE Binibigyang-daan kang tukuyin ang eksaktong listahan ng mga file na ililipat (na babasahin mula sa tinukoy na FILE o mula sa karaniwang input kung - ay tinukoy). Binabago din nito ang default na gawi ng rsync upang gawing mas madali ang paglipat ng mga tinukoy na file at direktoryo. Halimbawa, bilang default, ang paggamit ng --relative na opsyon ay pinagana (upang i-disable ito, gamitin ang --no-relative), lahat ng nakalistang direktoryo ay nilikha sa receiving side (sa halip na tahimik na ipasa, na parang ang -r hindi ginamit ang opsyon), at ang pag-uugali ay isang (--archive) ay hindi nagpapahiwatig ng pagkakaroon ng -r (--recursive) - dapat itong tahasang tinukoy kung kinakailangan.

Ang lahat ng mga filename na nabasa mula sa FILE ay itinuturing na nauugnay sa pinagmulang direktoryo -- ang mga nangungunang mga slash ay tinanggal, at ang ".." mga sanggunian na nakaturo sa itaas ng puno ng direktoryo ng pinagmulan ay hindi pinapayagan. Halimbawa, isaalang-alang:

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

Kung ang /tmp/foo ay naglalaman ng string bin (o kahit na "/bin"), ang /usr/bin na direktoryo ay gagawin bilang /backup/bin sa remote na makina (ngunit ang mga nilalaman ng /usr/bin ay hindi dapat ilipat maliban kung ang mga bagay ay tahasang tinukoy sa /tmp/foo, o kung ang -r na opsyon ay tinukoy). Tandaan din na ang epekto ng --relative (pinagana bilang default) ay ang pagkopya ng mga path na nabasa mula sa isang file - hindi nito pinipilit ang buong tinukoy na source path na makopya (/usr sa halimbawa). Bilang karagdagan, ang --files-from isang file ay maaaring basahin mula sa isang malayuang makina sa halip na lokal sa pamamagitan ng pagtukoy ng "host:" bago ang pangalan ng file (ito ay dapat tumugma sa isa sa mga dulo ng paglilipat). Para sa kaiklian, maaari ka lamang tumukoy ng prefix na ":" upang isaad ang remote copy party. Halimbawa: rsync -a --files-from=:/path/file-list src:/ /tmp/copy Dapat kopyahin ng command na ito ang lahat ng file na tinukoy sa file /path/file-list, na matatagpuan sa remote machine "src".

    0, --from0 Sinasabi sa rsync na ang mga filename na binabasa sa labas ay nagtatapos sa isang "\0" na character, hindi NL, CR, o CR+LF. Nalalapat ito sa mga --exclude-from, --include-from, at --files-from na mga opsyon.

    T, --temp-dir=DIR

Nagtuturo na gamitin ang DIR bilang isang direktoryo para sa mga pansamantalang kopya ng mga inilipat na file sa receiving end. Bilang default, ang mga pansamantalang file ay nilikha sa direktoryo ng patutunguhan.

    Compare-dest=DIR Inuutusan ang DIR na gamitin sa destination machine bilang direktoryo na ang mga nilalaman ay inihambing sa panahon ng proseso ng paglilipat, sa kondisyon na walang mga file sa direktoryo ng patutunguhan. Ito ay kapaki-pakinabang para sa pagsasagawa ng paglipat sa isang bagong lokasyon, pag-iiwan ng mga umiiral na file na buo, at pagkatapos ay paglilipat at paglilinis kapag ang lahat ng mga file ay nailipat na (halimbawa, paglilipat ng mga direktoryo sa isang bagong lokasyon at pagtanggal ng luma, bagama't nilalaktawan nito ang mga hindi binagong file. ; tingnan din ang - -link-dest).

Tandaan tagasalin: Ang pagkakaroon ng parameter na ito ay dahil sa pangangailangang mag-update, halimbawa, isang puno na may magkakaugnay na mga file. Sa kasong ito, hindi ipinapayong kopyahin sa isang file-by-file na batayan. Binibigyang-daan ka ng --compare-dest parameter na tumukoy ng pansamantalang direktoryo ng patutunguhan kung saan kinokopya ang mga nailipat na file. Sa pagtatapos ng proseso ng paglilipat, pinapalitan ng rsync ang pangalan ng orihinal na puno ng patutunguhan, pagkatapos ay pinalitan ng pangalan ang pansamantalang direktoryo na DIR sa orihinal, at sa wakas ay tatanggalin ang orihinal na direktoryo na may mga "lumang" file na pinalitan ng pangalan sa unang hakbang. Ang pagpipiliang ito ay nagpapataas ng pagiging kapaki-pakinabang ng --partial dahil ang mga bahagyang inilipat na file ay mananatili sa bagong pansamantalang direktoryo hanggang sa ganap na mailagay ang mga ito. Kung ang DIR ay tinukoy bilang isang kamag-anak na landas, kung gayon ito ay nauugnay sa direktoryo ng patutunguhan.

    Link-dest=DIR Gumaganap na kapareho ng --compare-dest, ngunit lumilikha din ng mga hard link sa DIR sa mga hindi binagong file sa direktoryo ng patutunguhan. Ang mga file na may binagong mga karapatan at pagmamay-ari ay hindi apektado nito. Tulad ng --compare-dest, kung ang DIR ay tinukoy bilang isang kamag-anak na pangalan, ang mga aksyon ay nauugnay sa direktoryo ng patutunguhan.

    Z, --compress Gamit ang opsyong ito, pini-compress ng rsync ang lahat ng data ng file na inilipat. Ito ay kapaki-pakinabang sa mabagal na linya. Ang ginamit na paraan ng compression ay kapareho ng ipinatupad ng gzip.

Tandaan na kadalasang nakakakuha ito ng mas mahusay na compression ratio kaysa sa maaaring makamit gamit ang remote shell program compression o transport layer compression dahil Kasama sa proseso ng compression ang lahat ng impormasyong ipinadala sa kaukulang mga bloke ng data.

    Numeric-id Sa halip na pangkat at user name, ang kanilang mga numeric id ay ipinapadala at itinutugma sa isa't isa sa magkabilang dulo.

Bilang default, gumagamit ang rsync ng mga pangalan ng pangkat at user upang matukoy ang may-ari ng mga file. Ang espesyal na uid 0 at gid 0 ay hindi kailanman nalalantad sa pamamagitan ng mga pangalan ng user/grupo, kahit na --numeric-ids ay hindi tinukoy. Kung ang source system ay tumatakbo sa isang chrooted environment o kung ang user o grupo ay wala sa receiving end, ang orihinal na mga numeric id ay gagamitin.

    Timeout=TIMEOUT Binibigyang-daan kang itakda ang maximum na oras ng paghihintay ng I/O sa mga segundo. Kung walang ililipat sa loob ng tinukoy na panahon, magwawakas ang rsync. Ang default ay 0, na nangangahulugang walang paghihintay.

    Nagpapatakbo si Daemon ng rsync bilang isang daemon. Ang daemon ay naa-access ng mga kliyente sa pamamagitan ng host::module o rsync:/\/host/module syntax. Kung ang karaniwang input ay isang socket, pagkatapos ay ipinapalagay ng rsync na ito ay tumatakbo mula sa inetd, kung hindi, ito ay madidiskonekta mula sa kasalukuyang terminal at magiging isang background na proseso ng daemon. Binabasa ng daemon ang configuration file (rsyncd.conf) para sa bawat koneksyon mula sa mga kliyente at tumutugon sa kanilang mga kahilingan nang naaayon.

    Walang-detach Kapag tumakbo bilang isang daemon, ang pagpipiliang ito ay nagtuturo sa rsync na huwag kumalas sa terminal at maging isang proseso sa background. Ito ay kinakailangan kapag nagpapatakbo ng isang serbisyo sa ilalim ng Cygwin, at maaari ding maging kapaki-pakinabang kung ang rsync ay sinusubaybayan ng mga program tulad ng daemontools o System Resource Controller ng AIX --no-detach ay inirerekomenda din kapag nagpapatakbo ng rsync sa ilalim ng isang debugger epekto kapag tumatakbo mula sa inetd o sshd.

    Address Bilang default, ginagamit ng rsync ang multicast address na 0.0.0.0 kapag tumatakbo bilang isang daemon na may --daemon o kapag kumokonekta sa isang rsync server. Binibigyang-daan ka ng --address na tukuyin ang eksaktong IP address (o hostname) para dito. Ginagawa nitong posible ang virtual hosting kasama ng --config.

    Config=FILE Tumutukoy ng alternatibong configuration file. Ito ay mahalaga lamang kung --daemon ay tinukoy. Default sa /etc/rsyncd.conf maliban kung ang daemon ay tumatakbo sa ibabaw ng isang remote shell at ang remote na user ay hindi root. Sa huling kaso, ang rsyncd.conf ay matatagpuan sa kasalukuyang direktoryo (karaniwan ay $HOME) bilang default.

    Port=PORT Tumutukoy ng alternatibong TCP port number na paganahin, sa halip na ang default na 873.

    Ang Blocking-io ay tumutukoy sa paggamit ng blocking I/O kapag tumatakbo sa isang remote shell transport program. Kung ang program na iyon ay alinman sa rsh o remsh, ang rsync ay gumagamit ng pagharang sa I/O bilang default, kung hindi, ito ay gumagamit ng hindi naka-block na I/O bilang default. (Tandaan na mas gusto ng ssh ang hindi pag-block.)

    No-blocking-io Dini-disable ang --blocking-io na aksyon kapag ito ay pinagana bilang default.

    Log-format=FORMAT Binibigyang-daan kang tukuyin kung ano mismo ang mga ulat ng rsync (mga log) sa karaniwang output sa isang file-by-file na batayan. Ang format ng mga mensahe ay tinutukoy ng parehong convention tulad ng para sa opsyon sa pag-log sa rsyncd.conf file.

    Ang Stats ay tumutukoy sa pagpapakita ng mga detalyadong istatistika ng paglilipat ng file, na nagbibigay-daan sa iyong suriin kung gaano kahusay ang rsync algorithm ay nauugnay sa iyong data.

    Bahagyang Bilang default, tatanggalin ng rsync ang lahat ng bahagyang nailipat na mga file kung maaantala ang paglilipat. Sa ilang mga kaso, mas kanais-nais na i-save ang mga naturang file. Gamit ang --partial na opsyon, maaari mong sabihin sa rsync na panatilihin ang isang bahagyang inilipat na file, na maaaring mapabilis ang paglipat ng buong file kapag inuulit ang mga naturang paglilipat nang sunud-sunod.

    Progress Tells rsync na magpakita ng impormasyon tungkol sa progreso ng paglilipat. Ang isang naiinip na gumagamit ay magkakaroon ng isang bagay na titingnan. Nagpapahiwatig --verbose nang hindi tumataas ang verbosity.

    P Katumbas ng --partial --progress . Natagpuan ng may-akda ang kanyang sarili na ginagamit ang kumbinasyong ito nang madalas, kaya ipinakilala niya ang isang hiwalay na parameter upang gawing mas madali.

    Password-file Binibigyang-daan kang magbigay ng password upang ma-access ang rsync server sa pamamagitan ng pag-save nito sa isang file. Tandaan na ang opsyon na ito ay kapaki-pakinabang lamang kapag gumagamit ng built-in na rsync transport upang ma-access ang rsync server, hindi ito kapaki-pakinabang kapag gumagamit ng remote na shell program. Ang file ay hindi kailangang mabasa ng lahat. Dapat itong maglaman lamang ng password, sa isang linya.

    Bwlimit=KBPS Binibigyang-daan kang tukuyin ang pinakamataas na bilis ng paglipat, kilobytes bawat segundo. Ang pagpipiliang ito ay pinaka-epektibo kapag gumagamit ng rsync upang maglipat ng malalaking file (ilang megabytes o mas malaki). Dahil sa likas na katangian ng mga paglilipat ng rsync, isang normal na bloke ng data ang ipinapadala, at kung matukoy ng rsync na ang bilis ay mas mataas kaysa sa itinakdang rate, nagpapakilala ito ng pagkaantala bago ipadala ang susunod na bloke. Bilang resulta, ang average na rate ng paglipat ay katumbas ng tinukoy na limitasyon. Ang halaga ng zero ay nangangahulugang walang paghihigpit.

    Write-batch=PREFIX Bumubuo ng set ng mga file na maaaring ilipat sa isang batch update. Ang bawat pangalan ng file sa set ay nagsisimula sa PREFIX. Tingnan ang seksyong BATCH MODE para sa mga detalye.

    Read-batch=PREFIX Naglalapat ng dati nang nabuong batch ng mga pagbabago, gamit ang set ng mga file na ang mga pangalan ay nagsisimula sa PREFIX. Tingnan ang seksyong BATCH MODE para sa mga detalye.

mga pagpipilian sa rsync

    C - ipinag-uutos na paghahambing ng mga checksum ng imahe sa simula ng trabaho. Kung ang pinagmulan at patutunguhang mga file ay may parehong laki at huling oras ng pagbabago, ngunit magkaiba, pinipilit sila ng opsyong ito na mag-synchronize.

    V - detalyadong output ng impormasyon tungkol sa kung ano ang nangyayari. Maaaring tukuyin ng maraming beses. Binibigyang-daan kang magsaya sa pagtingin sa isang bungkos ng panloob na impormasyon tungkol sa paglilipat ng data sa panahon ng proseso ng pag-update.

    Inplace - ina-update ang larawan nang hindi gumagawa ng pansamantalang file. Kapaki-pakinabang kung walang sapat na espasyo, pati na rin sa kaso ng hindi matatag na koneksyon: --inplace ay nagbibigay-daan sa iyo na magpatuloy sa pag-update ng larawan mula sa punto kung saan huminto ang pag-update dahil sa isang nawalang koneksyon. Ang paggamit ng opsyong ito ay bahagyang binabawasan ang kahusayan ng algorithm para sa pagkalkula ng pagkakaiba sa pagitan ng mga file.

    H, --human-readable - ipakita ang mga laki ng ipinadala/naprosesong data sa isang maginhawang anyo (sa halip na mga byte), halimbawa 234K o 1.35G

    Z, --compress - paganahin ang compression ng ipinadalang data.

    Pag-unlad - magpakita ng indikasyon ng proseso ng pagproseso ng file.

    Bahagyang - huwag tanggalin ang lokal na file bago i-synchronize

    P - katulad ng --partial kasama ng --progress

    Stats - display statistics - nagpapakita kung gaano karami ang natanggap/naipadala, kung magkano ang na-save, atbp.

Ang Rsync ay isang makapangyarihang tool na nagpapadali sa paglipat at pag-synchronize ng data sa pagitan ng mga lokal at malalayong system. Sa artikulong ito ay pag-uusapan natin Mga halimbawa ng pag-synchronize ng Rsync, pagkopya ng mga file, pangunahing paggamit at mga utos.

Mga halimbawa ng pag-synchronize ng Rsync: pangunahing paggamit

Gumawa tayo ng dalawang direktoryo sa loob ng /tmp na tinatawag na "foo" at "bar" at lumikha ng malaking bilang ng mga dummy file sa loob ng /tmp/foo

mkdir /tmp/foo /tmp/bar
para sa i sa `seq 1 100`;do touch /tmp/foo/file$i;done

Mayroon na kaming 100 file sa /tmp/foo; Ang /tmp/bar ay hindi dapat umiral. Maaari naming gamitin ang rsync upang kopyahin ang lahat ng mga file mula sa /tmp/foo sa /tmp/bar:

rsync /tmp/foo/* /tmp/bar

Gamit ang isang pangunahing extension ng file, maaari naming kunin ang lahat ng mga file at kopyahin ang mga ito sa isa pang direktoryo. Paano kung mayroong isang direktoryo sa loob ng /tmp/foo? Hindi ito ililipat. Kakailanganin nating gamitin ang -r (-recursive) na bandila upang lampasan ang direktoryo, na ipinapasa ang bawat file sa loob:

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

Ito ay isang napaka-simpleng halimbawa at hindi man lang umabot sa tunay na kapangyarihan ng rsync command. May mga flag para sa pag-save ng mga pahintulot, mga may-ari, mga grupo, mga symlink, atbp. Dahil ang mga flag na ito ay madalas na ginagamit, ang -a (-archive) na flag ay gumaganap bilang isang alias upang paganahin ang lahat ng ito, kabilang ang -r.

I-clear ang /tmp/bar, lumikha ng isang symlink sa isang file sa /tmp/foo, at gumamit ng rsync upang kopyahin muli ang lahat ng mga file:

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

Nakita namin na ibinagsak ni rsync ang symlink na ginawa namin. I-clear muli ang /tmp/bar, at subukan nating muli, sa pagkakataong ito gamit ang -a flag:

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

Gamitin ang chown upang baguhin ang pagmamay-ari ng isang file sa /tmp/foo sa ibang user at kopyahin ang mga file gamit ang -a sa /tmp/bar. Patakbuhin ang ls -l at mapansin na ang pagmamay-ari ay lumipat kasama ng file. Kumportableng materyal!

TANDAAN. May pagkakaiba sa pagitan ng pagsasama ng forward slash (/) sa dulo ng source path at hindi pagsasama nito; Ang una ay ililipat ang lahat ng mga file SA LOOB ng tinukoy na direktoryo, habang ang huli ay ililipat ang direktoryo mismo kasama ang lahat ng mga file sa loob.

Ang -a Bandila

Tulad ng sinabi namin kanina, sa artikulong ito titingnan namin ang mga halimbawa at utos ng pag-synchronize ng Rsync. Ngunit upang maisagawa ang mga ito, kailangan mong malaman ang mga pangunahing kaalaman sa pagtatakda ng mga flag.
Nabanggit namin kanina na ang -a (-archive) na bandila ay isang alias para sa isang hanay ng iba pang -rltpgoD na mga flag. Nasira, ginagawa ng bawat bandila ang sumusunod:

R- Recursive

L- Ilipat ang anumang mga nakitang symlink

T— I-save ang mga timestamp

P- I-save ang mga pahintulot

G— I-save ang mga grupo

O— Panatilihin ang pagmamay-ari

D— Pag-save ng mga bloke at character na device

Baka gusto mong idagdag ang mga sumusunod na command sa iyong command upang gawing mas madaling basahin ang mga file:

H- Madaling basahin ang format ng file

Gustung-gusto ng lahat ang mga pagsusuri

Ang -v (–verbose) na flag ay magbibigay sa iyo ng higit pang impormasyon tungkol sa estado ng paglipat, kabilang ang isang buod sa dulo na magiging ganito ang hitsura:

$ rsync -av foo/ bar
pagbuo ng listahan ng file...tapos na
nagpadala ng 1040 bytes nakatanggap ng 20 bytes 2120.00 bytes/sec
kabuuang laki ay 7 speedup ay 0.01

Kung gusto mong makakuha ng higit pang mga istatistika, patakbuhin ang rsync gamit ang -stats flag. Bibigyan ka nito ng detalyadong listahan ng kabuuang bilang ng mga file, mga file na inilipat, mga benchmark, at maging ang average na bilis ng paglipat. Sa kabilang banda, pipigilan ng -q (-quiet) ang lahat ng output na maaaring gamitin para sa pag-script kapag hindi kailangan ng feedback.

Pinadali ang mga remote transfer

Ang tunay na kapangyarihan ng rsync ay nakasalalay sa kakayahang magsagawa hindi lamang ng mga lokal na paglilipat, kundi pati na rin ng mga malalayong paglilipat. Kung nagamit mo na ang scp dati, ang syntax para sa malayuang paglilipat ay halos magkapareho:

rsync@:

Bilang halimbawa, ang rsync gamit ang syntax na ito ay magiging ganito:

rsync -avh /tmp/foo/ root@host2:/tmp/bar

Tandaan: (colon) sa pagitan ng remote server at remote path; Ito ay kinakailangan.

Higit pang mga pagpipilian

Ang Rsync ay may kasamang malaking listahan ng mga available na opsyon, masyadong marami para pumunta sa isang artikulo. Ang mga huling flag na titingnan natin ay ang -exclude, -exclude-from, -update, at -delete na mga flag.

Ibukod ang mga file batay sa pattern. Hindi pa sinusuportahan ng Rsync ang regular na expression, kaya ang karaniwang file matching at glob work lang ang gumagana

Ibukod ang mga file na nakalista sa line-delimited na file.

I-update ang mga file sa patutunguhan LAMANG kung ang pinagmulang kopya ay nabago kamakailan lamang

Tanggalin ang mga file sa patutunguhan LAMANG kung wala na ang orihinal na kopya.

Mga Alternatibong SSH Port

Kung binago mo ang SSH port sa iyong server, kakailanganin mong sabihin sa rsync na gamitin ang bagong numero ng port.

Halimbawa na may regular na SSH port:
rsync -azh /local/path/file [email protected]:/remote/path/file

Halimbawa na may alternatibong SSH port (22334):
rsync -azh /local/path/file -e 'ssh -p 22334' [email protected]:/remote/path/file

Mga remote na paglilipat nang walang password

Maaaring gamitin ang mga SSH key upang mapadali ang remote-to-local o local-to-remote na paglipat. Sa mga SSH key na naka-configure sa parehong remote at lokal na mga server, ang pag-sync ay maaaring gawin nang walang kahirap-hirap at walang interbensyon ng tao (hindi na kailangang magpasok ng password sa bawat oras). Sa isa pang artikulo, tatalakayin natin kung paano i-set up ang mga SSH key.

Kung mayroon kang anumang mga katanungan sa paksang "Mga halimbawa ng pag-synchronize ng Rsync", isulat ang mga ito sa mga komento. Tiyaking ipahiwatig kung aling bersyon ng operating system ang iyong ginagamit upang makatulong kami sa iyong tanong.

Kung makakita ka ng error, mangyaring i-highlight ang isang piraso ng teksto at i-click Ctrl+Enter.