Rsync é un sistema de sincronización de arquivos entre dóus puntos, que nos permite ter o mesmo arquivo cos últimos cambios gardados en dóus ou máis sitios a vez
É unha ferramenta moi útil para realizar backups de seguridade, xa ue combina algoritmos que permiten sincronizar só as diferenzas dos arquivos, co cal aforra ancho de banda , se pode dar que se use máis tempos da CPU ao ter que comprobar e procesalos cambios nos arquivos.
Instalando rsync en Fedora
A instalación en Fedora:
sudo dnf install rsync
Usando Rsync
Comprobando se está activo
Cómo calquer outro servizo antes de traballar con él interésanos saber en que estado se atopa:
$ systemctl status rsync
● rsync.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
Uso
Nas rutas de rsync se usas “:” estás a indicar que se use a través da rede entre dúas máquinas, se non se usa “:” será unha copia local.
| Parámetro: | Uso: |
|---|---|
| -a, -archive | Sincronizar por diferencias entre ficheiros, isto só enviará as partes diferentes, ademáis é como se puséralas opcións “-rlptgoD”. |
| -r, -recursive | Para que a sincronización sexa recursiva e sincronice tamén subdirectorios e os seus ficheiros. |
| -p, -perms | Perserva os permisos. |
| -t, -times | Perserva ás datas de modificación. |
| -l, -links | Preserva os enalces simbólicos. |
| -g, -group | Preserva os grupos. |
| -o, -owner | Preserva o dono. |
| -D | Permite a sincronización de arquivos especiais e arquivos de tipo dispositivo no caso de que a máquina receptora execute rsync coma root. |
| -v, -verbose | amosar máis información do proceso. |
Exemplo
Creamos dous directorios AAA e BBB, en AAA creamos un arquivo duns 9 MiB:
$ mkdir -p ./CHERNOBIL/AAA ./CHERNOBIL/BBB
$ cd CHERNOBIL
$ dd if=/dev/urandom of=./AAA/arquivo_en_AAA.del bs=1M count=9
Agora tratamos de sincronizar o contido de AAA e BBB:
$ rsync -av ./AAA/ ./BBB/
sending incremental file list
./
arquivo_en_AAA.del
sent 9,439,630 bytes received 38 bytes 18,879,336.00 bytes/sec
total size is 9,437,184 speedup is 1.00
Podemos comprobar cómo están os mesmos arquivos nos dóus directorios:
$ ls -lhaR
.:
total 0
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 .
drwxrwxr-x. 3 usuario usuario 96 Xul 5 15:27 ..
drwxrwxr-x. 2 usuario usuario 31 Xul 5 14:59 AAA
drwxrwxr-x. 2 usuario usuario 31 Xul 5 14:59 BBB
./AAA:
total 9,0M
drwxrwxr-x. 2 usuario usuario 31 Xul 5 14:59 .
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 ..
-rw-rw-r--. 1 usuario usuario 9,0M Xul 5 14:57 arquivo_en_AAA.del
./BBB:
total 9,0M
drwxrwxr-x. 2 usuario usuario 31 Xul 5 14:59 .
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 ..
-rw-rw-r--. 1 usuario usuario 9,0M Xul 5 14:57 arquivo_en_AAA.del
Creamos un novo arquivo e o concatenamos ao arquivo de probas:
$ dd if=/dev/urandom of=./AAA/engadido.del bs=1M count=1024
$ cat ./AAA/engadido.del >> ./AAA/arquivo_en_AAA.del
$ ls -laRh
.:
total 0
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 .
drwxrwxr-x. 3 usuario usuario 54 Xul 5 15:35 ..
drwxrwxr-x. 2 usuario usuario 50 Xul 5 14:59 AAA
drwxrwxr-x. 2 usuario usuario 31 Xul 5 14:59 BBB
./AAA:
total 3,0G
drwxrwxr-x. 2 usuario usuario 50 Xul 5 14:59 .
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 ..
-rw-rw-r--. 1 usuario usuario 1,1G Xul 5 15:35 arquivo_en_AAA.del
-rw-rw-r--. 1 usuario usuario 1,0G Xul 5 15:31 engadido.del
./BBB:
total 9,0M
drwxrwxr-x. 2 usuario usuario 31 Xul 5 14:59 .
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 ..
-rw-rw-r--. 1 usuario usuario 9,0M Xul 5 14:57 arquivo_en_AAA.del
Voltamos a sincronizalos directorios:
$ rsync -av ./AAA/ ./BBB/
sending incremental file list
arquivo_en_AAA.del
engadido.del
sent 2,157,447,631 bytes received 54 bytes 45,419,951.26 bytes/sec
total size is 2,156,920,832 speedup is 1.00
$ ls -laRh
.:
total 0
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 .
drwxrwxr-x. 3 usuario usuario 96 Xul 5 15:37 ..
drwxrwxr-x. 2 usuario usuario 50 Xul 5 14:59 AAA
drwxrwxr-x. 2 usuario usuario 50 Xul 5 14:59 BBB
./AAA:
total 3,0G
drwxrwxr-x. 2 usuario usuario 50 Xul 5 14:59 .
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 ..
-rw-rw-r--. 1 usuario usuario 1,1G Xul 5 15:35 arquivo_en_AAA.del
-rw-rw-r--. 1 usuario usuario 1,0G Xul 5 15:31 engadido.del
./BBB:
total 2,1G
drwxrwxr-x. 2 usuario usuario 50 Xul 5 14:59 .
drwxrwxr-x. 4 usuario usuario 26 Xul 5 04:01 ..
-rw-rw-r--. 1 usuario usuario 1,1G Xul 5 15:35 arquivo_en_AAA.del
-rw-rw-r--. 1 usuario usuario 1,0G Xul 5 15:31 engadido.del
Cómo curiosidade indicar que tal cómo o fago aquí non se borran os arquivos se non están noutro directorio.
Vexamos o seguinte exemplo onde creo 2 arquivos de diferente tamaño un en AAA e outro en BBB:
$ dd if=/dev/urandom of=./BBB/BBBBBBBBB.del bs=1M count=123
123+0 records in
123+0 records out
128974848 bytes (129 MB) copied, 7,08548 s, 18,2 MB/s
$ dd if=/dev/urandom of=./AAA/AAAAAAAAA.del bs=1M count=69
69+0 records in
69+0 records out
72351744 bytes (72 MB) copied, 4,03944 s, 17,9 MB/s
$ tree . -hD
.
├── [ 70 Jul 5 15:46] AAA
│ ├── [ 69M Jul 5 15:46] AAAAAAAAA.del
│ ├── [ 1.0G Jul 5 15:35] arquivo_en_AAA.del
│ └── [ 1.0G Jul 5 15:31] engadido.del
└── [ 70 Jul 5 15:46] BBB
├── [ 1.0G Jul 5 15:35] arquivo_en_AAA.del
├── [ 123M Jul 5 15:46] BBBBBBBBB.del
└── [ 1.0G Jul 5 15:31] engadido.del
Lanzo a sincronización:
$ rsync -av ./AAA/ ./BBB/
sending incremental file list
./
AAAAAAAAA.del
sent 72,369,607 bytes received 38 bytes 144,739,290.00 bytes/sec
total size is 2,229,272,576 speedup is 30.80
$ tree . -hD
.
├── [ 70 Jul 5 15:46] AAA
│ ├── [ 69M Jul 5 15:46] AAAAAAAAA.del
│ ├── [ 1.0G Jul 5 15:35] arquivo_en_AAA.del
│ └── [ 1.0G Jul 5 15:31] engadido.del
└── [ 90 Jul 5 15:46] BBB
├── [ 69M Jul 5 15:46] AAAAAAAAA.del
├── [ 1.0G Jul 5 15:35] arquivo_en_AAA.del
├── [ 123M Jul 5 15:46] BBBBBBBBB.del
└── [ 1.0G Jul 5 15:31] engadido.del
Podemos ver que o ficheiro de AAA se pasou a BBB e non se borrou o ficheiro “BBBBBBBBB.del” de BBB.
Se volvo a lanzar a orde verás que non hai nada novo que sincronizar, logo se executo outra vez rsync mais engado o parámetro “-delete” borrará “BBBBBBBBB.del” do directorio destino:
$ rsync -av ./AAA/ ./BBB/
sending incremental file list
sent 157 bytes received 12 bytes 338.00 bytes/sec
total size is 2,229,272,576 speedup is 13,190,961.99
$ rsync -av --delete ./AAA/ ./BBB/
sending incremental file list
deleting BBBBBBBBB.del
sent 157 bytes received 29 bytes 372.00 bytes/sec
total size is 2,229,272,576 speedup is 11,985,336.43
$ tree . -hD
.
├── [ 70 Jul 5 15:46] AAA
│ ├── [ 69M Jul 5 15:46] AAAAAAAAA.del
│ ├── [ 1.0G Jul 5 15:35] arquivo_en_AAA.del
│ └── [ 1.0G Jul 5 15:31] engadido.del
└── [ 70 Jul 5 15:46] BBB
├── [ 69M Jul 5 15:46] AAAAAAAAA.del
├── [ 1.0G Jul 5 15:35] arquivo_en_AAA.del
└── [ 1.0G Jul 5 15:31] engadido.del
2 directories, 6 files
Conclusión, sincroniza o receptor co emisor, mais os arquivos extra do receptor non pasan ao emisor.