leider bin ich ein blutiger Anfänger in Sachen Entwicklung und hoffe, dass Ihr mir weiterhelfen könnt.
Ich nutze einen Raspberry Pi mit Rasbian (aktuellste Version).
Ich habe ein schönes Shell-Script gefunden, welches die folgenden Aufgaben erfüllt:
USB-Stick wird eingelegt --> Script kopiert alle Daten des Sticks automatisch in einen Ordner --> script umountet den Stick
Das Problem: Der Script nutzt einen festen mount point. Das ist so, weil der Ersteller des Scripts immer Daten einer Gopro kopiert hat (Die Partition heißt immer Gopro und wird dementsprechend als "GOPRO" gemountet.
Dies geht bei mir nicht, weil ich unterschiedliche Karten und unterschiedliche Kameras nutze. Der mount point ist also immer wo anders.
Glücklicherweise nutze ich immer den gleichen Cardreader, welcher eine eigene Seriennummer hat. Was ich tun möchte ist, dass der besagte Stick immer an der gleichen Stelle gemountet wird.
Hat jemand eine idee wie ich das abbilden kann?
Hier der Aufbau des Scripts:
Als erstes gibt es eine UDEV rule (50.sdcopy.rules)
Code: Alles auswählen
# Run Script as a new process when any device is added
KERNEL=="sd[a-z]", SUBSYSTEM=="block", ACTION=="add", RUN+="/bin/su root -c /opt/bin/myfork.sh"
Code: Alles auswählen
#!/bin/bash
date >> myfork.log
setsid /opt/bin/goprosync.sh > setsid.log
Hier das eigentliche Script:
Code: Alles auswählen
#!/bin/bash
# If the script detects the existence of both the source and destination disks
# then the contents ot the GOPRO folder is synchronised with files on the BACKUPDISK folder.
# Ensure that the Partition Label's on all your devices are set accordingly.
## Make sure the script isn't already running from a previous disk connection
################################################################################
if [ `ps -e | grep -c $(basename $0)` -gt 2 ]; then exit 0; fi
################################################################################
sleeptime=5
logfile=/opt/bin/goprosync.log
source=/media/GOPRO
destination=/media/BACKUPDISK
SourceCounter=20
DestinationCounter=20
Recipient=user1@raspberrypi.local
Sender=goprosync@raspberrypi.local
Subject=GoProSync_Result
# Start a new log file and Add the email stuff to the top
############################################################
echo "To: "$Recipient > $logfile
echo "From: "$Sender >> $logfile
echo "Subject: "$Subject >>$logfile
exho " " >>$logfile
echo "==============" >> $logfile
echo "Script Started" >> $logfile
date >> $logfile
# Test if the Source disk is connected.
until [ $SourceCounter -lt 1 ]
do
echo $SourceCounter >> $logfile
if [ -d $source ]
then
echo "== Source Disk Found - Look for the Destination Disk ==" >>$logfile
date >> $logfile
let SourceCounter=0
# Test if the Destination disk is connected.
until [ $DestinationCounter -lt 1 ]
do
echo $DestinationCounter >> $logfile
if [ -d $destination ]
then
echo "== Destination Disk Found - GOPRO Backup Started ==" >> $logfile
rsync -avzh $source $destination >> $logfile 2>&1
echo "Backup Complete" >> $logfile
echo "Unmount the USB disks" >> $logfile
umount $source >> $logfile 2>&1
umount $destination >> $logfile
date >> $logfile
echo "== GoPro Copy Complete ==" >> $logfile
let DestinationCounter=0
else
echo "== Looking for the Destination Disk ==" >>$logfile
sleep $sleeptime
fi
let DestinationCounter=DestinationCounter-1
done
else
echo "== Looking for the Source Disk ==" >>$logfile
sleep $sleeptime
fi
let SourceCounter=SourceCounter-1
done
echo "Script Complete" >> $logfile
echo "===============" >> $logfile
# Send the log as an email
ssmtp user1@raspberrypi < $logfile
Nochmal zusammengefasst was ich tun möchte:
Ich möchte einen SD-Kartenleser immer an der gleichen Stelle mounten.
Bisherige Google-Lösungen haben nicht funktioniert, vielleicht weil die UDEV-Rule auf myfork.sh verweist?
Ich freue mich auf Eure Ideen!
Beste Grüße
Eomer