- Rsync sünkroonib erinevuste järgi, säästes aega ja ribalaiust oma delta-ülekande algoritmiga.
- Lõpukaldkriipsud on olulised: SOURCE/ kopeerib sisu; ilma kaldkriipsuta loob see kataloogi sihtkataloogi sees.
- Ohutus ja töökindlus: kasutamine SSH, klahvid, jätkamiseks -P ja enne --delete'i vajutage --dry-run.
- Täielik paindlikkus: erandid, piirangud, tihendamine, varundamine ja ajastatud ülesanded croniga.

Kui teete koostööd Linux ja sa tegeled iga päev failidega, rsync on Šveitsi armee nuga andmete sünkroonimiseks ja edastamiseks kohalike kataloogide ja kaugserverite vahel kiiresti, turvaliselt ja tõhusalt. See mitte ainult ei kopeeri, vaid ka võrdleb ja saadab ainult muudetud andmeid, säästes aega ja ribalaiust.
Selles praktilises juhendis õpid samm-sammult rsynci omandama: alates selle põhisüntaksist ja võtmevalikutest kuni Trikid arenenud näiteks erandid, turvalised kustutamised, edastuste jätkamine, varundamine ja automatiseerimine croniga. Samuti näete, kuidas seda kasutada SSH-ga, paroolita võtmete ja suuruse või kiirusepiirangutega.
Mis on rsync ja miks see nii kiire on?
Rsync tähistab "kaugsünkroonimist". See on avatud lähtekoodiga tööriist kataloogide ja failide sünkroonimiseks kohalike või kaugete asukohtade vahel (võrgu kaudu). Selle peamine eelis on „delta-ülekande“ algoritm: see analüüsib metaandmeid ja sisu plokkidena ja üle kanda ainult erinevused, vähendades drastiliselt saadetavate andmete hulka.
See on saadaval praktiliselt kõigis GNU/Linuxi distributsioonides ja operatsioonisüsteemides. Unix. Selle käitumine meenutab cp-d ja scp-d, aga paljude detailsemate valikutega: õiguste säilitamine, kärbete jätkamine, tihendamine lennult, mustrite välistamine, edenemise kuvamine ja palju muud.
Põhisüntaks ja põhimõisted
Käsu üldine vorm on: rsync ALLIKAS SIHTKOHT. ALLIKAS ja SIHTKOHT võivad olla kohalikud teed või SSH kaudu kaug-lõpp-punktid, näiteks kasutaja@host:/tee.
Kaughosti kasutamisel on süntaks järgmine: rsync HOST:REMOTE_PATH KOHALIK_PATH (tõmba, too) või rsync KOHALIKU_TEE HOSTI:KAUG_TEE (tõukamine, saatmine). Mõlemal juhul allikas on esimene ja sihtkoht hiljem.
rsync
rsync HOST:ORIGEN_REMOTO DESTINO_LOCAL # PULL
rsync ORIGEN_LOCAL HOST:DESTINO_REMOTO # PUSH
On üks oluline nüanss: viimane takt algpunktis. ORIGIN/ (kaldkriipsuga) tähendab „ORIGIN sisu”; kui kaldkriipsu ära jätta, loob rsync SOURCE-kataloogi sihtkausta sisse.
Rsynci kontrollimine ja installimine
Esmalt kontrollige, kas see on saadaval koos rsync –versioon; näete numbrit ja protokolli. Kui teil seda pole, saate selle oma levitushalduri abil installida.
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install rsync
# Red Hat / CentOS / Fedora
sudo yum install rsync # o: sudo dnf install rsync
# macOS (Homebrew)
brew install rsync
Kui haldate serverit asukohast Windows, Saate ühenduse luua SSH kaudu, kasutades PuTTY-d ja hukka need käsud alates terminal kaugjuhtimispult.
Alustamine: kiire kohalik sünkroonimine
Valmista ette kaks testkausta ja mõned tühjad failid. Nii saad kontrollida erinevust kõige kopeerimise ja ainult muudatuste uuendamise vahel. tänu rsync algoritmile.
cd ~
mkdir dir1 dir2
# Crea 100 ficheros vacíos
bash -c 'touch dir1/file{1..100}'
# Sincroniza de dir1 a dir2 (recursivo)
rsync -r dir1/ dir2
# O en modo "archivo" (recomendado)
rsync -a dir1/ dir2
Valik -r kopeeri rekursiivselt; -a (arhiiv) sisaldab valikut -r ja säilitab ka õigused, omaniku, grupi, ajatemplid ja sümboolsed lingid.
Viimane takt alguses: detail, mis väldib üllatusi
See käitumine on võtmetähtsusega: dir1/ edastab sisu; dir1 kopeerib kataloogi hulgi sihtkohas. Testi seda riskivabalt kuiva katsega.
# Ensayo (no cambia nada) y verboso
rsync -anv dir1/ dir2 # contenido de dir1 hacia dir2
rsync -anv dir1 dir2 # crea dir2/dir1/...
Õrnade toimingute puhul harjuge lisa -n/–dry-run ja kontrolli väljundit enne tegelikku sooritamist. Väike harjumus, mis hoiab ära pettumuse.
Kaugsünkroniseerimine SSH-ga: push ja pull
Kui sul on SSH kaugühenduse kaudu arvutiga ühendatud ja rsync on mõlemale poolele installitud, Andmete saatmine või toomine on sama lihtne kui marsruut kasutaja@host abilVaikimisi kasutab rsync SSH-d "kaugkestana".
# PUSH: del local al remoto (transferimos el directorio completo)
rsync -a ~/dir1 usuario@servidor:/ruta/destino
# PULL: del remoto al local (traemos contenidos)
rsync -a usuario@servidor:/home/usuario/dir1 /ruta/local
# Especificar el puerto SSH y usar compresión y progreso
rsync -azP -e 'ssh -p 2222' origen/ usuario@servidor:/destino/
Valikud -z (mõistmine) ja -P (edasijõudmine + osalised vead) on aeglaste võrkude puhul jumala kingitus: Näete edenemisribasid ja saate jätkata kui ühendus katkeb.
Paroolivaba autentimine SSH-võtmetega
Sünkroniseerimise automatiseerimiseks on mugav kasutada võtmeid. Genereeri RSA/ed25519 paar, kopeeri avalik paar serverisse ja kasuta seda rsynciga parooli küsimise vältimiseks.
# En el cliente (usuario local)
ssh-keygen -t rsa -b 4096 -C "Acceso rsync" -f ~/.ssh/rsync_key -q -N ""
ssh-copy-id -i ~/.ssh/rsync_key.pub usuario@servidor
# Probar acceso por clave
ssh -i ~/.ssh/rsync_key usuario@servidor
# Usar la clave con rsync (dos formas equivalentes)
rsync -az -e 'ssh -i ~/.ssh/rsync_key' origen/ usuario@servidor:/destino/
rsync -az --rsh="ssh -i ~/.ssh/rsync_key" origen/ usuario@servidor:/destino/
Kui teil pole sihtkohas luba juur, saab Ignoreeri omanikku ja gruppi valikutega –no-o ja –no-g, mis väldib omistamisvigu mitme kasutajaga süsteemides.
Olulised valikud, mida te kogu aeg kasutate
Kõige levinumad kombinatsioonid -a (arhiiv), -v (paljusõnaline), -z (tihenda), -P (edasijõudmine/osaline) olenevalt juhtumist. Kirjutage need olulised asjad üles.
- -arekursiivne ja säilitab õigused, ajad, omaniku, grupi, lingid ja erisätted.
- -vinformatiivsem väljund; koos -h näete „inimloetavaid” suurusi.
- -z: tihendamine edastamise ajal (vältige, kui failid on juba tihendatud).
- -P: on samaväärne –edu + –osaline; ideaalne ebastabiilsete linkide jaoks.
Samuti väga kasulik: -u (värskendus, ei astu samme, kui sihtkoht on uuem), -n (kuivkäivitus) ja -e kaugkesta jaoks (nt SSH pordi või võtmega).
Edasiminek, tihendamine ja jätkamine ilma aja raiskamiseta
Et visualiseerida toimuvat ja mitte pärast lõikamist nullist alustada, -azP on tavaliselt võiduretseptNäete, kui palju on alles ja rsync salvestab jätkamiseks osalised tükid.
rsync -azP origen/ destino/
# Repetirlo cuando no cambie nada da una salida mínima: rsync detecta que todo está al día
Kui pärast datlite puudutamist puudutama või muudate mõnda faili, käivitate käsu uuesti, saadetakse ainult muudetud, mis kinnitab delta-ülekande efektiivsust.
Mustri järgi väljaarvamised ja kaasamised
Kui sa ei taha kõike kaasa võtta, siis kasuta –väljajätmine ja –kaasamine täpsustamiseksSaate välistada nime, tee või laienduse järgi või laadida loendi failist.
# Excluir un directorio, un fichero y rutas concretas
rsync -av --exclude 'cache/' --exclude 'secreto.doc' --exclude 'ruta/subdir' origen/ destino/
# Excluir desde archivo (uno por línea)
rsync -av --exclude-from 'lista_excluidos.txt' origen/ destino/
# Solo copiar .jpg en toda la jerarquía (incluye directorios, excluye el resto)
rsync -vrhz --include="*/" --include="*.jpg" --exclude="*" original/ duplicados/
Kui lähed välistustega liiale, saad alati Pöörake loogika ümber käsuga –include lubada seda, mida sa tegelikult tahad, ja blokeerida ülejäänu –välista «*».
Kontrollitud kustutamine sihtkohas (–kustutamine ja variandid)
„Peegeldusliku“ sünkroniseerimise jaoks aktiveerige –Kustuta ja failid, mis allikas enam ei eksisteeri, kaovad sihtkohast. Kasutage seda ettevaatlikult ja proovi alati – kuivkäivitus enne
# Sincronización espejo (borra en destino lo que ya no está en origen)
rsync -av --delete origen/ destino/
Kustutamispoliitikad: –kustuta enne (kustuta enne üleandmist) –kustutamise ajal (vastuvõtu ajal; tänapäevastes versioonides vaikimisi) ja –kustutamise viivitus (tuvastab puuduvad üksused ja kustutab need lõpus). –kustuta pärast See on olemas, kuid tavaliselt on see vähem efektiivne, välja arvatud väga spetsiifilistel juhtudel.
Suuruse ja ribalaiuse piirangud
Võrgu üleküllastumise või kaalu järgi filtreerimise vältimiseks kasutage –max-size ja –min-size kõrval –bwlimitKasulik hulgikoopiate või kindlate eeskirjadega varundamise jaoks.
# Solo archivos <= 100 MB y límite de 5 MB/s
rsync -avzh --max-size='100M' --bwlimit=5120 origen/ destino/
# No transferir nada por debajo de 10 KB
dsync -av --min-size=10k origen/ destino/
Kui teisaldate palju väikeseid faile, -W/–whole-file sunnib saatma kogu faili ja võib kiireneda, kui delta ei kompenseeri latentsust.
Probleemivabad varukoopiad (–backup ja –backup-dir)
Kui muretsed ülekirjutamise pärast, siis ühenda –varundus koos –backup-kataloog hoida eelmisi versioone varukoopiate kaustas. See on väga praktiline "kindlustus".
# Guarda versiones reemplazadas/eliminadas en /var/backups/rsync
rsync -a --delete --backup --backup-dir=/var/backups/rsync /ruta/origen/ /ruta/destino/
Seega salvestatakse kõik sihtkohas muudetud või kustutatud failid näidatud kataloogi, kiire pöörde hõlbustamine kui midagi ei lähe nii, nagu sa ootasid.
Automatiseerimine croniga (ilma viipade või mürata)
Perioodiliste sünkroonimiste käivitamiseks lisage cron-kirje. Kasutage SSH-võtmeid, vältige valikut „–progress” ja soovi korral tehke logi. auditi jaoks.
# Cada hora, con clave e ignorando propietario y grupo
0 * * * * rsync -arz --no-o --no-g --delete --rsh="ssh -i /home/u/.ssh/rsync_key" /home/u/backup/ u@servidor:"/home/u/backup" >> /var/log/rsync.log 2>&1
Vastassuunas sünkroonides vahetate allika ja sihtkoha. Logimine valikuga –log-file või ümbersuunamisega aitab teil üle vaadata, mis ja millal on üle kantud.
Edasijõudnud trikid ja päriselulised stsenaariumid
Lisaks klassikalistele on rsyncil ka vähemtuntud, aga väga kasulikke lippe: -c (kontrollsumma, ignoreerib kuupäevi/suurusi ja võrdleb räsi abil), –ainult suurus (ainult suurus) -I/–ignoreeri-kordi (kopeeri kõik), –eemalda lähtekoodifailid (teisalda kopeerimise asemel, ei kustuta katalooge).
# Solo actualizar si cambia el hash (más preciso, más CPU)
rsync -avuc origen/ destino/
# Mover ficheros (borra en origen los que se copien bien)
rsync -av --remove-source-files origen/ destino/
# Preservar enlaces, dueños y especiales (requiere permisos adecuados)
rsync -aLptgoD origen/ destino/
Kaugserverite abil saate sünkroonida kaks Linuxi masinat SSH kaudu iga tund croni ja võtmetega. Kui vajate „peaaegu reaalajas“ teenust, vaadake Lsyncd, deemon, mis reageerib failisüsteemi muudatustele ja kutsub automaatselt rsynci. Kui eelistate graafilist liidest, proovige Kohalike ja võrgukaustade sünkroonimine FreeFileSynciga.
Kompaktsed näited aitavad teil probleemidest välja tulla
Siin on mõned kiired retseptid, mida meeles pidada. Saate neid oma marsruutide ja kasutajate järgi kohandada Pole probleemi.
# Copiar localmente con progreso y tamaños legibles
rsync -avhP /carpeta1/ /carpeta2/
# Sincronizar dos hosts (pull) con progreso
rsync -avP root@X.Y.Z.W:/carpeta1/ /carpeta2/
# Solo archivos modificados (update) a un remoto
rsync -vzh -u posts/*.md blog@host:/ruta/posts/
# Ensayo general (no cambia nada) y listado detallado
rsync -avhni --itemize-changes origen/ destino/
Kui seisate silmitsi suurte konstruktsioonidega, ühendab välistused, piirangud ja edusammud omama täielikku kontrolli selle üle, mis liigub ja kuidas see toimub.
Rsynci valdamine on harjutamise küsimus: proovi käsku –dry-run, kasuta baasina -a, lisa võrgus -z/-P ja kontrolli käsku –delete käsuga headSSH-võtmete ja croni abil on teil automaatne, turvaline ja tõhus sünkroniseerimine nii lokaalselt kui ka serverite vahel.
Kirglik kirjanik baitide maailmast ja üldse tehnoloogiast. Mulle meeldib jagada oma teadmisi kirjutamise kaudu ja just seda ma selles ajaveebis teengi, näitan teile kõike kõige huvitavamat vidinate, tarkvara, riistvara, tehnoloogiliste suundumuste ja muu kohta. Minu eesmärk on aidata teil digimaailmas lihtsal ja meelelahutuslikul viisil navigeerida.