Copiar diretoria recursivamente preservando os utilizadores e permissões.

Quando precisamos copiar grandes quantidades de dados entre diretorias em Linux, é comum utilizar o comando cp ou rsync. No entanto, ao copiar diretorias recursivamente, é importante garantir que os mesmos usuários e permissões sejam mantidos. Neste artigo, vamos explorar como fazer isso utilizando os comandos cp e rsync.

Copiar via cp

O comando cp é um dos mais simples e fáceis de usar para copiar arquivos e diretorias em Linux. Para copiar uma diretoria recursivamente mantendo a mesmas permissões e utilizadores, podemos utilizar a opção -a (arquivo) e -v (verboso). Além disso, é importante especificar a opção -r (recursivo) para que o comando copie todas as sub-diretorias.

Exemplo:

cp -avr /mnt/StorageDir /mnt/StorageDir2

Este comando copia todo o conteúdo da diretoria /mnt/StorageDir para o diretoria /mnt/StorageDir2, mantendo as mesmas permissões e utilizadores.

Limitações de cp

No entanto, o comando cp tem algumas limitações. Por exemplo, ele não é capaz de copiar arquivos via rede. Você precisa estar no mesmo computador para utilizar este comando e a diretoria para onde vei copiar tem que estar no mesmo computador.

Copiar via rsync

O comando rsync é mais poderoso e flexível do que o comando cp. Ele permite copiar arquivos recursivamente com opções avançadas, como a possibilidade de excluir diretórios ou arquivos específicos. Além disso, ele pode ser utilizado para copiar arquivos via rede.

Exemplo de cópia para o mesmo equipamento:

rsync -av --progress /mnt/StorageDir /mnt/StorageDir2 --exclude .git

Este comando copia todo o conteúdo do diretório /mnt/StorageDir para o diretório /mnt/StorageDir2, mantendo as mesmas permissões e usuários, e excluindo por exemplo o diretório .git. A opção –progress seve para que seja mostrado o progresso desta cópia.

Exemplo de cópia via rede:

rsync -av --progress /mnt/StorageDir 192.168.1.1:/mnt/StorageDir2 --exclude .git

Este comando copia todo o conteúdo da diretoria /mnt/StorageDir para o diretoria /mnt/StorageDir2 no computador com IP 192.168.1.1, mantendo as mesmas permissões e utilizadores. Excluí a diretoria .git.

No caso do equipamento ter outro utilizador de acesso, temos que acrescentar o nome do user com que queremos aceder.

Exemplo de acesso ao equipamento de rede com outro utilizador:

rsync -av --progress /mnt/StorageDir root@192.168.1.1:/mnt/StorageDir2 --exclude .git

Neste exemplo queremos fazer a cópia para o equipamento 192.168.1.1 utilizando o utilizador root para aceder.

Conclusão

Em resumo, os comandos cp e rsync são dois métodos eficazes para copiar diretorias recursivamente em Linux. O comando cp é mais simples e fácil de usar, mas tem limitações, enquanto o comando rsync é mais poderoso e flexível, permitindo opções avançadas e copia via rede. Além disso, ambos os comandos permitem manter as mesmas permissões e usuários dos arquivos e diretórios originais.

Referências

Pode fazer uma doação para ajudar a mater o site, Obrigado!