Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.
Quoted
Original von iso
Hallo,
ich glaube, ich verstehe die Frage gar nicht. "import"... Also Aufnahmen einer fremden Platte auf die eingene kopieren, dann kommt die fremde weg?
Quoted
Original von iso
Die Verzeichnisstruktur stimmt nicht... Wie soll ein Script entscheiden, ob eine Serie aus USA oder Ungarn kommt? Oder ob das überhaupt eine Serie ist? Ich habe auch mehrere Einträge in einem Oder, der z.B. "Steven Seagal" oder "Tarantino" heißt. Könnte auch eine Serie sein...
Wenn das eine einmalige Sache ist, ist das kopieren per Hand vielleicht einfacher.
This post has been edited 1 times, last edit by "iso" (Aug 25th 2010, 2:05pm)
Quoted
Original von iso
Nach reiflicher Überlegung...
Wenn Du die fremde Platte in Dein System einbindest, hast Du z.B.:
sda1: boot
sda2: zeug
sda3: video.00
sdb1: video.01
sdc1: video.02
sdd1: fremd
Dann müsste das Script 1. herausfinden: auf welcher physik befinde ich mich grad,
Quoted
2. welche physik kommt als Ziel in Frage, 3. wie ist der genaue Pfad auf jeder Zielphysik, der für Aufnahmen benutzt werden kann,
Quoted
4. wie ist die Auslastung der physik -> nehme die mit dem geringsten Füllstand, wenn der Rest für die Daten im aktuellen Verzeichnis ausreicht.
Quoted
Wenn das mindestens 1x die Woche vorkommt, mache ich mir mehr Gedanken (schon, weil ich über Deinen Server tauschen kann). Wenn nicht...
PS: willst Du nur einige Aufnahmen der fremden Platte, oder prinzipiell alle?
|
|
Source code |
1 2 3 4 5 |
-a, --archive Genau wie -dpR. ... -d, --no-dereference nie symbolischen Verknüpfungen folgen. -p, --preserve Datei-Attribute wenn möglich erhalten. -R, --recursive Rekursives Kopieren von Verzeichnissen. |
This post has been edited 1 times, last edit by "sigiberlin" (Aug 25th 2010, 2:39pm)
This post has been edited 1 times, last edit by "iso" (Aug 25th 2010, 2:50pm)
This post has been edited 3 times, last edit by "Robsta" (Aug 25th 2010, 4:51pm)
Quoted
Original von iso
Also... Das fehlte mir bis jetzt. Mein VDR arbeitet auch mit mehreren Platten, allerdings sind diese mit LVM in Reihe geschaltet.
Deine Umgebung sieht also so aus:
- VDR greift auf /video.00 zu
- in /vidoe.00 gibt es Verzeichnisse, die symlinks zu Dateien in (z.B.) /vido.04 enthalten
Wenn das richtig ist, stellen sich mir folgende Fragen:
1. Warum übergibst Du dem VDR beim start nicht mehrere video-verzeichnisse?
Quoted
2. Wie kommen da überhaupt symlinks hin? Um nach /video.04 zu schreiben, muss der VDR das Verzeichnis doch kennen... Wenn er das tut, kann er nicht nur dahin schreiben, sondern natürlich auch lesen.
Quoted
Entschuldige die vielen Fragen, aber bevor ich was schreibe, muss ich verstehen, was eigentlich los ist...
PS: das cp -a kopiert natürlich das ganze Verzeichnis, ersetzt also die symlinks. Es ist also auf dem Ziel alles vorhanden, was Du brauchst. Das geht glaube ich auch im MC, nach F5 kommt ein Dialog mit Abfrage. Allerdings dauert das kopieren natürlich ein paar Minuten, ein Symlink ist da schneller.
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
#!/bin/sh
# Name: linkvid_sigi.sh,
# fabriziert (anders kann man das wohl nicht nennen) von Martin Rothbächer,
# zum groessten Teil basierend auf linkvid.sh, Bestandteil von Gen2VDR von Helmut Auer.
# Parameter 1: das Quellverzeichnis (z.B. /mnt/fremde/Hope_and_Faith)
# Parameter 2: das Zielverzeichnis (z.B. /video.04/Serien/USA/Hope_and_Faith)
#
# Aufruf: linkvid_sigi.sh <Quelle> <Ziel>
#
# Zuerst wird eine temporaere Datei (/tmp/timestamp) angelegt, anhand derer
# beim spaeteren Verlinken durch Altersvergleich festgestellt wird, ob die zu
# verlinkende Aufnahme eine der kopierten Aufnahmen ist. Diese Datei wird am
# Ende wieder geloescht.
#
# Dann wird der gesamte Inhalt von $1 (Quellverzeichnis) nach $2 (Zielverzeichnis)
# kopiert. Das Zielverzeichnis wird, wenn noetig, samt Pfad angelegt.
#
# Die Aufnahmen vom Zielverzeichnis werden, so sie denn juenger sind als die temporaere
# Datei, nach /video.00 verlinkt. Ein dem Zielverzeichnis analoger Verzeichnisbaum
# wird hierbei an dieser Stelle angelegt, so er noch nicht vorhanden ist.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# !
# Es ist eklatant wichtig, dass die /video.nn - Verzeichnisse in der obersten Verzeichnisebene liegen!!!!
# !
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SOURCE_PATH="$1"
BASE_PATH="$2"
MEDIA_PATH="/video.00/"$(echo "$BASE_PATH" | awk -F/ '{for (i=3; i<=NF; i++) { printf("%s/", $i)} printf("\n")}')
VID_FLS="/tmp/~vidfls"
TS="/tmp/timestamp"
touch $TS
[ ! -d $BASE_PATH ] && mkdir -p $BASE_PATH # Zielverzeichnis anlegen, wenn noetig
[ ! -d $MEDIA_PATH ] && mkdir -p $MEDIA_PATH # Linkverzeichnis anlegen, wenn noetig
cp -R $SOURCE_PATH* $BASE_PATH
SOURCE_PATH="$(echo "$BASE_PATH" | sed -e "s:/$::")"
# echo "SOURCE_PATH: "$SOURCE_PATH # Ich putze hier nur.....
SOURCE_BASE="$(echo "$SOURCE_PATH" | sed -e "s:.*/::")"
# echo "SOURCE_BASE: "$SOURCE_BASE # Ich putze hier nur.....
for i in $(find $MEDIA_PATH -name "*.rec") ; do
LNK=$(readlink "$i" | grep "^${SOURCE_PATH}/")
# echo "LNK: "$LNK # Ich putze hier nur.....
[ "$LNK" != "" ] && rm "$i"
done
find "$SOURCE_PATH" -name "[12]*.rec" -type d | sort > $VID_FLS
echo "Suche Aufnahmen unter $SOURCE_PATH ..."
for i in $(find "$SOURCE_PATH" -name "[12]*.rec" -type d | sort) ; do
echo "$i"
if [ -f "${i}/001.vdr" ] && [ "${i}/001.vdr" -nt $TS ] ; then
DN=$(dirname "$i" | sed -e "s:^$SOURCE_PATH::" | sed -e "s:$VIDEO/:/:")
# echo "DN: "$DN # Ich putze hier nur.....
BN=$(basename "${i}")
# echo "BN: "$BN # Ich putze hier nur.....
mkdir -p $MEDIA_PATH/$DN 2> /dev/null
if [ -f $MEDIA_PATH/$DN/$BN ] ; then
echo "$MEDIA_PATH/$DN/$BN bereits vorhanden"
else
echo "Verlinke $i nach $MEDIA_PATH/$DN"
ln -s "$i" "$MEDIA_PATH/$DN"
fi
fi
done
[ ! -d $MEDIA_PATH ] && mkdir -p $MEDIA_PATH # ?
rm $TS
touch /video.00/.update
|