OT: automaticke zalohovani medii

Jaroslav Lukesh lukesh na seznam.cz
Neděle Červen 10 21:14:16 CEST 2018


Dobrý den,

udělal jsem si skript, který po strčení média do mechaniky toto automaticky 
zkopíruje, třeba se vám bude hodit. Po zkopírování ho na chvilku vysune a 
pak zase zajede. Zatím nejsou ošetřené vadné média a chyby čtení. To tam 
dodělám, až na nějakou chybu narazím.

Divoké kopírování přes DD tam je proto, že přes CP trvá řádově 10x až 100x 
déle (nekecám, až tak MS zkurvil linux)

Do /etc/crontab přidejte tento řádek:

* *     * * *   root    /opt/AUTO_DVD_COPY

===== SKRIPT /opt/AUTO_DVD_COPY ========
#!/bin/bash
#  POSTUP kopírování z CD - tento skript bude spouštěný každou minutu

OUTDIR="/media/usb0/DVD_COPY"
STATUS="$OUTDIR/status_disk_archiv"
touch $OUTDIR/ZKOPIROVANE.log

if [ "`mount|grep "/dev/sr0 on /mnt/dvd"`" ]
then    # v 2. běhu se označí že je namontováno
    echo "NAMONTOVANO"
    touch $STATUS.MNT
    CD_ID=`blkid /dev/sr0 | cut -d"\"" -f 2`
else    # v prvním běhu se namontuje
    rm -f $STATUS.MNT
    echo "MONTUJI"
    mount -o iocharset=utf8 /dev/cdrom /mnt/dvd >/dev/null
fi

# a pokud je namontováno, ověří CD a spustí kopírování
if [ ! -f $STATUS.COPY ]; then
if [ -f $STATUS.MNT ]; then
if [ "`cat $OUTDIR/ZKOPIROVANE.log | grep $CD_ID`" ]; then
    echo "CD je již zkopírované"
    #umount /mnt/dvd
else
    echo "CD je připraveno"
    touch $STATUS.COPY
    echo "$CD_ID" > $STATUS.CD_ID    # řádek: /dev/sr0: 
UUID="2013-04-09-23-38-27-00" LABEL="DVD" TYPE="iso9660"
    mkdir "$OUTDIR/$CD_ID"
    echo "$CD_ID"
    echo "KOPIRUJI"
    # cp -aR /mnt/dvd/ "$OUTDIR/$CD_ID"

    # kopie prázdné adresářové struktury
    rsync -a --include '*/' --exclude '*' "/mnt/dvd/" "$OUTDIR/$CD_ID"


    find "/mnt/dvd" -type f |  awk "/^\//{print\"\"substr(\$0,10)}" |
    while read item
    do
        echo "$item"
        dd if="/mnt/dvd/$item" of="$OUTDIR/$CD_ID/$item" bs=32M 
iflag=nonblock oflag=nonblock
    done



    echo "VSE HOTOVO, VYSUNOUT"
    eject /dev/sr0
    echo "`cat $STATUS.CD_ID` `date`" >> $OUTDIR/ZKOPIROVANE.log
    rm -f $STATUS.MNT
    rm -f $STATUS.COPY
    rm -f $STATUS.CD_ID
fi
fi
else
    echo "KOPIROVANI SE JIZ PROVADI"
fi



===== KONEC ========== 



Další informace o konferenci Hw-list