Aqui estão dois exemplos mais extensos:
-
Crie um arquivo md5 em cada diretório que ainda não tenha um, com caminhos absolutos:
find "$PWD" -type d | sort | while read dir; do [ ! -f "${dir}"/@md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 already present" ; [ ! -f "${dir}"/@md5Sum.md5 ] && md5sum "${dir}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5;done
-
Crie um arquivo md5 em cada pasta que ainda não tenha um: nenhum caminho, apenas nomes de arquivos:
find "$PWD" -type d | sort | while read dir; do cd "${dir}"; [ ! -f @md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 allready present" ; [ ! -f @md5Sum.md5 ] && md5sum * > @md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5 ;done
O que difere entre 1 e 2 é a maneira como os arquivos são apresentados no arquivo md5 resultante.
Os comandos fazem o seguinte:
- Crie uma lista de nomes de diretório para a pasta atual. (Árvore)
- Classifique a lista de pastas.
- Verifique em cada diretório se o arquivo @ md5sum.md5 existe. Saída pulada se existir, saída Processando se não existir.
- Se o arquivo @ md5Sum.md5 não existir, md5Sum gerará um com as somas de verificação de todos os arquivos na pasta.
5) Configure o arquivo @ md5Sum.md5 gerado para somente leitura.
A saída deste script inteiro pode ser redirecionada para um arquivo (.....; feito > test.log)
ou canalizado para outro programa (como o grep).
A saída informará apenas quais diretórios foram ignorados e quais foram processados.
Após uma execução bem-sucedida, você terminará com um arquivo @ md5Sum.md5 em cada subdiretório do diretório atual
Eu nomeei o arquivo @ md5Sum.md5 para que ele seja listado na parte superior do diretório em um compartilhamento de samba.
A verificação de todos os arquivos @ md5Sum.md5 pode ser feita pelos próximos comandos:
find "$PWD" -name @md5Sum.md5 | sort | while read file; do cd "${file%/*}"; md5sum -c @md5Sum.md5; done > checklog.txt
Em seguida, você pode grep checklog.txt usando grep -v OK para obter uma lista de todos os arquivos que diferem.
Para regenerar um @ md5Sum.md5 em um diretório específico, quando você alterou ou adicionou arquivos, por exemplo, exclua o arquivo @ md5Sum.md5 ou renomeie-o e execute o comando generate novamente.