tar - troca proprietários ao mover arquivos do servidor dev para prod

1

No servidor Dev, temos uma árvore de arquivos de propriedade do usuário "webdev" ou "webserv".

Eu gostaria de aumentar essa árvore de arquivos e extraí-la no servidor prod, com a alteração de que qualquer arquivo pertencente a "webdev" agora seria de propriedade de "webprod" e qualquer propriedade pelo webserv permanecerá de propriedade do webserv.

Existe alguma maneira de fazer esse tipo de "troca"?

    
por feedbackloop 26.03.2011 / 05:07

3 respostas

4

Você pode fazer isso de maneira mais eficiente usando find após descompactar seu arquivo:

# find /path -user webdev -exec chown webprod '{}' +
    
por 26.03.2011 / 05:21
0

Se o webprod executar o comando tar, os arquivos pertencerão ao webprod. Os arquivos no arquivo tar podem precisar ser legíveis pelo webprod.

Na maioria dos casos, esse webprod não deve ser o ID do usuário no qual o servidor da Web é executado. Isso limitará a capacidade de modificar seu conteúdo ao comprometer o servidor da Web.

    
por 26.03.2011 / 08:03
0

Acho que você pode fazer algo inteligente com a opção --to-command em versões recentes do gnu tar (por volta de 1.25) para lidar com isso. Isso deve permitir que você faça transformações arbitrárias de saída de tarfile, canalizando-a por meio de um programa de filtro personalizado. Teoricamente, isso poderia verificar o proprietário de cada arquivo extraído do arquivo e alterá-lo, se necessário.

No entanto, não há bons exemplos de como usar essa funcionalidade na rede agora e minhas tentativas em um script de filtro foram infrutíferas.

Então me ocorreu que você poderia resolver esse dilema dividindo o arquivo em dois arquivos separados. Isso pode ser feito com o tar, mas isso é realmente algo melhor manipulado pelo cpio, porque o cpio tem um tratamento de entrada mais flexível.

Então, aqui está minha tentativa de solução usando find e cpio . Primeiro, faça um arquivo cpio de todos os arquivos pertencentes a webserv :

cd /var/www && find . -owner webserv | cpio -ov --format=crc | gzcat webserv-files.cpio.gz

faça um arquivo cpio dos arquivos de propriedade do webdev , alterando o proprietário para webprod :

cd /var/www && find . -owner webdev | cpio -ov --format crc --owner webprod | gzcat webdev-files.cpio.gz

(note que só funcionará se for executado como root de acordo com a página do cpio).

Agora, no seu destino, extraia os dois arquivos:

cd /var/www
gzcat webserv-files.cpio.gz | cpio -iv
gzcat webdev-files.gpio.gz | cpio -iv

Acho que isso terá o resultado desejado, embora eu não tenha testado muito bem.

    
por 30.03.2011 / 08:59

Tags