Hey mein Lieber,
jetzt benötige doch nochmal Hilfe. Ich habe hier zwei unterschiedliche Skripte die immer den oben skizzierten Muster folgen. Das eigentliche Skript konnte ich bereits umwandeln:
Skript 1 (das erstellte von uns "dir", welches ja jetzt zu 100% funktioniert):
Skript 2 (hab ich auf die andere Platte angepasst und funktioniert auch zu 100% ):
- Einziger Unterschied ist USB31/32 und das "AUSWAHLDATUM"
- Achso Skript1/2 sind fertig, die brauchen nicht per schleife zusammengefasst werden, da es für mich so viel sauberer ist wegen dem unterschiedlichen Datum.
jetzt benötige doch nochmal Hilfe. Ich habe hier zwei unterschiedliche Skripte die immer den oben skizzierten Muster folgen. Das eigentliche Skript konnte ich bereits umwandeln:
Skript 1 (das erstellte von uns "dir", welches ja jetzt zu 100% funktioniert):
Rich (BBCode):
#!/bin/bash
touch "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/USB_KRABBI.flag"
echo '3-2' | tee /sys/bus/usb/drivers/usb/bind
sleep 30
AUSWAHLDATUM="2018-12-30"
LOGPFADFINAL="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/Log Final.txt"
LOGPFADTEMP="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/Temp.txt"
LOGFEHLERPFAD="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/Fehler.txt"
timestamp() {
date +"%d.%m.%Y - %T"
}
before=$(date)
deleteflag() {
rm "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/USB_KRABBI.flag"
exit $1
}
# Ziel dev Path auslesen
zielmount=$(mount | grep -E "/volumeUSB2[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
if [ -n "$zielmount" ]; then
# Ziel setzen
if [ -d "/volumeUSB21/usbshare" ]; then
usb="/volumeUSB21/usbshare"
elif [ -d "/volumeUSB22/usbshare" ]; then
usb="/volumeUSB22/usbshare"
else
echo "Ziel nicht gefunden!"
deleteflag 1
fi
else
echo "Zielmount konnte nicht ausgelesen werden!"
deleteflag 2
fi
# Doppelte Absicherung / Abfrage ob usb festgelegt
[ -z "$usb" ] && echo "Ziel konnte nicht festgelegt werden"
# Schleife festlegen
for i in Konzerte Filme Kinderfilme Serien; do
quelle="/volume1/DiskStation/- $i"
ziel="$usb/- $i"
# Wenn Quelle nicht vorhanden, nächste Quelle
[ ! -d "$quelle" ] && continue
cd "$quelle" && find -not \( -path "*@eaDir*" -prune \) -type f \( -name "*.mkv" -or -name "*.avi" -or -name "*.mp4" \) -newermt "$AUSWAHLDATUM" -exec cp -uv --parents "{}" "$ziel" 2>> "$LOGFEHLERPFAD" 1>> "$LOGPFADTEMP" \; | awk 'BEGIN{c=0; do{printf "#"; c++}while(c<120); printf "\n \n"}' >> $LOGPFADTEMP
done
awk 'BEGIN{c=0; do{printf "-"; c++}while(c<27); printf "\n"}' >> $LOGPFADTEMP
echo -e "Diese Daten wurden kopiert:" >> $LOGPFADTEMP
gesamtspeicherplatzderfestplatte() {
df -h --output=size "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
}
belegterspeicherplatz() {
df -h --output=used "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
}
freierspeicherplatz() {
df -h --output=avail "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
}
belegterspeicherplatzinprozent() {
df -h --output=pcent "$usb" | tail --lines +2
}
after=$(date)
timeDiff=$(date -u -d @$(($(date -d "$after" '+%s') - $(date -d "$before" '+%s'))) '+%M:%S')
echo -e """\n""Freier Speicherplatz:"" $(freierspeicherplatz) \t\t "Festplatten-Größe:" $(gesamtspeicherplatzderfestplatte)" >> $LOGPFADTEMP
echo -e "\nBelegter-Speicherplatz:" $(belegterspeicherplatz)" \t "Belegter-Speicherplatz:" $(belegterspeicherplatzinprozent)" >> $LOGPFADTEMP
echo -e "\nScript-Laufzeit:" $timeDiff "Minuten/Sekunden" >> $LOGPFADTEMP
echo -e "\nStartzeitpunkt: $(timestamp)\n" >> $LOGPFADTEMP
tac "$LOGPFADTEMP" | sed 's/^.*-> /-> /' > "$LOGPFADFINAL"
sleep 30
# Platten trennen
umount "$usb" && echo "umount $usb erfolgreich" || echo "umount $usb Fehler"
hdparm -Y "$zielmount" && echo "hdparm -Y $zielmount erfolgreich" || echo "hdparm -Y $zielmount Fehler"
echo 1 > /sys/block/$zielmount/device/delete && echo "echo 1 > /sys/block/$zielmount/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount/device/delete Fehler"
rmdir "$usb" && echo "rmdir $usb erfolgreich" || echo "rmdir $usb Fehler"
sleep 30
echo '3-2' | tee /sys/bus/usb/drivers/usb/unbind
# flag löschen und exit
deleteflag 0
Skript 2 (hab ich auf die andere Platte angepasst und funktioniert auch zu 100% ):
- Einziger Unterschied ist USB31/32 und das "AUSWAHLDATUM"
- Achso Skript1/2 sind fertig, die brauchen nicht per schleife zusammengefasst werden, da es für mich so viel sauberer ist wegen dem unterschiedlichen Datum.
Rich (BBCode):
#!/bin/bash
touch "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/USB_Beger.flag"
echo '3-1' | tee /sys/bus/usb/drivers/usb/bind
sleep 30
AUSWAHLDATUM="2018-12-23"
LOGPFADFINAL="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/Log Final.txt"
LOGPFADTEMP="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/Temp.txt"
LOGFEHLERPFAD="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/Fehler.txt"
timestamp() {
date +"%d.%m.%Y - %T"
}
before=$(date)
deleteflag() {
rm "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/USB_Beger.flag"
exit $1
}
# Ziel dev Path auslesen
zielmount=$(mount | grep -E "/volumeUSB3[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
if [ -n "$zielmount" ]; then
# Ziel setzen
if [ -d "/volumeUSB31/usbshare" ]; then
usb="/volumeUSB31/usbshare"
elif [ -d "/volumeUSB32/usbshare" ]; then
usb="/volumeUSB32/usbshare"
else
echo "Ziel nicht gefunden!"
deleteflag 1
fi
else
echo "Zielmount konnte nicht ausgelesen werden!"
deleteflag 2
fi
# Doppelte Absicherung / Abfrage ob usb festgelegt
[ -z "$usb" ] && echo "Ziel konnte nicht festgelegt werden"
# Schleife festlegen
for i in Konzerte Filme Kinderfilme Serien; do
quelle="/volume1/DiskStation/- $i"
ziel="$usb/- $i"
# Wenn Quelle nicht vorhanden, nächste Quelle
[ ! -d "$quelle" ] && continue
cd "$quelle" && find -not \( -path "*@eaDir*" -prune \) -type f \( -name "*.mkv" -or -name "*.avi" -or -name "*.mp4" \) -newermt "$AUSWAHLDATUM" -exec cp -uv --parents "{}" "$ziel" 2>> "$LOGFEHLERPFAD" 1>> "$LOGPFADTEMP" \; | awk 'BEGIN{c=0; do{printf "#"; c++}while(c<120); printf "\n \n"}' >> $LOGPFADTEMP
done
awk 'BEGIN{c=0; do{printf "-"; c++}while(c<27); printf "\n"}' >> $LOGPFADTEMP
echo -e "Diese Daten wurden kopiert:" >> $LOGPFADTEMP
gesamtspeicherplatzderfestplatte() {
df -h --output=size "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
}
belegterspeicherplatz() {
df -h --output=used "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
}
freierspeicherplatz() {
df -h --output=avail "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
}
belegterspeicherplatzinprozent() {
df -h --output=pcent "$usb" | tail --lines +2
}
after=$(date)
timeDiff=$(date -u -d @$(($(date -d "$after" '+%s') - $(date -d "$before" '+%s'))) '+%M:%S')
echo -e """\n""Freier Speicherplatz:"" $(freierspeicherplatz) \t\t "Festplatten-Größe:" $(gesamtspeicherplatzderfestplatte)" >> $LOGPFADTEMP
echo -e "\nBelegter-Speicherplatz:" $(belegterspeicherplatz)" \t "Belegter-Speicherplatz:" $(belegterspeicherplatzinprozent)" >> $LOGPFADTEMP
echo -e "\nScript-Laufzeit:" $timeDiff "Minuten/Sekunden" >> $LOGPFADTEMP
echo -e "\nStartzeitpunkt: $(timestamp)\n" >> $LOGPFADTEMP
tac "$LOGPFADTEMP" | sed 's/^.*-> /-> /' > "$LOGPFADFINAL"
sleep 30
# Platten trennen
umount "$usb" && echo "umount $usb erfolgreich" || echo "umount $usb Fehler"
hdparm -Y "$zielmount" && echo "hdparm -Y $zielmount erfolgreich" || echo "hdparm -Y $zielmount Fehler"
echo 1 > /sys/block/$zielmount/device/delete && echo "echo 1 > /sys/block/$zielmount/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount/device/delete Fehler"
rmdir "$usb" && echo "rmdir $usb erfolgreich" || echo "rmdir $usb Fehler"
sleep 30
echo '3-1' | tee /sys/bus/usb/drivers/usb/unbind
# flag löschen und exit
deleteflag 0