Vdrsplit
Aus VDR Wiki
(Unterschied zwischen Versionen)
HFlor (Diskussion | Beiträge) K (→Funktion) |
K (typos) |
||
| Zeile 2: | Zeile 2: | ||
'''Autor:''' [[Benutzer:HFlor|Hardy Flor]] | '''Autor:''' [[Benutzer:HFlor|Hardy Flor]] | ||
| − | Dieses Script ist zur sicheren Übertragung der großen | + | Dieses Script ist zur sicheren Übertragung der großen Aufnahmedateien durch die Trennung in mehrere kleine Teile gedacht. |
==Voraussetzungen== | ==Voraussetzungen== | ||
| Zeile 12: | Zeile 12: | ||
==Funktion== | ==Funktion== | ||
| − | Es wird in dem aktuellen bzw. als Parameter angegebenen Verzeichniss ( | + | Es wird in dem aktuellen bzw. als Parameter angegebenen Verzeichniss (Aufnahme) nach der 001.vdr gesucht.<br> |
Dann wird die Prüfsumme über alle in diesem Verzeichniss vorhandenen Dateien gebildet.<br> | Dann wird die Prüfsumme über alle in diesem Verzeichniss vorhandenen Dateien gebildet.<br> | ||
Nun erfolgt die Aufteilung in Stücke von Standardmäßig 50MB.<br> | Nun erfolgt die Aufteilung in Stücke von Standardmäßig 50MB.<br> | ||
Aktuelle Version vom 9. April 2007, 23:39 Uhr
[Bearbeiten] Beschreibung
Autor: Hardy Flor
Dieses Script ist zur sicheren Übertragung der großen Aufnahmedateien durch die Trennung in mehrere kleine Teile gedacht.
[Bearbeiten] Voraussetzungen
Es werden die folgende Programme benötigt:
* md5sum * split
[Bearbeiten] Funktion
Es wird in dem aktuellen bzw. als Parameter angegebenen Verzeichniss (Aufnahme) nach der 001.vdr gesucht.
Dann wird die Prüfsumme über alle in diesem Verzeichniss vorhandenen Dateien gebildet.
Nun erfolgt die Aufteilung in Stücke von Standardmäßig 50MB.
Abschließend erfolgt auch eine Prüfsumme dieser Teile und die Erstellung einen Zusammenfassungsscript.
Die Dateien 002.vdr ... werden ebenfalls berücksichtigt.
#!/bin/bash
size="50" # Größe in MBytes min. 3
script="zusammen$size.sh"
if [ -d $1 ]; then
cd $1
fi
if [ -r 001.vdr ]; then
echo "Prüfsummenerstellung ... (1)"
find . -maxdepth 1 -type f -exec md5sum -b {} \; -o -maxdepth 1 -type l -exec md5sum -b {} \; | grep -v md5sum | tee md5sum
echo "#!/bin/bash" >$script
echo "" >>$script
if [ ! -d split_${size}M ]; then
mkdir split_${size}M
fi
count=$(ls ???.vdr 2>/dev/null | wc -l)
current=0
for file in `ls ???.vdr`
do
let "current++"
splitcount=$(du -L -B ${size}M $file | cut -f1)
echo "Teile $file ($current/$count) $splitcount Teile"
split --verbose -a 3 -b ${size}m -d $file split_${size}M/$file.
echo "files[$current]=\"$file\"" >>$script
done
cat - >>$script <<EOF
if [ -r \${files[1]}.000 ]; then
dir=""
else
dir="split_${size}M/"
fi
if [ -r \$dir\${files[1]}.000 ]; then
count=\${#files[@]}
for (( loopvar = 1; loopvar <= \$count; loopvar++ )); do
echo "Erstelle \${files[\$loopvar]} (\$loopvar/\$count)"
cat \$dir\${files[\$loopvar]}.* >\${files[\$loopvar]}
done
echo "Überprüfe \$count Datei(en)"
if [ \$(ls ???.vdr 2>/dev/null | wc -l) -eq \$count ]; then
md5sum -c <md5sum
if [ \$? -eq 0 ]; then
echo "Prüfsumme(n) fehlerfrei"
for (( loopvar = 1; loopvar <= \$count; loopvar++ )); do
rm \$dir\${files[\$loopvar]}.*
done
if [ ! -z "\$dir" ]; then
rmdir --ignore-fail-on-non-empty \$dir
fi
else
echo "Fehler bei Prüfsumme, bitte folgende Teile überprüfen:"
if [ -z "\$dir" ]; then
md5sum -c <md5sum.${size}M
else
cd \$dir
md5sum -c <../md5sum.${size}M
cd ..
fi
fi
else
echo "Anzahl der ???.vdr-Dateien ist fehlerhaft! Soll=\$count"
fi
else
echo "Bitte im Verzeichniss der geladenen Teile starten!"
fi
EOF
chmod ug+x $script
echo "Prüfsummenerstellung ...(2)"
cd split_${size}M
find . -type f -exec md5sum -b {} \; | tee ../md5sum.${size}M
cd ..
else
echo "Bitte im Verzeichniss mit 001.vdr starten!"
fi