Rysnc-veiledning og 11 eksempler for å bruke den effektivt

Rsync er et gratis-å-bruke kommandolinjeverktøy som lar deg synkronisere filer lokalt og eksternt. Med den kan du overføre filer og kataloger.

Dette gjør det veldig nyttig for å migrere data, utføre sikkerhetskopier og speiling, noe som gjør det flott for webmastere og administratorer for gjentakende dataoverføringsoppgaver.

Denne artikkelen vil lære oss hvordan Rysnc fungerer og gi noen nyttige eksempler.

Hvordan fungerer Rsync?

Rsync er et kommandolinjeverktøy for ekstern synkronisering for Unix-lignende systemer. Det gir brukeren muligheten til å overføre/synkronisere filer mellom maskiner eller to verter sømløst.

Under panseret bruker rsync delta-overføringsalgoritmen. Denne algoritmen innebærer å kopiere forskjeller mellom de to filene på tvers av to verter (kilde og destinasjon). Kilden og destinasjonen kan være lokal eller ekstern. Kommandoen rsync kan utføre kopierings-/synkroniseringsdataoppgaver på to måter. Disse er:

  • Bruk ssh, rsh for å kopiere/synkronisere mellom to verter.
  • Bruk TCP rsync daemon for kopiering/synkronisering.

Siden den er designet for å fungere i Unix-lignende systemer, fungerer den også i Linux.

Trinn-for-trinn-prosessen rsync bruker som følger:

  • Rsync bruker SSH for å koble til den eksterne verten og ber om et passord.
  • Når den er koblet til, kommuniserer den eksterne vertens rsync med kilden.
  • Disse programmene vil deretter bestemme filene og katalogene som må synkroniseres. Den bruker en delta-overføringsalgoritme for å sjekke forskjellen mellom filene.

Hvis rsync-kommandoen ikke finner en fil på fjernkontrollen, men ikke på verten, vil den kopiere og overføre den til vertssystemet. På samme måte, for allerede eksisterende filer (både på vert og ekstern), vil den kopiere forskjellen mellom dem (dvs. endrede deler). Til slutt vil den ignorere eksisterende filer på begge systemene uten endringer.

Kommandoen rsync oppnår inkrementelle oppdateringer ved å lagre forskjellen i en midlertidig fil før den skyves til målet.

Før du begynner:

  • Du må ha root- eller sudo-privilegier
  • Ha tilgang til terminalen/kommandolinjen
  • SSH-tilgang for sikker kjøring av rsync-kommandoer
  • Du trenger også to maskiner for å lage rsync.

For opplæringen skal vi bruke Linux Mint 21.1 Vera. Du kan enkelt følge veiledningen uten problemer ved å bruke noen annen Linux-distro.

Hvorfor bruke rsync Over Scp?

Scp (sikker kopi) er en populær kommandolinjeprotokoll som lar brukere kopiere filer. Den følger en lineær tilnærming til kopiering. Dette betyr at den ganske enkelt kopierer filene fra kilde til destinasjon. For å gjøre det sikkert bruker den SSH.

scp-kommandosyntaksen er som nedenfor:

scp option SOURCE DESTINATION

Men spørsmålet gjenstår, hvorfor bruke rsync over scp?

Vel, det er flere fordeler ved å bruke rsync. Disse fordelene inkluderer:

  • Raskere utførelse: Rsync er raskere enn scp fordi den bruker en ekstern oppdateringsprotokoll. Dette lar den overføre bare forskjeller i stedet for hele filen. Så hvis du setter opp en vanlig synkronisering over tid, trenger du bare å gjøre en fullstendig kopi første gang. Fra neste gang kopierer den kun de oppdaterte delene ved hjelp av delta-overføringsalgoritmen.
  • Mindre båndbreddeforbruk: Siden rsync ikke trenger å kopiere hele filen på nytt, fører det til mindre båndbreddeforbruk. Dessuten bruker den også komprimerings-/dekompresjonsalgoritmer for å minimere filstørrelsen under overføring.
  • Flere kommandolinjealternativer: Rsync slår også scp i antall kommandolinjealternativer. Dette betyr at du kan finjustere rsync mer enn scp.

Avslutningsvis er rsync et utmerket inkrementelt synkroniseringsverktøy. scp-verktøyet er også nyttig for sikker overføring/synkronisering av filer. I et virkelighetsscenario er scp egnet for daglige oppgaver hvis du leter etter en mer enkel tilnærming. For tilbakevendende oppgaver, bruk imidlertid rsync.

  Hvordan bli en Google Ads-spesialist: 9 nettkurs

Rsync kommandosyntaks

rsync-kommandoen er som nedenfor:

Her er begrepene definert nedenfor:

  • OPTION – Dette er rsync-alternativene
  • SOURCE – Kildekatalog
  • DEST – Destinasjonskatalog
  • BRUKER – Eksternt brukernavn
  • HOST – Eksternt vertsnavn eller IP-adresse

Alternativene er parametere som tilbyr ekstra funksjonalitet til kommandoen. Du kan for eksempel synkronisere data rekursivt med alternativet -r. Alternativet -r synkroniserer imidlertid ikke eierskap for grupper og brukere, tidsstempler, tillatelser eller symbolske lenker. I stedet kan du bruke alternativet -a, som kjører kommandoen i arkivmodus, og sikrer at alle filens eierskap, tillatelser og symbolske lenker beholdes når du kopierer.

Andre rsync-alternativer inkluderer:

  • -z: komprimer data for å spare plass
  • -h: gir menneskelesbare formatutdata
  • -b: utfører sikkerhetskopiering under datasynkroniseringsprosessen
  • -e: bruk SSH-protokoll for eksterne dataoverføringer
  • -fremdrift: Vis fremdriften for datasynkronisering
  • -v: spør rsync om å vise detaljert utgang
  • –n: utfør en tørrkjøring for å teste ut innstillinger og oppsett for datasynkronisering
  • -q: undertrykk rsync kommandoutgang og alternativer

Installerer rsync

De fleste Unix- og Linux-systemer leveres med rsync installert. Hvis systemet ditt ikke har rsync, kan du installere det ved å bruke følgende kommando(er).

For Debian/Ubuntu og Mint

sudo apt-get install rsync

For Arch Linux

pacman -S rsync

På Gentoo

emerge sys-apps/rsync

På CentOS/Fedora/REHL

sudo yum install rsync

På openSUSE

sudo zypper install rsync

Siden vi har Linux Mint, kom rsync forhåndsinstallert. Så du kan kjøre rsync-kommandoen i terminalen for å se om den er installert. Den vil forklare dens evner, alternativer og annen viktig informasjon hvis den er til stede.

nitt ~
$ rsync
rsync  version 3.2.3  protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
    batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
    symtimes, prealloc, stop-at, no crtimes
Optimizations:
    SIMD, no asm, openssl-crypto
Checksum list:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
    zstd lz4 zlibx zlib none

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.

La oss nå se rsync i aksjon med forskjellige brukstilfeller.

For opplæringen skal vi lage to kataloger.

  • kildekatalog
  • dest-katalog

For det må du skrive inn følgende kommandoer.

mkdir source-directory
mkdir dest-directory

Vi må også generere filer for å få rsync til å fungere. Så la oss lage noen testfiler med kommandoen nedenfor.

touch source-directory/file{1..100}

Dette lager 100 tomme filer i kildekatalogen. Du kan bekrefte det ved å skrive inn kommandoen nedenfor.

ls source-directory
Output:
nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ touch source-directory/file{1..100}
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Merk: Vi har holdt dest-katalogen tom.

Kopier kataloger lokalt rekursivt

Selv om rsync primært tar sikte på å kopiere filer mellom en lokal og ekstern server, er det like nyttig for å kopiere filer lokalt.

  Topp 10 eSignatur-løsninger for personlige til forretningsdokumenter

I dette tilfellet bruker vi følgende rsync-syntaks.

rsync-alternativ KILDEDESTINASJON

Kopier filene i kildekatalogen vår til målkatalogen ved å kjøre følgende kommando.

rsync -r source-directory/ dest-directory

Her kopierer kommandoen «rekursivt» filene fra kildekatalogen til målkatalogen.

nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ ls dest-directory
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99
nitt rsync-tutorial
$ rsync -r source-directory/ dest-directory
nitt rsync-tutorial
$ ls dest-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Dette kopierer hver enkelt fil i kildekatalogen til dest-katalogen.

Kopier enkeltfil lokalt

Nå som vi har lært hvordan du synkroniserer to kataloger, lærer vi hvordan du kopierer en enkelt fil.

For dette formålet vil vi redigere den tomme filen file1 i kildekatalogen og deretter synkronisere den med den samme filen som finnes i dest-katalogen.

For å redigere en fil, skriv inn følgende kommando.

nano source-directory/file1

Kopier og lim inn følgende tekst i nano-editoren.

We're updating file1 in the source-directory.
Once we update, we'll push the new update to the dest-directory.
rsync doesn't need to re-copy the file using the delta-transfer algorithm.
This algorithm checks the differences and then updates destination files
accordingly.
So, once you save file1 in the source-directory, open file1 in
the dest-directory. It'll be empty.
However, if we check it after running rsync, you'll see that file1 in dest-directory
is updated.

Legge til innhold i en fil

Nå, lukk og lagre filen.

La oss nå kopiere filen med rsync.

sudo rsync -v --existing source-directory/file1 /dest-directory
#Output
nitt rsync-tutorial
$ sudo rsync -v --existing source-directory/file1 dest-directory
file1

sent 557 bytes  received 35 bytes  1,184.00 bytes/sec
total size is 474  speedup is 0.80

nitt rsync-tutorial
$ 

Som du kanskje har lagt merke til, brukte vi –eksisterende alternativ. Dette oppdaterer de eksisterende filene. Hvis du kjører kommandoen uten –eksisterende, vil den ikke oppdateres, selv om den kjører vellykket.

Hvis enkeltfilen du kopierer ikke finnes i målmappen, må du kjøre følgende kommando.

rsync -v source-directory/newfile dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile dest-directory
newfile

sent 82 bytes  received 35 bytes  234.00 bytes/sec
total size is 0  speedup is 0.00

Kopiering av flere filer

Hvis du har tenkt å kopiere flere filer, må du nevne begge filenes kildestier, etterfulgt av målkatalogen.

For dette formålet vil vi opprette to nye filer: newfile2 og newfile3, i kildekatalogen. Kjør følgende kommando for å gjøre det.

touch source-directory/newfile{2..3}

Bruk nå følgende kommando for å synkronisere flere filer.

rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
newfile2
newfile3

sent 135 bytes  received 54 bytes  378.00 bytes/sec
total size is 0  speedup is 0.00
nitt rsync-tutorial
$ 

Kopier fil eller katalog fra lokal til ekstern

rsync-syntaksen for lokal til ekstern overføring er som nedenfor.

rsync option SOURCE [email protected]:DEST

Som du kan se, må du vite IP-adressen til den eksterne maskinen for å få dette til å fungere. Du må også legge til IP-adressen etter kildefilen.

rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Før du starter overføringen, vil den be om passordet. Skriv den inn for å fortsette. Dessuten, hvis brukeren er annerledes i den eksterne maskinen, må du nevne den før IP-adressen etterfulgt av @.

rsync -av /Projects/rsync-tutorial/source-directory [email protected]: /Projects/rsync-tutorial/dest-directory

Hvis du har tenkt å kopiere flere filer eller kataloger, må du liste filene eller katalogbanene. Syntaksen for det er nedenfor.

rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Ekstern overføringsspesifikke protokoller

Rsync lar deg spesifisere spesifikke filoverføringsprotokoller. For å gjøre det, må du bruke alternativet -e, etterfulgt av protokollen.

  Slik fikser du zoomfeilkode 5003

For eksempel, hvis du vil bruke ssh-protokollen, må du legge til -e ssh til rsync-kommandoen.

rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Kopiere en fil eller katalog fra ekstern til lokal

rsync-syntaksen for lokal til ekstern overføring er som nedenfor.

sync option [email protected]:SRC DEST

Dette fungerer som en pull-forespørsel. Så for å få de nødvendige filene/katalogen fra en ekstern server til din lokale maskin, må du kjøre følgende kommando.

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Kommandoen trekker filene i den eksterne maskinens målkatalog til den lokale maskinens kildekatalog.

På samme måte kan du trekke en bestemt fil ved å nevne den gjennom hele banen.

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory

For å kopiere flere filer eller kataloger fra lokal til ekstern, må du spesifisere banen innenfor de krøllede parentesene (atskilt med kommaer) etter serverens IP-adresse.

rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory

På samme måte kan du også nevne filer.

Vis direkte fremgang under overføring

Det er en god idé å se fremdriften for større sikkerhetskopiering av data. For det må du bruke –progress-flagget. Legg den til rsync-kommandoen, og du kan se overføringshastigheten, gjenværende tid og mengden data som overføres.

rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Slett kildefiler når overføringen er fullført

Du kan bruke flagget -remove-source-files for å fjerne kildefiler etter fullført overføring. Dette kan hjelpe deg i mange scenarier, spesielt når det gjelder å sikre filene dine uten å etterlate spor eller bare bruke dem for å frigjøre plass.

rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Rsync tørrkjøring

Rysnc lar deg også evaluere før du kjører et faktisk løp. Tørrløpet lar deg se om du gjør det rette. Tross alt vil du ikke oppdatere filer ved en feil eller til og med slette dem.

Du må bruke -tørrkjøringsalternativet for å gjøre en tørrkjøring. Legg den til kommandoen, etterfulgt av kilden og destinasjonen.

sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial
$ sudo rsync -v --dry-run source-directory/file1 dest-directory
file1

sent 43 bytes  received 19 bytes  124.00 bytes/sec
total size is 474  speedup is 7.65 (DRY RUN)
nitt rsync-tutorial

Utgangen er lik hvordan vi kjørte den før. Du vil imidlertid legge merke til en omtale av (DRY RUN) på slutten av utgangen.

Angi minimum og maksimum filstørrelse

Rysnc lar deg også angi minimum eller maksimum filstørrelse under overføring.

Så hvis du vil overføre med en minimumsstørrelse på 15KB, må du bruke –min-size=15K.

rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Kommandoen vil bare kopiere filer med en minimum filstørrelse på 15KB. Hvis filstørrelsen er under, vil den ignorere den.

På samme måte kan du bruke flagget –max-size for å angi maksimal filstørrelse.

rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Her vil rsync ignorere filer over 450K-størrelsen.

Angi båndbreddegrense

Hvis du gjør andre båndbreddekrevende oppgaver, kan du angi rysnc for å angi båndbreddegrensen for overføringen. For å gjøre det, bruk –bwlimit=KB/s.

rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Her setter vi båndbredden til 100Kb/s under overføringen.

Siste ord

Dette fører oss til slutten av vår rsync-kommandoguide. Vi lærte å bruke rysnc og dekket mange kommandoer effektivt.

Rysnc tilbyr imidlertid mye mer enn det vi dekket. Det er derfor du kanskje også vil gå gjennom rsync-man-siden, der alle aspekter av rsync er dekket.

Deretter kan du sjekke ut kommandolinje-jukseark for Windows, Linux og macOS.