(De: /programming/15245144/copy-file-permissions-but-not-files , fechado porque fora do tópico)
Eu tenho duas cópias da mesma árvore de diretórios. Eles quase têm os mesmos arquivos em ambos (uma versão pode ter alguns arquivos extras ou ausentes). No entanto, a maioria dos arquivos é comum aos dois diretórios (têm os mesmos caminhos relativos e tudo mais).
Suponha que estes estejam nos diretórios:
version1/
version2/
O problema é que as permissões da versão1 / foram desarrumadas e eu gostaria de copiar as permissões da versão2 /, mas o faço sem substituir os arquivos da versão1 / que são mais novos.
Existe uma maneira automatizada de fazer isso através de comandos ou scripts de shell?
unix
file-permissions
unix-shell
copying
Mariano Paniga
fonte
fonte
Respostas:
O GNU cp conhece a
--attributes-only
bandeira desde o coreutils 8.6fonte
Minha versão do
cp
não tem a--attributes-only
bandeira, então eu trabalhei nisso. Testado brevemente em pastas simples, YMMV.fonte
Você pode, mas eu não penso de uma maneira "automatizada"!
GNU chown e GNU chmod têm um
--reference=RFILE
parâmetro que você pode usar.Ele usa
RFILE
configurações (permissões, proprietário, grupo, etc.) e as copia parayourfile
.o manual explica com mais detalhes.
fonte
No meu caso, resolvi usando o comando "stat" com "find" e "vi" para criar um script que aplica permissões.
No "vi" inseri em todas as linhas o comando "chmod":
%s/^/chmod /g
copiei o script noversion2/
diretório e o executei.Outras soluções parecem válidas, mas eu não as testei no caso.
fonte
Inspirado na resposta de Mariano Paniga, acho que tenho uma melhor, que não precisa vi e pesquisar / substituir comandos. Eu também quero copiar as informações de propriedade também (uid / gid).
Você pode personalizar os comandos internos
stat -c '...'
para o que quiser. Para todas as opções disponíveis, consulteman stat
.fonte