A maneira mais rápida de chown todo um dispositivo (xfs)

4

Eu preciso colocar 1,5 milhão de arquivos em uma unidade. Atualmente estou fazendo:

sudo chown -R www-data:www-data /root-of-device

mas leva muito tempo para ser executado. Eu queria saber se havia algum tipo de maneira super rápida de baixo nível para chover todos os arquivos na unidade.

    
por Aidan Kane 10.04.2012 / 23:02

3 respostas

7

Use xargs -p ou GNU parallel para acelerar consideravelmente as coisas.

    
por 10.04.2012 / 23:16
4
Infelizmente não acho que exista tal coisa, mas ficaria agradavelmente surpreso se houvesse. Você poderia escrever sua própria implementação em C e otimizá-la strongmente. No entanto, o sucesso disso depende de como o chown é otimizado. E considerando que é um dos principais utilitários, eu diria que é bastante otimizado. Além disso, você é obrigado provavelmente pela velocidade de i / o.

Eu tive algum sucesso evitando limitações de ls e rm canalizando os resultados de find para xargs , no caso de um diretório ter muitos arquivos, ou seja:

find /path/* | xargs rm

Então, um palpite, talvez isso possa acelerar o chown , no caso de ser mais lento na verificação recursiva de um sistema de arquivos do que encontrar :

sudo find /path/* | xargs chown www-data:www-data
    
por 10.04.2012 / 23:08
0

Estou usando o Amazon EC2 também e tive esse problema. 2 coisas:

Corrigindo a situação atual: Você terá que lidar com a lentidão. Talvez você possa usar "tela" ou algo semelhante para que o processo possa continuar em segundo plano.

Corrigindo a situação futura: Você pode procurar pelo desenvolvedor e ver como os arquivos estão sendo gerados. Desde que você mencionou www-data, estou assumindo que o consumidor dos arquivos é o Apache. Se os arquivos estiverem sendo descartados de outro programa (NFS, Samba, SSH, etc.), certifique-se de que esses programas estejam configurando o usuário: group como www-data: www-data.

    
por 19.02.2013 / 23:49

Tags