# Sådan optimeres datasynkronisering med rsync

rsync er et alsidigt værktøj, der forenkler filoverførsel via netværksforbindelser og fremskynder synkroniseringen af lokale mapper. Den store fleksibilitet gør synkroniseringsværktøjet til et fremragende valg til en lang række opgaver på filniveau.

## Hvad er rsync?

rsync, en forkortelse for »remote synchronisation«, er et fleksibelt og netværkskompatibelt **synkroniseringsværktøj** til Linux. Dette open source-program kan bruges til at synkronisere filer og mapper mellem lokale systemer eller på tværs af netværk. Værktøjet anvender en **teknik til differentiel dataoverførsel**, hvor kun de dele af dataene, der rent faktisk er blevet ændret, overføres. Dette minimerer mængden af dataudveksling og fremskynder synkroniseringsprocessen betydeligt. Takket være en række forskellige indstillinger giver rsync mulighed for **præcis styring af synkroniseringsadfærden**. Den fleksible syntaks gør både enkle lokale kopier og komplekse netværkssynkroniseringer mulige.

## Hvad er syntaksen for rsync?

Kommandosyntaksen i rsync har en enkel struktur og ligner den i SSH, SCP og CP. Den grundlæggende struktur er som følger:

```bash
rsync [OPTION] source destination
```

Den kildevej, som dataene skal synkroniseres fra, indtastes i `source`, mens destinationsvejen angives i `destination`. rsync tilbyder en **række indstillinger,** som brugerne kan anvende til at tilpasse synkroniseringsprocessen til deres behov. De mest anvendte indstillinger er:

- `-a` (arkiver): Bevarer rekursive filrettigheder, tidsstempler, grupper, ejere og særlige filegenskaber
- `-v` (detaljeret): Viser detaljerede oplysninger om synkroniseringsprocessen
- `-r` (rekursiv): Synkroniserer 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 datatrafikken 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 synkroniseringen
- `--dry-run`: Simulerer synkroniseringsprocessen uden faktisk at overføre filer
- `--progress`: Viser fremskridtet i filoverførslen
- `--partial`: Filer, der er blevet delvist overført, forbliver i målmappen, hvis overførslen afbrydes. Når overførslen genoptages, fortsættes filen fra den sidste tilstand

## Eksempler på rsync-syntaks

Følgende eksempler på rsync-syntaks bør gøre det lettere at forstå, hvordan kommandoen bruges. I det følgende kodeeksempel oprettes mappen `dir1`, der indeholder 100 tomme testfiler, samt en anden tom mappe, `dir2`:

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

Indholdet i `dir1` kan synkroniseres på samme system med `dir2` ved hjælp af `-r`:

```bash
$ rsync -r dir1/ dir2
```

Alternativt kan man bruge indstillingen `-a`, som synkroniserer rekursivt og omfatter symbolske links, specielle enhedsfiler, ændringstidspunkter, grupper, ejere og tilladelser:

```bash
$ rsync -a dir1/ dir2
```

**Bemærk**: Skråstregen (/) i slutningen af kildemappen i en rsync-kommando er vigtig, da den angiver **,** at det er **indholdet af mappen, der skal synkroniseres, og ikke selve mappen**.

```bash
$ rsync -a dir1/ dir2
```

Her er et eksempel på resultatet:

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

Hvis kildemappen ikke slutter med en skråstreg, kopieres kildemappen til målmappen:

```bash
$ rsync -a dir1 dir2
```

Her er resultatet:

```bash
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
. . .
```

Ved at bruge skråstregen i slutningen af kildemappen sikrer man, at synkroniseringsprocessen forløber som forventet, og at indholdet af kildemappen ender i den rigtige målmappe.

## Sådan synkroniserer du rsync med et fjernsystem

Det er som regel ikke svært at synkronisere et fjernsystem med rsync, forudsat at du har **SSH-adgang til fjerncomputeren** og de nødvendige godkendelsesoplysninger. Rsync bruger ofte SSH (Secure Shell) til sikker kommunikation med fjernsystemer. For at kunne bruge dette værktøj skal det være installeret på begge sider.

Hvis SSH-adgangen mellem de to computere er bekræftet, kan mappen `dir1` synkroniseres på en fjerncomputer. I dette tilfælde skal selve mappen overføres, og derfor er den afsluttende skråstreg udeladt i følgende kommando:

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

Hvis en mappe flyttes fra et lokalt system til et fjernsystem, kaldes dette en **push-operation**. Når en fjernmappe derimod synkroniseres med et lokalt system, kaldes dette en **pull-operation**. Syntaksen herfor er som følger:

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

## Hvilke andre muligheder findes der i rsync?

rsyncs standardadfærd kan tilpasses yderligere ved hjælp af nedenstående indstillinger.

### Overførsel af ikke-komprimerede filer med rsync

Netværksbelastningen ved overførsel af ikke-komprimerede filer kan reduceres ved hjælp af indstilling `-z`:

```bash
$ rsync -az source destination
```

### Visning af fremskridt og genoptagelse af afbrudte transmissioner

Med `-P` kan du kombinere indstillingerne `--progress` og `--partial`. Det giver dig et overblik over, hvor langt overførslerne er nået, og giver dig samtidig mulighed for at genoptage afbrudte overførsler:

```bash
$ rsync -azP source destination
```

Her er resultatet:

```bash
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)
. . .
```

Udfør kommandoen igen for at få et kortere output. Dette gør det muligt for rsync at afgøre, om der er foretaget ændringer, ud fra ændringstidspunkterne.

```bash
$ rsync -azP source destination
```

Her er resultatet:

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

### Hold mapper synkroniseret med rsync

For at sikre, at to mapper rent faktisk holdes synkroniseret, er det nødvendigt at **slette** filer, der er blevet fjernet fra kildemappen, i målmappen. Men rsync sletter ikke automatisk filer fra målmappen. Dette kan ændres med parameteren `--delete`. Det er dog vigtigt at bruge denne parameter med forsigtighed, da den sletter filer i målmappen, som ikke længere findes i kildemappen.

Inden du bruger denne indstilling, bør du benytte indstilling `--dry-run`. Dette giver dig mulighed for **at simulere synkroniseringsprocessen** 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:

```bash
$ rsync -a --delete source destination
```

### Udelad filer og mapper fra synkroniseringen

I rsync kan du bruge parameteren `--exclude` til **at udelukke** bestemte filer og mapper fra synkroniseringen. Dette er nyttigt, hvis du f.eks. ikke ønsker at synkronisere midlertidige filer, logfiler eller andet indhold.

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

Hvis du har angivet et mønster til udelukkelse af filer, kan du bruge indstillingen `--include=` til at tilsidesætte denne udelukkelse for bestemte filer, der matcher et andet mønster.

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

### Gem sikkerhedskopier med rsync

Med indstilling `--backup` kan du gemme sikkerhedskopier af vigtige filer. Den kan bruges sammen med indstilling `--backup-dir` til at angive det bibliotek, hvor sikkerhedskopierne skal gemmes:

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

Du kan finde en detaljeret oversigt over de forskellige sikkerhedskopieringsscenarier i vores artikel om [sikkerhedskopiering af servere med rsync](https://www.ionos.com/da-dk/digitalguide/server/vaerktoejer/opsaetning-af-serverbackups-med-rsync/).


This is a markdown version of: [https://www.ionos.com/da-dk/digitalguide/server/vaerktoejer/rsync/](https://www.ionos.com/da-dk/digitalguide/server/vaerktoejer/rsync/) for AI/LLM consumption.