rsync er et alsidigt værktøj, der forenkler fi­lover­før­sel via net­værks­for­bin­del­ser og frem­skyn­der syn­kro­ni­se­rin­gen af lokale mapper. Den store flek­si­bi­li­tet gør syn­kro­ni­se­rings­værk­tø­jet til et frem­ra­gen­de valg til en lang række opgaver på filniveau.

Hvad er rsync?

rsync, en for­kor­tel­se for »remote syn­chro­ni­sa­tion«, er et flek­si­belt og net­værks­kom­pa­ti­belt syn­kro­ni­se­rings­værk­tøj til Linux. Dette open source-program kan bruges til at syn­kro­ni­se­re filer og mapper mellem lokale systemer eller på tværs af netværk. Værktøjet anvender en teknik til dif­fe­ren­ti­el da­ta­over­før­sel, hvor kun de dele af dataene, der rent faktisk er blevet ændret, overføres. Dette minimerer mængden af da­ta­ud­veks­ling og frem­skyn­der syn­kro­ni­se­rings­pro­ces­sen be­ty­de­ligt. Takket være en række for­skel­li­ge indstil­lin­ger giver rsync mulighed for præcis styring af syn­kro­ni­se­rings­ad­fær­den. Den fleksible syntaks gør både enkle lokale kopier og komplekse net­værks­syn­kro­ni­se­rin­ger mulige.

Hvad er syntaksen for rsync?

Kom­man­do­syn­tak­sen i rsync har en enkel struktur og ligner den i SSH, SCP og CP. Den grund­læg­gen­de struktur er som følger:

rsync [OPTION] source destination
bash

Den kildevej, som dataene skal syn­kro­ni­se­res fra, indtastes i source, mens desti­na­tions­vej­en angives i destination. rsync tilbyder en række indstil­lin­ger, som brugerne kan anvende til at tilpasse syn­kro­ni­se­rings­pro­ces­sen til deres behov. De mest anvendte indstil­lin­ger er:

  • -a (arkiver): Bevarer rekursive fil­ret­tig­he­der, tids­stemp­ler, grupper, ejere og særlige fil­e­gen­ska­ber
  • -v (de­tal­je­ret): Viser de­tal­je­re­de op­lys­nin­ger om syn­kro­ni­se­rings­pro­ces­sen
  • -r (rekursiv): Syn­kro­ni­se­rer mapper og deres indhold rekursivt
  • -u (update): Overfører kun filer, der er nyere end dem, der allerede findes i målmappen
  • -z (compress): Reducerer da­ta­tra­fik­ken over netværket
  • -n –itemize-changes: Viser en liste over de ændringer, der skal foretages
  • --delete: Sletter filer i målmappen, der ikke længere findes i kilden
  • --exclude: Udelukker bestemte filer eller mapper fra syn­kro­ni­se­rin­gen
  • --dry-run: Simulerer syn­kro­ni­se­rings­pro­ces­sen uden faktisk at overføre filer
  • --progress: Viser frem­skrid­tet i fi­lover­førs­len
  • --partial: Filer, der er blevet delvist overført, forbliver i målmappen, hvis over­førs­len afbrydes. Når over­førs­len gen­op­ta­ges, fort­sæt­tes filen fra den sidste tilstand

Eksempler på rsync-syntaks

Følgende eksempler på rsync-syntaks bør gøre det lettere at forstå, hvordan kom­man­do­en bruges. I det følgende ko­de­ek­sem­pel oprettes mappen dir1, der in­de­hol­der 100 tomme testfiler, samt en anden tom mappe, dir2:

$ cd ~
$ mkdir dir1
$ mkdir dir2
$ touch dir1/file{1..100}
bash

Indholdet i dir1 kan syn­kro­ni­se­res på samme system med dir2 ved hjælp af -r:

$ rsync -r dir1/ dir2
bash

Al­ter­na­tivt kan man bruge indstil­lin­gen -a, som syn­kro­ni­se­rer rekursivt og omfatter symbolske links, specielle en­heds­fi­ler, æn­drings­tids­punk­ter, grupper, ejere og til­la­del­ser:

$ rsync -a dir1/ dir2
bash

Bemærk: Skrå­stre­gen (/) i slut­nin­gen af kil­de­map­pen i en rsync-kommando er vigtig, da den angiver , at det er indholdet af mappen, der skal syn­kro­ni­se­res, og ikke selve mappen.

$ rsync -a dir1/ dir2
bash

Her er et eksempel på re­sul­ta­tet:

sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .
bash

Hvis kil­de­map­pen ikke slutter med en skråstreg, kopieres kil­de­map­pen til målmappen:

$ rsync -a dir1 dir2
bash

Her er re­sul­ta­tet:

sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .
bash

Ved at bruge skrå­stre­gen i slut­nin­gen af kil­de­map­pen sikrer man, at syn­kro­ni­se­rings­pro­ces­sen forløber som forventet, og at indholdet af kil­de­map­pen ender i den rigtige målmappe.

Sådan syn­kro­ni­se­rer du rsync med et fjern­sy­stem

Det er som regel ikke svært at syn­kro­ni­se­re et fjern­sy­stem med rsync, forudsat at du har SSH-adgang til fjer­n­com­pu­te­ren og de nød­ven­di­ge god­ken­del­ses­op­lys­nin­ger. Rsync bruger ofte SSH (Secure Shell) til sikker kom­mu­ni­ka­tion med fjern­sy­ste­mer. For at kunne bruge dette værktøj skal det være in­stal­le­ret på begge sider.

Hvis SSH-adgangen mellem de to computere er bekræftet, kan mappen dir1 syn­kro­ni­se­res på en fjer­n­com­pu­ter. I dette tilfælde skal selve mappen overføres, og derfor er den af­slut­ten­de skråstreg udeladt i følgende kommando:

$ rsync -a ~/dir1 username@remote_host:destination_directory
bash

Hvis en mappe flyttes fra et lokalt system til et fjern­sy­stem, kaldes dette en push-operation. Når en fjer­n­map­pe derimod syn­kro­ni­se­res med et lokalt system, kaldes dette en pull-operation. Syntaksen herfor er som følger:

$ rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
bash

Hvilke andre mu­lig­he­der findes der i rsync?

rsyncs stan­dar­dad­færd kan tilpasses yder­li­ge­re ved hjælp af ne­den­stå­en­de indstil­lin­ger.

Over­før­sel af ikke-kom­pri­me­re­de filer med rsync

Net­værks­be­last­nin­gen ved over­før­sel af ikke-kom­pri­me­re­de filer kan reduceres ved hjælp af indstil­ling -z:

$ rsync -az source destination
bash

Visning af frem­skridt og gen­op­ta­gel­se af afbrudte trans­mis­sio­ner

Med -P kan du kombinere indstil­lin­ger­ne --progress og --partial. Det giver dig et overblik over, hvor langt over­førs­ler­ne er nået, og giver dig samtidig mulighed for at genoptage afbrudte over­førs­ler:

$ rsync -azP source destination
bash

Her er re­sul­ta­tet:

sending incremental file list
./
file1
    0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
    0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
    0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
    0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=96/101)
. . .
bash

Udfør kom­man­do­en igen for at få et kortere output. Dette gør det muligt for rsync at afgøre, om der er foretaget ændringer, ud fra æn­drings­tids­punk­ter­ne.

$ rsync -azP source destination
bash

Her er re­sul­ta­tet:

sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00
bash

Hold mapper syn­kro­ni­se­ret med rsync

For at sikre, at to mapper rent faktisk holdes syn­kro­ni­se­ret, er det nød­ven­digt at slette filer, der er blevet fjernet fra kil­de­map­pen, i målmappen. Men rsync sletter ikke au­to­ma­tisk filer fra målmappen. Dette kan ændres med pa­ra­me­te­ren --delete. Det er dog vigtigt at bruge denne parameter med for­sig­tig­hed, da den sletter filer i målmappen, som ikke længere findes i kil­de­map­pen.

Inden du bruger denne indstil­ling, bør du benytte indstil­ling --dry-run. Dette giver dig mulighed for at simulere syn­kro­ni­se­rings­pro­ces­sen uden at slette nogen faktiske filer. På den måde kan du sikre dig, at kun de ønskede ændringer foretages, uden at du ved et uheld mister vigtige data:

$ rsync -a --delete source destination
bash

Udelad filer og mapper fra syn­kro­ni­se­rin­gen

I rsync kan du bruge pa­ra­me­te­ren --exclude til at udelukke bestemte filer og mapper fra syn­kro­ni­se­rin­gen. Dette er nyttigt, hvis du f.eks. ikke ønsker at syn­kro­ni­se­re mid­ler­ti­di­ge filer, logfiler eller andet indhold.

$ rsync -a --exclude=pattern_to_exclude source destination
bash

Hvis du har angivet et mønster til ude­luk­kel­se af filer, kan du bruge indstil­lin­gen --include= til at til­si­de­sæt­te denne ude­luk­kel­se for bestemte filer, der matcher et andet mønster.

$ rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination
bash

Gem sik­ker­heds­ko­pi­er med rsync

Med indstil­ling --backup kan du gemme sik­ker­heds­ko­pi­er af vigtige filer. Den kan bruges sammen med indstil­ling --backup-dir til at angive det bibliotek, hvor sik­ker­heds­ko­pi­er­ne skal gemmes:

$ rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destination
bash

Du kan finde en de­tal­je­ret oversigt over de for­skel­li­ge sik­ker­heds­ko­pi­e­rings­sce­na­ri­er i vores artikel om sik­ker­heds­ko­pi­e­ring af servere med rsync.

Gå til ho­ved­me­nu­en