Preciso encontrar os arquivos mais antigos com seus diretórios associados em um sistema de arquivos de 90 TB até 50 TB e depois movê-los para outro sistema de arquivos. Eles precisam manter sua estrutura de diretórios, pois é isso que identifica quais são os arquivos. Assim -
primeiro nível / segundo nível / terceiro nível / (arquivo)
é a estrutura. Preciso mover toda a estrutura - não há nada nos diretórios de nível superior, mas sem eles não consigo identificar ao que o arquivo pertence, pois todos os arquivos que estou procurando têm o mesmo nome. Quando o processo estiver concluído, eu devo ter aproximadamente 40 TB no sistema de arquivos original e quase nada no novo sistema de arquivos, já que os arquivos mais antigos do original já estão lá.
Obrigado!
total_size > max { exit 0 }
para o script awk)50 * 2^40
). Você também pode alterá-lo paratotal_size += $2 + overhead
ondeoverhead
é definido como a sobrecarga incorrida por essas pastas. Veja também em%k
vez de%s
obter o uso do disco no KiB.O comando 'ls' é um pouco criativo com registros de data e hora - portanto, analisá-los pode ser uma dor. Provavelmente seria muito mais fácil implementar isso em uma linguagem que implementa stat (). Algumas versões do Unix têm uma estatística de linha de comando - em uma caixa RH próxima:
Mas isso funcionará como um cachorro com um grande número de arquivos.
A documentação do GNU awk inclui uma extensão de exemplo que fornece funções do sistema de arquivos, mas você precisaria fazer algum trabalho para criar e manter isso.
Escrever um programa a partir do zero em PHP, C ou Perl (ou ir, ruby ou muitas outras linguagens) seria simples, mas fora do escopo de uma publicação aqui.
fonte
stat
foi adicionado muito tempo depois do GNUfind
ter um-printf
comando (que pode fazer o mesmo que o GNUstat
com uma interface muito melhor).