zalohovani tar gzp bzip2

Petr "Qaxi" Klima qaxi na seznam.cz
Pátek Červenec 23 12:46:27 CEST 2004


> s tarem a gzipem pravdepodobne ne-e, jelkoz tar nepodporuje multi-volume a
> zipovani dohromady. (alespon ve verzi mnou uzivane - tar (GNU tar)
> 1.13.93). opacny postup, totiz tarovat na urcitou delku a pajpovat to
> gzipu - zase nepocita s kompresi jiz pri pocitani delky.. tak snad nejaky
> jiny lepsi archivacni softik, na sourceforge jich je urcite dost ;-)

   sh.


my dirty tricks 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#!/bin/bash


## in KB
VOLUMESIZE=${1}

export WHERE2TAR="${2}"
export WHERE2TARDIR=`dirname ${WHERE2TAR} `
export WHERE2TARNAME=`basename ${WHERE2TAR} .tar`
export WHERE2TARTMP="$WHERE2TARDIR/${WHERE2TARNAME}.vollast.tar"

PRG=`basename $0`
export SEMAFOR="/tmp/run$PRG.$$"
CHANGE_SCRIPT="/tmp/chsc$PRG.$$"

shift
shift

touch $SEMAFOR
echo "1" >$SEMAFOR

touch $CHANGE_SCRIPT
chmod 700 ${CHANGE_SCRIPT}

###############################################
cat >$CHANGE_SCRIPT <<"PokusSChangerem"
#!/bin/bash
#
# helper script for mktarzal
#
# needs those Env. Var.
#
#  WHERE2TAR, WHERE2TARTMP, SEMAFOR
#

VOLUME_NO=`cat $SEMAFOR`

VOLUME=`printf ".vol%03d" $VOLUME_NO`

mv -f $WHERE2TARTMP "$WHERE2TARDIR/$WHERE2TARNAME$VOLUME.tar"
cp -f "$WHERE2TARDIR/$WHERE2TARNAME.vollast.list" \
    "$WHERE2TARDIR/$WHERE2TARNAME$VOLUME.list"

cat </dev/null > "$WHERE2TARDIR/$WHERE2TARNAME.vollast.list"

VOLUME_NO=`expr $VOLUME_NO + 1`
echo $VOLUME_NO >$SEMAFOR

gzip -f "$WHERE2TARDIR/$WHERE2TARNAME$VOLUME.tar"

PokusSChangerem
###############################################

tar -cvMlf "${WHERE2TARTMP}" -L "${VOLUMESIZE}" \
    -F "bash -x ${CHANGE_SCRIPT}" ${@} | tee 
"$WHERE2TARDIR/$WHERE2TARNAME.vollast.list" \
        2>"$WHERE2TARDIR/$WHERE2TARNAME.err"

TAR_STATUS="$?"

[ "${TAR_STATUS}" -ne "0" ] && {
        echo " ${0} failed making backup ${WHERE2TARTMP}" >&2
        echo >&2
        cat "$WHERE2TARDIR/$WHERE2TARNAME.err" >$2
}

gzip -f "${WHERE2TARTMP}"

rm -f ${SEMAFOR} ${WHERE2TARTMP} ${CHANGE_SCRIPT}"





Další informace o konferenci Linux