Lista de Formatos Obsoletos e em Risco usando o Siegfried
Siegfried é uma alternativa ao DROID, mais moderna e sem dependência de Java:
# Instalar Siegfried
wget https://github.com/richardlehane/siegfried/releases/download/v1.11.1/siegfried_1.11.1_linux_amd64.tar.gz
tar -xzf siegfried_1.11.1_linux_amd64.tar.gz
sudo cp sf /usr/local/bin/
sudo cp roy /usr/local/bin/
# Atualizar assinaturas PRONOM
sf -update
# Executar varredura
sf -csv /caminho/para/repositorio > report.csv
Script Python para usar Siegfried
#!/usr/bin/env python3
# scan_siegfried.py
import subprocess
import csv
import json
from datetime import datetime
from pathlib import Path
def scan_with_siegfried(repository_path, output_dir='/var/siegfried/reports'):
"""
Varredura usando Siegfried (alternativa ao DROID)
"""
Path(output_dir).mkdir(parents=True, exist_ok=True)
date_str = datetime.now().strftime('%Y%m%d_%H%M%S')
csv_output = f"{output_dir}/siegfried_report_{date_str}.csv"
json_output = f"{output_dir}/siegfried_report_{date_str}.json"
print(f"=== Varredura Siegfried ===")
print(f"Repositório: {repository_path}")
print(f"Iniciando varredura...")
# Executar Siegfried em formato CSV
with open(csv_output, 'w') as f:
subprocess.run(
['sf', '-csv', repository_path],
stdout=f,
check=True
)
print(f"Relatório CSV gerado: {csv_output}")
# Executar Siegfried em formato JSON
with open(json_output, 'w') as f:
subprocess.run(
['sf', '-json', repository_path],
stdout=f,
check=True
)
print(f"Relatório JSON gerado: {json_output}")
# Análise básica
analyze_siegfried_report(csv_output)
return csv_output, json_output
def analyze_siegfried_report(csv_file):
"""Analisa relatório do Siegfried"""
formats = {}
total_files = 0
unidentified = 0
with open(csv_file, 'r') as f:
reader = csv.DictReader(f)
for row in reader:
total_files += 1
fmt = row.get('format', 'UNKNOWN')
if fmt == 'UNKNOWN' or not fmt:
unidentified += 1
else:
formats[fmt] = formats.get(fmt, 0) + 1
print(f"\n=== Estatísticas ===")
print(f"Total de arquivos: {total_files}")
print(f"Arquivos não identificados: {unidentified}")
print(f"Formatos únicos: {len(formats)}")
print(f"\nTop 10 formatos:")
sorted_formats = sorted(formats.items(), key=lambda x: x[1], reverse=True)
for fmt, count in sorted_formats[:10]:
print(f" {fmt}: {count}")
# Salvar análise
analysis = {
'timestamp': datetime.now().isoformat(),
'total_files': total_files,
'unidentified': unidentified,
'unique_formats': len(formats),
'formats': formats
}
analysis_file = csv_file.replace('.csv', '_analysis.json')
with open(analysis_file, 'w') as f:
json.dump(analysis, f, indent=2)
print(f"\nAnálise salva em: {analysis_file}")
if __name__ == "__main__":
import sys
if len(sys.argv) < 2:
print("Uso: python scan_siegfried.py <caminho_repositorio>")
sys.exit(1)
repository = sys.argv[1]
scan_with_siegfried(repository)
Recomendação
Opção 1 (Melhor): Atualizar para Java 21 e usar DROID
- Mais completo e preciso
- Mantém compatibilidade com PRONOM oficial
- Interface gráfica disponível se necessário
Opção 2 (Alternativa): Usar Siegfried
- Não requer Java
- Mais rápido e leve
- Usa mesmas assinaturas PRONOM
- Perfeito para linha de comando
Execute os comandos de instalação do Java 21 e depois tente novamente o DROID!
No comments to display
No comments to display