It’s not very obvious how rsync works and what it does. This is especially true when using incremental backup.
The following will try to show you what happen when calling rsync multiple times with various changes in the file system (create, delete, modify,…).
For this example, A is the directory you want to save. B is the backup directory. Backup_n is the incremental backup directory.
*
* Create files 0-9 in A. B is empsty.
*
A:
0 1 2 3 4 5 6 7 8 9
B:
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_0 A/ B
*
A:
0 1 2 3 4 5 6 7 8 9
B:
0 1 2 3 4 5 6 7 8 9 -> All files were copied here
*
* Create files 10-19 in A
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8 9
B:
0 1 2 3 4 5 6 7 8 9
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_1 A/ B
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8 9
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8 9 -> All files were copied here
Backup_0:
Backup_1:
*
* Droping file 9
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8 9
Backup_0/:
Backup_1/:
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_2 A/ B
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8 -> File 9 is no longer here
Backup_0:
Backup_1:
Backup_2:
9 -> Dropped file 9 moved here
*
* Create file 20
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_3 A/ B
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 -> New file 20 copied here
Backup_0:
Backup_1:
Backup_2:
9
*
* Modify file 10
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
Backup_0:
Backup_1:
Backup_2:
9
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_4 A/ B
*
A:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 -> New file 10 copied here
Backup_0:
Backup_1:
Backup_2:
9
Backup_4:
10 -> Former file 10 copied here
*
* Delete file 10
*
A:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
B:
0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
Backup_0:
Backup_1:
Backup_2:
9
Backup_4:
10
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_5 A/ B
*
A:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
B:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 -> File 10 no longer here
Backup_0:
Backup_1:
Backup_2:
9
Backup_4:
10
Backup_5:
10 -> Former file 10 copied here. Note Backup_4 contains first version of file 10.
*
* Create sub directory + files
*
A:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 Test
A/Test: -> New subdirectory + files 0 et 1
0 1
B:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8
Backup_0:
Backup_1:
Backup_2:
9
Backup_4:
10
Backup_5:
10
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_6 A/ B
*
A:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 Test
A/Test:
0 1
B:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 Test
B/Test: -> New directory and files copied here
0 1
Backup_0:
Backup_1:
Backup_2:
9
Backup_4:
10
Backup_5:
10
*
* Delete file Test/1
*
A:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 Test
A/Test:
0
B:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 Test
B/Test:
0 1
Backup_0:
Backup_1:
Backup_2:
9
Backup_4:
10
Backup_5:
10
*
* Calling rsync : rsync -a –delete -b –backup-dir=/home/lordikc/Backup_7 A/ B
*
A:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 Test
A/Test:
0
B:
0 1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 Test
B/Test:
0 -> File 1 droped from here
Backup_0:
Backup_1:
Backup_2:
9
Backup_4:
10
Backup_5:
10
Backup_7:
Test -> Subdirectory created here
Backup_7/Test:
1 -> File 1 is compied into the subdirectory