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/StorageDir2Este 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 .gitEste 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 .gitEste 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 .gitNeste 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
- [1]
cpmanual: https://man7.org/linux/man-pages/man1/cp.1.html - [2]
rsyncmanual: https://man7.org/linux/man-pages/man1/rsync.1.html