Copiare due cartelle in Linux con rsync

Se si vogliono copiare due cartelle in Linux si può usare rsync da linea di comando.

Preparo l’ambiente di test creando le seguenti cartelle e file:

cartella “/share/source”
cartella “/share/destination”
cartella “/share/source/folder 1”
cartella “/share/source/folder 2”
file “/share/source/folder 1/file 1”
file “/share/source/folder 2/file 2”

Voglio copiare il contenuto della cartella “source” nella cartella “destination”. Quindi lancio:

[/share] # rsync -avc "source/" "destination"

Come mi aspettavo, ecco il risultato:

sending incremental file list
./
folder 1/
folder 1/file 1.txt
folder 2/
folder 2/file 2.txt

sent 253 bytes received 61 bytes 628.00 bytes/sec
total size is 12 speedup is 0.04

Verifico il risultato:

[/share] # ls -lR destination/
destination/:
drwxrwx--- 2 admin administ 4096 Dec 2 17:24 folder 1/
drwxrwx--- 2 admin administ 4096 Dec 2 17:24 folder 2/

destination/folder 1:
-rwxrwx--- 1 admin administ 6 Dec 2 17:24 file 1.txt*

destination/folder 2:
-rwxrwx--- 1 admin administ 6 Dec 2 17:24 file 2.txt*

Con un bel man rsync si possono vedere le opzioni che ho usato: https://linux.die.net/man/1/rsync

-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose               increase verbosity
-c, --checksum              skip based on checksum, not mod-time & size

Qualche nota:

  • Nel comando del confronto, la slash “/” di “source/” vuol dire “il contenuto di source”.
  • L’opzione “-a” equivale a “-rlptgoD”. Incollo qui sotto le spiegazioni:
-r, --recursive             recurse into directories
-l, --links                 copy symlinks as symlinks
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)
-D                          same as --devices --specials
--devices                   preserve device files (super-user only)
--specials                  preserve special files