dvdarchive: links

This commit is contained in:
Marc Hoppe
2012-12-16 18:43:05 +01:00
parent d7a31a9c8a
commit 5cc14d382a
4 changed files with 146 additions and 32 deletions

33
mountext.sh Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
mountpoint=$1
[ -z $mountpoint ] && mountpoint=/media/hdext
#disks=$(fdisk -l | grep ^/dev/sd | gawk '{print $1}')
disks=$(cat /proc/partitions | egrep "sd[a-z][0-9]" | gawk '{printf("/dev/%s\n", $4)}')
mounted=$(mount | grep /dev/sd | gawk '{print $1}')
for d in $disks; do
found=0
for m in $mounted; do
if [ $d == $m ]; then
found=1
break
fi
done
if [ $found == 0 ]; then
whoami
echo "not found: $d -> mounting to $mountpoint"
if [ "$mountpoint" != "" ]; then
sudo mount $d $mountpoint
break
fi
fi
done
mounted=$(mount | grep -c $mountpoint )
if [ $mounted == 0 ]; then
exit 1
fi
exit 0

View File

@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
set -x
@@ -9,25 +9,77 @@ VDR_DIR=`echo $REC_DIR | awk '{a=$0; gsub(/\/[^\/]*\.rec/,"",$a);print $a}'`
REC_NAME=`echo $REC_DIR | awk -F/ '{print $(NF-1)}'`
REC_NAME2=`echo $REC_DIR | awk -F/ '{print $(NF)}'`
mount $EXT_DRIVE
function log {
echo $1 >> /tmp/rollout.log
}
function findRecInLinks {
local MOUNTPOINT=$1
local NAME=$2
local DIR="$(find "${MOUNTPOINT}/links/" -maxdepth 2 -name "$NAME")"
funcResult=$DIR
}
# find recording on dvd
function findRec {
local MOUNTPOINT=$1
local NAME=$2
# try in directory 'links'
findRecInLinks $MOUNTPOINT $NAME
local DIR=$funcResult
if [ -z "$DIR" ]; then
# not found in links - try root
DIR="$(find "${MOUNTPOINT}/" -maxdepth 2 -name "$NAME")"
# if not found, umount
if [ -z "$DIR" ]; then
log error "wrong dvd in drive / recording not found on dvd"
umount "$MOUNTPOINT" || { log error "dvd umount error (at: wrong dvd in drive / recording not found on dvd)"; exit 1; }
# If wanted, eject dvd
[ $EJECTWRONG -eq 1 ] && { eject "$DEVICE"; }
exit 3
fi
else
local LINKTARGET=$(readlink $DIR)
DIR=$(echo ${MOUNTPOINT}/links/$LINKTARGET)
fi
funcResult=$DIR
}
#mount $EXT_DRIVE
mountext.sh $EXT_DRIVE
if [ -f $EXT_DRIVE/vdrhd.num -a -f $REC_DIR/dvd.vdr ]; then
cmp $REC_DIR/dvd.vdr $EXT_DRIVE/vdrhd.num
if [ $? -eq 0 ]; then
svdrpsend.pl MESG "Zur<75>ckholen gestarted"
# EXT_DIR="$(find ${EXT_DRIVE} -name $REC_NAME)"
EXT_DIR="$(find ${EXT_DRIVE} -name $REC_NAME2)"
findRec $EXT_DRIVE $REC_NAME
EXT_DIR=$funcResult
log "Dir: $EXT_DIR"
#EXT_DIR="$(find ${EXT_DRIVE} -name $REC_NAME)"
#EXT_DIR="$(find ${EXT_DRIVE} -name $REC_NAME2)"
if [ -d "$EXT_DIR" ]; then
EXT_DIR_PAR=$(echo $EXT_DIR | awk '{a=$0; gsub(/\/[^\/]*\.rec/,"",$a);print $a}')
echo "rsync $EXT_DIR/ $REC_DIR/" >> /tmp/rollout.log
echo "recname $REC_NAME $REC_NAME2" >> /tmp/rollout.log
log "rsync $EXT_DIR/ $REC_DIR/"
log "recname $REC_NAME $REC_NAME2"
echo rsync -av --include /[0.9]*\.vdr/ $EXT_DIR/ $REC_DIR/
rsync -av --include /[0.9]*\.vdr/ $EXT_DIR/ $REC_DIR/
if [ $? -eq 0 ] ; then
echo rm $REC_DIR/dvd.vdr
rm $REC_DIR/dvd.vdr
echo rm -r $EXT_DIR_PAR
rm -r $EXT_DIR_PAR
findRecInLinks $EXT_DRIVE $REC_NAME
LINK=$funcResult
if [ ! -z $LINK ]; then
echo rm $LINK
rm $LINK
fi
#exit
umount $EXT_DRIVE
svdrpsend.pl MESG "Zur<75>ckholen abgeschlossen"
exit
exit
else
svdrpsend.pl MESG "Zur<75>ckholen fehlgeschlagen"
fi

View File

@@ -2,35 +2,63 @@
set -x
echo $1
SRC=$1
DEST=/media/hdext
vdrarchivedir=/etc/vdr/archive
svdrpsend.pl MESG "Auslagern gestartet"
SVDRPORT=2001
svdrpsend -p $SVDRPORT MESG "Auslagern gestartet"
bash -x /usr/local/bin/mountext.sh $DEST
if [ $? != 0 ]; then
svdrpsend -p $SVDRPORT MESG "Kann festplatte nicht mounten"
exit
fi
sleep 5
SRC_DIR=$(echo $SRC | gawk '{a=$0; gsub(/\/[^\/]*\.rec/,"",$a);print $a}')
REC_DIR=$(echo $SRC | sed "s/\/$//g" | gawk -F '/' '{print $NF;}')
REC_DIR2=$(echo $SRC_DIR | sed "s/\/$//g" | gawk -F '/' '{print $NF;}')
echo RECD:: $REC_DIR2/$REC_DIR
mount
mount $DEST
SRC_DIR=`echo $1 | awk '{a=$0; gsub(/\/[^\/]*\.rec/,"",$a);print $a}'`
echo DEST: $DEST
#ls -l $DEST
if [ -f $DEST/vdrhd.num -a -d "$1" ]; then
hdnum=$(cat $DEST/vdrhd.num | head -n 1)
echo nice -n 19 rsync -av "$SRC_DIR" "$DEST"
nice -n 19 rsync -av "$SRC_DIR" "$DEST"
if [ $? -eq 0 ] ; then
find "$SRC_DIR" -name *.rec -exec cp $DEST/vdrhd.num {}/dvd.vdr \;
find $1 -name [0-9]*.vdr -exec rm {} \;
free=$( df -h | grep $DEST | awk '{print $4}' )
[ -d $vdrarchivedir ] || mkdir -p $vdrarchivedir
echo "Hd:$hdnum Frei:$free ($(date))" > $vdrarchivedir/hd$hdnum.free
umount $DEST
svdrpsend.pl MESG "Auslagern abgeschlossen. $free frei"
exit
fi
else
svdrpsend.pl MESG "keine Auslagerfestplatte"
if [ -f $DEST/vdrhd.num ]; then
if [ -d $SRC ]; then
hdnum=$(cat $DEST/vdrhd.num | head -n 1)
SRC_DIR2=$(echo $SRC_DIR | sed "s/\/$//g")
echo nice -n 19 rsync -av "$SRC_DIR2" "$DEST/"
#exit
nice -n 19 rsync -av --progress "$SRC_DIR2" "$DEST/"
if [ $? -eq 0 ] ; then
#mkdir "$DEST/links"
cd $DEST/links
echo ln -s ../$REC_DIR2/$REC_DIR
ln -s ../$REC_DIR2/$REC_DIR
cd -
find "$SRC_DIR" -name *.rec -exec cp $DEST/vdrhd.num {}/dvd.vdr \;
find $1 -name "[0-9]*.vdr" -exec rm {} \;
find $1 -name "[0-9]*.ts" -exec rm {} \;
free=$( df -h | grep $DEST | gawk '{print $4}' )
[ -d $vdrarchivedir ] || mkdir -p $vdrarchivedir
echo "Hd:$hdnum Frei:$free ($(date))" > $vdrarchivedir/hd$hdnum.free
sudo umount $DEST
sleep 15
svdrpsend -p $SVDRPORT MESG "Auslagern abgeschlossen. $free frei"
exit
fi
else
svdrpsend -p $SVDRPORT MESG "Quellverzeichnis existert nicht"
fi
else
svdrpsend -p $SVDRPORT MESG "keine Auslagerfestplatte"
fi
free=$( df -h | grep $DEST | awk '{print $4}' )
umount $DEST
svdrpsend.pl MESG "Auslagern fehlgeschlagen. $free frei"
free=$( df -h | grep $DEST | gawk '{print $4}' )
sudo umount $DEST
sleep 15
svdrpsend.pl -p $SVDRPORT MESG "Auslagern fehlgeschlagen. $free frei"

View File

@@ -1,3 +1,4 @@
#!/bin/sh
echo "/usr/local/bin/rollout.sh '$1' 2>&1 >> /tmp/vdrcommands.log" | at now
#echo "/usr/local/bin/rollout.sh '$1' 2>&1 >> /tmp/vdrcommands.log" | at now
/usr/local/bin/queue "/usr/local/bin/rollout.sh $1 2>&1 >> /tmp/vdrcommands.log"