dvdarchive: links
This commit is contained in:
33
mountext.sh
Executable file
33
mountext.sh
Executable 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
|
||||||
66
rollback.sh
66
rollback.sh
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
set -x
|
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_NAME=`echo $REC_DIR | awk -F/ '{print $(NF-1)}'`
|
||||||
REC_NAME2=`echo $REC_DIR | awk -F/ '{print $(NF)}'`
|
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
|
if [ -f $EXT_DRIVE/vdrhd.num -a -f $REC_DIR/dvd.vdr ]; then
|
||||||
cmp $REC_DIR/dvd.vdr $EXT_DRIVE/vdrhd.num
|
cmp $REC_DIR/dvd.vdr $EXT_DRIVE/vdrhd.num
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
svdrpsend.pl MESG "Zur<75>ckholen gestarted"
|
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
|
if [ -d "$EXT_DIR" ]; then
|
||||||
EXT_DIR_PAR=$(echo $EXT_DIR | awk '{a=$0; gsub(/\/[^\/]*\.rec/,"",$a);print $a}')
|
EXT_DIR_PAR=$(echo $EXT_DIR | awk '{a=$0; gsub(/\/[^\/]*\.rec/,"",$a);print $a}')
|
||||||
echo "rsync $EXT_DIR/ $REC_DIR/" >> /tmp/rollout.log
|
log "rsync $EXT_DIR/ $REC_DIR/"
|
||||||
echo "recname $REC_NAME $REC_NAME2" >> /tmp/rollout.log
|
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/
|
rsync -av --include /[0.9]*\.vdr/ $EXT_DIR/ $REC_DIR/
|
||||||
if [ $? -eq 0 ] ; then
|
if [ $? -eq 0 ] ; then
|
||||||
|
echo rm $REC_DIR/dvd.vdr
|
||||||
rm $REC_DIR/dvd.vdr
|
rm $REC_DIR/dvd.vdr
|
||||||
|
echo rm -r $EXT_DIR_PAR
|
||||||
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
|
umount $EXT_DRIVE
|
||||||
svdrpsend.pl MESG "Zur<75>ckholen abgeschlossen"
|
svdrpsend.pl MESG "Zur<75>ckholen abgeschlossen"
|
||||||
exit
|
exit
|
||||||
else
|
else
|
||||||
svdrpsend.pl MESG "Zur<75>ckholen fehlgeschlagen"
|
svdrpsend.pl MESG "Zur<75>ckholen fehlgeschlagen"
|
||||||
fi
|
fi
|
||||||
|
|||||||
76
rollout.sh
76
rollout.sh
@@ -2,35 +2,63 @@
|
|||||||
|
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
echo $1
|
SRC=$1
|
||||||
DEST=/media/hdext
|
DEST=/media/hdext
|
||||||
vdrarchivedir=/etc/vdr/archive
|
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
|
#ls -l $DEST
|
||||||
if [ -f $DEST/vdrhd.num -a -d "$1" ]; then
|
if [ -f $DEST/vdrhd.num ]; then
|
||||||
hdnum=$(cat $DEST/vdrhd.num | head -n 1)
|
if [ -d $SRC ]; then
|
||||||
echo nice -n 19 rsync -av "$SRC_DIR" "$DEST"
|
hdnum=$(cat $DEST/vdrhd.num | head -n 1)
|
||||||
nice -n 19 rsync -av "$SRC_DIR" "$DEST"
|
SRC_DIR2=$(echo $SRC_DIR | sed "s/\/$//g")
|
||||||
if [ $? -eq 0 ] ; then
|
echo nice -n 19 rsync -av "$SRC_DIR2" "$DEST/"
|
||||||
find "$SRC_DIR" -name *.rec -exec cp $DEST/vdrhd.num {}/dvd.vdr \;
|
#exit
|
||||||
find $1 -name [0-9]*.vdr -exec rm {} \;
|
nice -n 19 rsync -av --progress "$SRC_DIR2" "$DEST/"
|
||||||
free=$( df -h | grep $DEST | awk '{print $4}' )
|
if [ $? -eq 0 ] ; then
|
||||||
[ -d $vdrarchivedir ] || mkdir -p $vdrarchivedir
|
#mkdir "$DEST/links"
|
||||||
echo "Hd:$hdnum Frei:$free ($(date))" > $vdrarchivedir/hd$hdnum.free
|
cd $DEST/links
|
||||||
umount $DEST
|
echo ln -s ../$REC_DIR2/$REC_DIR
|
||||||
svdrpsend.pl MESG "Auslagern abgeschlossen. $free frei"
|
ln -s ../$REC_DIR2/$REC_DIR
|
||||||
exit
|
cd -
|
||||||
fi
|
find "$SRC_DIR" -name *.rec -exec cp $DEST/vdrhd.num {}/dvd.vdr \;
|
||||||
else
|
find $1 -name "[0-9]*.vdr" -exec rm {} \;
|
||||||
svdrpsend.pl MESG "keine Auslagerfestplatte"
|
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
|
fi
|
||||||
|
|
||||||
free=$( df -h | grep $DEST | awk '{print $4}' )
|
free=$( df -h | grep $DEST | gawk '{print $4}' )
|
||||||
umount $DEST
|
sudo umount $DEST
|
||||||
svdrpsend.pl MESG "Auslagern fehlgeschlagen. $free frei"
|
sleep 15
|
||||||
|
svdrpsend.pl -p $SVDRPORT MESG "Auslagern fehlgeschlagen. $free frei"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/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"
|
||||||
|
|||||||
Reference in New Issue
Block a user