Como localizar e excluir arquivos corrompidos para evitar o backup deles

3

O problema

Eu tenho um array RAID-5 de software do Windows Server que gostaria de fazer backup, mas eu quero evitar o backup de todos os arquivos quebrados.

Eu realmente adoraria que houvesse algum tipo de script ou programa que pudesse escanear pelo HDD para arquivos corrompidos e simplesmente excluí-los.

Meu Google-Fu retorna os resultados de como recuperar ou reparar esses arquivos. Só quero excluí-los.

Como consegui quebrá-lo:

Migrei meu software RAID 5 do Windows Server 2008 R2 para o novo hardware e o Windows Server 2012 R2. O movimento foi mais ou menos bem sucedido; Eu só precisava fazer alguma ressincronização. Esqueci que estava ressincronizando e desliguei para mover sua localização física.

Opa.

Após semanas do CHKDSK e do SeaTools e outras tentativas aleatórias de recuperar as unidades, decidi desistir da recuperação e recompilar tudo ao mesmo tempo em que recupero o máximo que posso.

EDITAR

O trabalho em torno

Usando o ffmeg meio que funcionou, mas não tive uma solução limpa e automatizada no Windows Server 2012. Minha tentativa do PowerShell demorou demais e produziu um arquivo de log não legível.

Em vez disso, instalei o FileZilla Server e simplesmente coloquei na fila todos os meus arquivos a serem copiados para os meus dispositivos de backup e quaisquer arquivos danificados acabarão na guia Failed transfers do FileZilla Client.

    
por tonyamazing 05.09.2015 / 01:49

1 resposta

2

Boas notícias, temos um teste relativamente rápido para arquivos MKV e AVI válidos.

Como posso verificar a integridade de um arquivo de vídeo (avi, mpeg, mp4…)?

You can use a feature in ffmpeg video converter: if you will specify it to recode video to nothing it will just read input file and report any errors that will appear. This is very fast process because video frames are just being read, checked and silently dropped.

Faça um loop em todos os arquivos avi e mkv com:

ffmpeg.exe -v error -i file.avi -f null - >error.log 2>&1

Exemplo de loop para todos os arquivos em um diretório: ( add para / R usar recursão )

FOR %%c IN (*.mkv) DO ffmpeg.exe -v error -i %%c -f null - >error.log 2>&1

Informações do Windows For Loops

Editar Aqui está a versão bash do Linux que eu testei:

for c in *.mp4; do ffmpeg -v error -i $c -f null - >error.log 2>&1; done

Agora, o log de erros do grep para quais arquivos estão incorretos e os exclua. Eu não sei o que a saída parece, então você pode querer postar saída de exemplo para assistência com a última etapa ou dividida em outra pergunta.

Exemplo de saída com arquivo corrompido (cortado do final do arquivo), os erros podem variar significativamente:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x161a180] moov atom not found
video-head.mp4: Invalid data found when processing input
    
por 05.09.2015 / 02:19