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