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
|
||||
|
||||
@@ -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
|
||||
|
||||
76
rollout.sh
76
rollout.sh
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user