Como o SleighBoy disse, o rsync é definitivamente a ferramenta que você está procurando. Uma vez que pode ser assustador à primeira vista, devido às suas muitas opções, vou sugerir o mais importante para você, com base em suas necessidades. A sintaxe básica para backups locais é:
rsync [OPTION..] SRC.. DST
Geralmente, a opção --archive/-a
é usada porque inclui algumas outras opções comuns, como --recursive
e opções para preservar as permissões de arquivo.
Uma opção que você não precisa usar é --delete
porque senão o rsync excluirá todos os arquivos que está no DST de destino, mas não está nas fontes SRT.
Você provavelmente também deseja a opção --relative/-R
. Permite o uso de caminhos relativos. Na página do manual:
...this means that the full path names specified on the command line are sent to the server rather than just the last parts of the filenames. This is particularly useful when you want to send several different directories at the same time. For example, if you used this command:
rsync -av /foo/bar/baz.c /tmp/
... this would create a file named baz.c in /tmp/ . If instead you used
rsync -avR /foo/bar/baz.c /tmp/
then a file named /tmp/foo/bar/baz.c would be created — the full path name is preserved. To limit the amount of path information that is sent you can insert a dot and a slash into the source path, like this:
rsync -avR /foo/./bar/baz.c remote:/tmp/
That would create /tmp/bar/baz.c on the remote machine.
Você também precisa da opção:
- exclude = PATTERN
Uma opção muito útil é --dry-run
que apenas simula a transferência. Você pode usá-lo para testar seus comandos rsync.
As seguintes opções podem ser usadas para tornar o processo de backup detalhado:
--stats --verbose --human-readable --progress
Resumindo, se você precisar fazer o backup da pasta /home/user
na pasta /media/backup
, excluindo as pastas /home/user/lib
e /home/user/dir1/dir2
, poderá usar:
rsync -aRvh --exclude=/home/user/lib --exclude=/home/user/dir1/dir2 /home/user /media/backup
que recriará toda a hierarquia de diretórios de /home/user
em /media/backup
.