Bei der Arbeit haben wir 7 oder 8 Festplatten, die wir landesweit versenden, und jede hat einzigartige Etiketten, die nicht fortlaufend sind.
Idealerweise werden die Laufwerke in unseren Desktop eingesteckt, dann werden die Ordner vom Server abgerufen, die dem Laufwerksnamen entsprechen.
Manchmal wird nur eine Festplatte angeschlossen, manchmal mehrere, möglicherweise werden in Zukunft weitere hinzugefügt.
Jedes wird unter /Volumes/ und seiner Kennung gemountet, also zum Beispiel /Volumes/f00, wobei f00 die Kennung ist.
Ich möchte, dass die Datenträger gescannt werden, um zu sehen, ob eines der Laufwerke angeschlossen ist, dann wird der Server überprüft, um zu sehen, ob der Ordner existiert, und wenn ja, werden Ordner und rekursive Ordner kopiert.
Hier ist, was ich bis jetzt habe, es prüft, ob das Laufwerk in Volumes existiert:
#!/bin/sh
#Declare drives in the array
ARRAY=( foo bar long )
#Get the drives from the array
DRIVES=${#ARRAY[@]}
#Define base dir to check
BaseDir="/Volumes"
#Define shared server fold on local mount points
#I plan to use AFP eventually, but for the sake of ease
#using a local mount.
ServerMount="BigBlue"
#Define folder name for where files are to come from
Dispatch="File-Dispatch"
dir="$BaseDir/${ARRAY[${i}]}"
#Loop through each item in the array and check if exists on /Volumes
for (( i=0;i<$DRIVES;i++));
do
dir="$BaseDir/${ARRAY[${i}]}"
if [ -d "$dir" ]; then
echo "$dir exists, you win."
else
echo "$dir is not attached."
fi
done
Was ich nicht herausfinden kann, ist, wie ich die Volumes für den Server überprüfen kann, während ich eine Schleife durch die Festplatteneinhängepunkte durchlaufe.
Ich könnte also etwas tun wie:
#!/bin/sh
#Declare drives, and folder location in arrays
ARRAY=( foo bar long )
#Get the drives from the array
DRIVES=${#ARRAY[@]}
#Define base dir to check
BaseDir="/Volumes"
#Define shared server fold on local mount points
ServerMount="BigBlue
#Define folder name for where files are to come from
Dispatch="File-Dispatch"
dir="$BaseDir/${ARRAY[${i}]}"
#List the contents from server directory into array
ARRAY1=($(ls ""$BaseDir"/"$ServerMount"/"$Dispatch""))
SERVERFOLDER=${#ARRAY1[@]}
echo ${list[@]}
for (( i=0;i<$DRIVES;i++)); (( i=0;i<$SERVERFOLDER;i++));
do
dir="$BaseDir/${ARRAY[${i}]}"
ser="${ARRAY1[${i}]}"
if [ "$dir" =~ "$sir" ]; then
cp "$sir" "$dir"
else
echo "$dir is not attached."
fi
done
Ich weiß, das ist ziemlich falsch... sehr falsch, aber ich hoffe, es gibt Ihnen eine Vorstellung davon, was ich zu erreichen versuche.
Irgendwelche Ideen oder Vorschläge?