# Kuidas optimeerida andmete sünkroniseerimist rsync-iga

rsync on mitmekülgne tööriist, mis lihtsustab failide edastamist võrguühenduste kaudu ja kiirendab kohalike kataloogide sünkroniseerimist. Suur paindlikkus teeb sellest sünkroniseerimistööriistast suurepärase valiku mitmesuguste failitasandi toimingute jaoks.

## Mis on rsync?

rsync, lühend sõnadest „remote synchronisation“, on Linuxi keskkonnas kasutatav paindlik ja võrguga ühilduv **sünkroniseerimistööriist**. Seda avatud lähtekoodiga programmi saab kasutada failide ja kataloogide sünkroniseerimiseks nii kohalike süsteemide vahel kui ka võrkude kaudu. Tööriist kasutab **diferentsiaalset andmeedastusmeetodit**, mille puhul edastatakse ainult need andmeosad, mis on tegelikult muutunud. See vähendab andmevahetuse mahtu ja kiirendab sünkroniseerimisprotsessi märkimisväärselt. Tänu mitmesugustele valikutele võimaldab rsync **sünkroniseerimise käitumist täpselt juhtida**. Paindlik süntaks võimaldab nii lihtsaid kohalikke koopiaid kui ka keerukaid võrgusünkroniseerimisi.

## Milline on rsync-i süntaks?

Rsync-i käskude süntaks on lihtsa ülesehitusega ja sarnaneb SSH, SCP ja CP süntaksiga. Põhistruktuur on järgmine:

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

Andmete sünkroniseerimise lähtekataloog sisestatakse väljale `source`, sihtkataloog aga väljale `destination`. rsync pakub **mitmesuguseid valikuid**, mille abil kasutajad saavad sünkroniseerimisprotsessi oma vajadustele kohandada. Kõige sagedamini kasutatavad valikud on:

- `-a` (arhiivid): Säilitab rekursiivsed failiõigused, ajamärgid, rühmad, omanikud ja failide erivõimalused
- `-v` (verbose): kuvab üksikasjalikku teavet sünkroniseerimisprotsessi kohta
- `-r` (rekursiivne): Sünkroniseerib katalooge ja nende sisu rekursiivselt
- `-u` (update): edastab ainult need failid, mis on uuemad kui sihtkataloogis juba olevad
- `-z` (compress): vähendab andmevoogu võrgus
- `-n` –itemize-changes: kuvab loendi tehtavatest muudatustest
- `--delete`: Kustutab sihtkataloogist failid, mida allikas enam ei sisalda
- `--exclude`: Jätab sünkroniseerimisest välja teatud failid või kataloogid
- `--dry-run`: Simuleerib sünkroniseerimisprotsessi ilma faile tegelikult üle kandmata
- `--progress`: Näitab failide ülekande edenemist
- `--partial`: Osaliselt üle kantud failid jäävad sihtkataloogi, kui ülekanne katkeb. Kui ülekanne jätkub, jätkatakse faili viimase seisuga

## Näited rsync-i süntaksist

Järgmised rsync-süntaksi näited peaksid aitama paremini mõista, kuidas seda käsku kasutatakse. Järgmine koodinäide loob kataloogi `dir1`, mis sisaldab 100 tühja testfaili, ning teise tühja kataloogi `dir2`:

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

`dir1` sisu saab samas süsteemis `dir2` sünkroniseerida, kasutades `-r` valikut:

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

Teise võimalusena võib kasutada valikut `-a`, mis sünkroniseerib rekursiivselt ning hõlmab sümbolilinke, eriseadmefaile, muudatusaegu, gruppe, omanikke ja õigusi:

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

**Märkus**: Kaldkriips (/) rsync-käsu allika kataloogi lõpus on oluline, sest see näitab **,** et **sünkroniseeritakse kataloogi sisu, mitte kataloog ise**.

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

Siin on väljundi näide:

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

Kui allikakataloogis puudub lõpus kaldkriips, kopeeritakse allikakataloog sihtkataloogi:

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

Siin on tulemus:

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

Kaldkriipsu kasutamine allikakataloogi lõpus tagab, et sünkroniseerimisprotsess kulgeb ootuspäraselt ja et allikakataloogi sisu jõuab õigesse sihtkataloogi.

## Kuidas sünkroniseerida rsync kaugjuhtimissüsteemiga

Kaugseadme sünkroniseerimine rsync-iga ei ole tavaliselt keeruline, eeldusel, et sul on **SSH-juurdepääs kaugarvutile** ja vajalikud autentimisandmed. Rsync kasutab kaugseadmetega turvaliseks suhtlemiseks sageli SSH-d (Secure Shell). Selle tööriista kasutamiseks peab see olema mõlemal poolel installitud.

Kui SSH-ühendus kahe arvuti vahel on kinnitatud, saab kaugarvutis sünkroniseerida kausta `dir1`. Sel juhul tuleb üle kanda tegelik kataloog, mistõttu on järgnevas käsus jäetud ära lõpus olev kaldkriips:

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

Kui kataloog viiakse kohalikust süsteemist üle kaugjuhtimissüsteemi, nimetatakse seda **push-operatsiooniks**. Seevastu kui kaugjuhtimissüsteemi kataloog sünkroniseeritakse kohaliku süsteemiga, nimetatakse seda **pull-operatsiooniks**. Selle süntaks on järgmine:

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

## Millised muud võimalused on rsync-is veel olemas?

Rsync’i vaikimisi käitumist saab allpool toodud valikute abil veelgi kohandada.

### Tihendamata failide edastamine rsync-iga

Tavapäraste failide edastamisel saab võrgu koormust vähendada, kasutades valikut `-z`:

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

### Edusammude kuvamine ja katkestatud edastuste jätkamine

Valikuga `-P` saate kombineerida valikuid `--progress` ja `--partial`. See annab teile ülevaate edastuste kulgemisest ja võimaldab samal ajal katkestatud edastusi jätkata:

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

Siin on tulemus:

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

Käivita käsk uuesti, et saada lühem väljund. See võimaldab rsync-il muudatuste aja põhjal kindlaks teha, kas muudatusi on tehtud.

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

Siin on tulemus:

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

### Hoia kataloogid rsynciga sünkroonis

Selleks et tagada kahe kataloogi tegelik sünkroniseeritus, tuleb sihtkataloogist **kustutada** need failid, mis on allikakataloogist eemaldatud. Kuid rsync ei kustuta faile sihtkataloogist automaatselt. Seda saab muuta parameetriga `--delete`. Siiski tuleb seda parameetrit kasutada ettevaatlikult, kuna see kustutab sihtkataloogist failid, mida allikakataloogis enam ei ole.

Enne selle valiku kasutamist peaksite kasutama valikut `--dry-run`. See võimaldab teil **sünkroniseerimisprotsessi simuleerida,** ilma et tegelikke faile kustutataks. Nii saate tagada, et tehakse ainult soovitud muudatused, ilma et kaotaksite kogemata olulisi andmeid:

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

### Jäta failid ja kataloogid sünkroniseerimisest välja

rsync-is saab kasutada valikut `--exclude`, et **jätta** teatud failid ja kataloogid sünkroniseerimisest **välja**. See on kasulik näiteks juhul, kui ei soovita sünkroniseerida ajutisi faile, logifaile või muud sisu.

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

Kui olete määranud failide välistamise mustri, saate valikuga `--include=` selle välistuse tühistada teatud failide puhul, mis vastavad teisele mustrile.

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

### Salvesta varukoopiaid rsync-iga

Valik `--backup` võimaldab teil salvestada oluliste failide varukoopiaid. Seda saab kasutada koos valikuga `--backup-dir`, et määrata kataloog, kuhu varukoopiad tuleks salvestada:

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

Ülevaate erinevatest varundamisvõimalustest leiate meie artiklist, mis käsitleb [serverite varundamist rsync-i abil](https://www.ionos.com/et-ee/digitalguide/server/toeoeriistad/serveri-varukoopiate-seadistamine-rsync-i-abil/).


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/server/toeoeriistad/rsync-1/](https://www.ionos.com/et-ee/digitalguide/server/toeoeriistad/rsync-1/) for AI/LLM consumption.