Vdrsplit
Aus VDR Wiki
(Unterschied zwischen Versionen)
HFlor (Diskussion | Beiträge) (Neuer Beitrag) |
HFlor (Diskussion | Beiträge) K (→Funktion) |
||
Zeile 30: | Zeile 30: | ||
if [ -r 001.vdr ]; then | if [ -r 001.vdr ]; then | ||
echo "Prüfsummenerstellung ... (1)" | echo "Prüfsummenerstellung ... (1)" | ||
− | find . -maxdepth 1 -type f -exec md5sum -b {} \; -o -maxdepth 1 -type l -exec | + | find . -maxdepth 1 -type f -exec md5sum -b {} \; -o -maxdepth 1 -type l -exec md5sum -b {} \; | grep -v md5sum | tee md5sum |
− | md5sum -b {} \; | grep -v md5sum | tee md5sum | + | |
echo "#!/bin/bash" >$script | echo "#!/bin/bash" >$script | ||
echo "" >>$script | echo "" >>$script |
Version vom 29. Juni 2006, 13:05 Uhr
Beschreibung
Autor: Hardy Flor
Dieses Script ist zur sicheren Übertragung der großen Aufnamedateien durch die Trennung in mehrere kleine Teile gedacht.
Voraussetzungen
Es werden die folgende Programme benötigt:
* md5sum * split
Funktion
Es wird in dem aktuellen bzw. als Parameter angegebenen Verzeichniss (Aufname) 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