Como preservar as permissões de arquivo ao copiar arquivos no Linux

As permissões de arquivo são parte integrante da especificação Unix. No entanto, há certas coisas das quais os usuários iniciantes geralmente desconhecem, como reter as permissões de arquivo no Linux ao copiá-los.

Como os arquivos copiados são essencialmente novos, sua permissão depende do umask do usuário atual. Isso pode levar a situações em que os arquivos ou pastas copiados têm permissões totalmente diferentes da fonte.

Felizmente para você, é fácil reter permissões de arquivo no Linux usando ferramentas de linha de comando padrão como cp e rsync . Confira os exemplos abaixo para ver como copiar e preservar as permissões no Linux.

Preservar permissões de arquivo usando cp

O comando cp padrão tem tudo que você precisa para reter as permissões do arquivo durante a cópia. Você pode usar a opção -p de cp para preservar o modo, a propriedade e os carimbos de data / hora do arquivo.

 cp -p source-file dest-file

No entanto, você precisará adicionar a opção -r a este comando ao lidar com diretórios. Ele copiará todos os subdiretórios e arquivos individuais, mantendo suas permissões originais intactas.

 cp -rp source-dir/ dest-dir/

Você também pode usar a opção -a de cp para reter as permissões de arquivo. Isso habilita o modo Archive , preservando tudo, desde permissões de arquivo a contextos SELinux.

 cp -a source-dir/ dest-dir/

Reter permissões no Linux usando rsync

Você também pode usar o utilitário rsync para preservar as permissões de cópia no Linux. Muitos administradores preferem rsync em vez de cp devido à sua velocidade de cópia mais rápida. Como o rsync copia apenas a parte atualizada do arquivo, eles são mais adequados para tarefas como clonar o disco rígido do Linux .

 rsync -a source-dir/ dest-dir

A opção -a de rsync ativa o modo Archive , que preserva atributos de arquivo como permissões e propriedades. Você pode usar a opção -v para saída detalhada e -h para visualizar números em um formato legível.

 rsync -avh source-dir/ dest-dir

Além disso, observe a isenção da barra final ( / ) do diretório de destino. Adicionar a barra final ao destino fará com que o rsync copie os arquivos em outro nível de subdiretório.

Verifique as permissões de arquivo no Linux

Você pode verificar facilmente as permissões de arquivo no Linux usando o comando getfacl (obter listas de controle de acesso a arquivos). Isso validará se as permissões foram preservadas conforme o esperado.

 getfacl source-file
getfacl dest-file

Copiar arquivos enquanto preserva as permissões no Linux

Tanto cp quanto rsync fornecem opções padrão para preservar as permissões de arquivo no Linux. Você pode usar cp para tarefas diárias, enquanto rsync será mais adequado para dados em grande escala. Certifique-se de validar as permissões usando getfacl quando terminar de copiar.

Embora o rsync possa copiar arquivos entre máquinas remotas, o comando scp (cópia segura) é outra opção viável para essa tarefa. Você pode fazer backup de arquivos com segurança de e para sistemas em rede usando o scp.