flac-Dateien auf Integrität überprüfen (Shellskript)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

flac-Dateien auf Integrität überprüfen (Shellskript)

Beitrag von smutbert » 10.02.2016 11:26:52

Hi,

gelegentlich bin ich ein bißchen paranoid was die Integrität meiner Daten betrifft. Diesmal trifft es meine kleine Musiksammlung, die auf meinem PC am meisten Speicherplatz einnimmt.
Nachdem flac-Dateien eine Prüfsumme über die dekodierten Audiodaten enthält und diese nach dem Dekodieren mit flac automatisch geprüft wird, liegt es also nahe das ganze von einem Skript rekursiv für ein ganzes Verzeichnis erledigen zu lassen

Code: Alles auswählen

#!/bin/bash

IFS=$'\n'
MAXJOBS=8
COUNT=0
DIRECTORY="${1-.}"
test -d ${DIRECTORY} || exit 3
for FILE in $(find . -name '*.flac'); do
	flac -t ${FILE} &> /dev/null || echo ERROR: ${FILE} &
	test $(jobs -rp | wc -l) -lt ${MAXJOBS} || wait -n
	COUNT=$(expr ${COUNT} + 1)
done
wait
echo checked ${COUNT} files.
Wie man sieht habe ich sogar versucht das ganze zu parallelisieren. MAXJOBS ist die Zahl der flac-Dateien, die parallel überprüft werden sollen.
Die Ausgabe sollte eine Liste der fehlerhaften Dateien gefolgt von der Anzahl der insgesamt überprüften Dateien sein.

Auf meinem Computer läuft das (für mich überraschenderweise ☺) recht gut und findet in meinen 115 GB flac-Dateien innerhalb von ~5 Minuten keinerlei Fehler (ich habe mein Skript flactest genannt)

Code: Alles auswählen

$ du -ch .
[…]
115G	.
115G	insgesamt
$ time flactest
checked 5676 files.

real	5m34.887s
user	42m9.973s
sys	0m42.223s
Ich poste das in der Hoffnung, dass es erstens außer mir noch jemand nützlich findet und zweitens um zu hören was man anders/besser/eleganter lösen hätte können.

Benutzeravatar
hikaru
Moderator
Beiträge: 13593
Registriert: 09.04.2008 12:48:59

Re: flac-Dateien auf Integrität überprüfen (Shellskript)

Beitrag von hikaru » 10.02.2016 12:16:48

Liegen deine Flacs auf einer SSD oder einem RAID?

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: flac-Dateien auf Integrität überprüfen (Shellskript)

Beitrag von smutbert » 10.02.2016 12:33:25

Das ist eine SSD.

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: flac-Dateien auf Integrität überprüfen (Shellskript)

Beitrag von heisenberg » 10.02.2016 13:14:17

was ich interessant finde ist besonders das:

Code: Alles auswählen

test $(jobs -rp | wc -l) -lt ${MAXJOBS} || wait -n
Danke!
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Antworten