# Computersystemen/Bestandsbeheer/Synchronisatie

Bestandssynchronisatie is een proces in de informatica waarbij twee bestanden aan elkaar gelijkgesteld worden. Men gaat aan de hand van bepaalde regels automatisch bestanden laten synchroniseren zodat deze op twee of meerdere plaatsen hetzelfde zijn.
Er bestaat heel wat software om te synchroniseren. Voor de verdere uitleg wordt gekozen voor DirSync Pro, een crossplatform programma, geschreven in Java. De algemene uitleg blijft echter ook van toepassing op andere synchronisatieprogramma's.

## Soorten
### Echo

Nieuwe en gewijzigde bestanden worden van de bronmap naar de doelmap gekopieerd. Hernoemde en verwijderde bestanden in de bronmap worden in doelmap ook hernoemd of verwijderd.
Dit wordt in DirSync Pro aangegeven als Mirror A->B (incremental):
* « Mirror A -> B (incremental) and Mirror B -> A (incremental) are mono-directional (one way). Only new and modified files from the source are copied to the destination; redundant files in the destination will be deleted. The directories are exactly the same after the sync. »
Beschouw onderstaande beginsituatie in de mappen A en B. Eerst werden alle bestanden aangemaakt in A, daarna in B. Tussen haakjes staat steeds de inhoud van het bestand.
| Map "A" | Map "B" |
| c.txt (Ik zit in map A.) s.txt (Ik zit in map A.) | c.txt (Ik zit in map B.) y.txt (Ik zit in map B.) |
Als we bij DirSync Pro “Mirror A → B (incremental)” kiezen, dan krijgen we:
| Map "A" | Map "B" |
| c.txt (Ik zit in map A.) s.txt (Ik zit in map A.) | c.txt (Ik zit in map A.) s.txt (Ik zit in map A.) |
Stel dat s.txt wordt gewist in map A en c.txt in map B. Vervolgens wordt een synchronisatie uitgevoerd. Het resultaat wordt dan:
| Map "A" | Map "B" |
| c.txt (Ik zit in map A.) | c.txt (Ik zit in map A.) |

### Synchronize

Met deze optie wordt de inhoud van twee mappen gelijk gehouden.
Dit wordt in DirSync Pro aangegeven als Synchronize A<->B (incremental):
* « Synchronize A <-> B is bi-directional (two-ways). Only new and modified files from both dirs are copied to each other. Both directories are exactly the same after the sync. »
Beschouw dezelfde beginsituatie zoals bij echo (cfr. tabel hieronder). Eerst werden alle bestanden aangemaakt in A, daarna in B. Tussen haakjes staat steeds de inhoud van het bestand.
| Map "A" | Map "B" |
| c.txt (Ik zit in map A.) s.txt (Ik zit in map A.) | c.txt (Ik zit in map B.) y.txt (Ik zit in map B.) |
Als we bij DirSync Pro “Synchronize A <-> B (incremental)” kiezen, dan krijgen we:
| Map "A" | Map "B" |
| c.txt (Ik zit in map B.) s.txt (Ik zit in map A.) y.txt (Ik zit in map B.) | c.txt (Ik zit in map B.) s.txt (Ik zit in map A.) y.txt (Ik zit in map B.) |

### Contribute

Nieuwe en bijgewerkte bestanden worden van bronmap naar de doelmap gekopieerd. Er worden geen bestanden verwijderd uit de doelmap als dit in de bronmap wel gebeurd is.
Dit wordt in DirSync Pro aangegeven als Contribute A->B (incremental):
* « Contribute A -> B and Contribute B -> A will copy only the new files from A to B (or vice versa). »
Beschouw dezelfde beginsituatie zoals bij echo (cfr. tabel hieronder). Eerst werden alle bestanden aangemaakt in A, daarna in B. Tussen haakjes staat steeds de inhoud van het bestand.
| Map "A" | Map "B" |
| c.txt (Ik zit in map A.) s.txt (Ik zit in map A.) | c.txt (Ik zit in map B.) y.txt (Ik zit in map B.) |
Als we bij DirSync Pro “Contribute A -> B (incremental)” kiezen, dan krijgen we:
| Map "A" | Map "B" |
| c.txt (Ik zit in map A.) s.txt (Ik zit in map A.) | c.txt (Ik zit in map B.) y.txt (Ik zit in map B.) s.txt (Ik zit in map A.) |
Stel dat eerst de bestanden in B en daarna pas in A werden aangemaakt. We kiezen opnieuw “Contribute A -> B (incremental)”. Merk dan op dat het eindresultaat hetzelfde zou zijn.

## Synchronisatie versus back-up

Zoals je eerder kon lezen is bestandssynchronisatie een proces in de informatica waarbij twee bestanden aan elkaar gelijkgesteld worden. Men gaat aan de hand van bepaalde regels automatisch bestanden laten synchroniseren zodat deze op twee of meerdere plaatsen hetzelfde zijn.
Synchronisatie kan dus gebruikt worden om informatie te back-uppen: zo kan een kopie (back-up) van een bestand genomen worden. Synchronisatie en back-up zijn echter geen synoniemen van elkaar. Zo kan je de synchronisatie zodanig instellen dat je op plaats A en B automatisch exact dezelfde informatie hebt. Maar als je echter per ongeluk op plaats A een bestand wist, dan zal dat ook op B gewist worden, waardoor je noch origineel, noch een back-up hebt. Bovendien heb je bij de standaard synchronisatie geen verschillende versies van bestanden, wat bij een back-up vaak wel het geval is.