rsync

Clonando um sistema com rsync

Tava precisando migrar um sistema da Amazon para a Digital Ocean, e para clonar o sistema todo, usei rsync.

Conectei na máquina a ser migrada/clonada e mandei o seguinte comando:

sudo rsync --numeric-ids -aHAXSve ssh \
    --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
    / root@NewServer:/destination/directory

Atenção: lembrar de ajustar @NewServer:/destination/directory para os valores adequados.

É fundamental utilizar a opção --numeric-ids e -A, caso contrário todos os arquivos copiados terão suas permissões alteradas para que sejam de propriedade do usuário que está recebendo esses arquivos no host "NewServer".

A man page do rsync explica a função de cada uma das opções que utilizamos aqui, vou colocar aqui o trecho com um resumo:

     --numeric-ids           don't map uid/gid values by user/group name
 -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
 -H, --hard-links            preserve hard links
 -A, --acls                  preserve ACLs (implies -p)
 -X, --xattrs                preserve extended attributes
 -S, --sparse                handle sparse files efficiently
 -v, --verbose               increase verbosity
 -e, --rsh=COMMAND           specify the remote shell to use
     --exclude=PATTERN       exclude files matching PATTERN

Observação: é de suma importância que o acesso ao host que vai receber os arquivos seja root pois queremos manter as permissões e as informações de proprietário e grupo dos arquivos. E se usarmos um usuário regular para receber os arquivos, ele não terá permissão de alterar as permissões e consequentemente todos os arquivos pertencerão a ele (o que inviabiliza o que estamos querendo fazer aqui).

A execução deste comando vai demorar muitos minutos. Recomenda-se um bom café...


options

Some sort of a gitignore:

From the man page:

--exclude-from=FILE

This option is related to the --exclude option, but it specifies a FILE that contains exclude patterns (one per line). Blank lines in the file are ig‐ nored, as are whole-line comments that start with ';' or '#' (filename rules that contain those characters are unaffected).

If FILE is '-', the list will be read from standard input.