Commit eed34442 authored by Vitaly Lipatov's avatar Vitaly Lipatov

eterbackup: split repack code

parent 319831b2
...@@ -68,25 +68,46 @@ while read subdir ; do ...@@ -68,25 +68,46 @@ while read subdir ; do
# FIXME: copy dir permissions # FIXME: copy dir permissions
mkdir -p "$DUMPDIR/$reldir" mkdir -p "$DUMPDIR/$reldir"
case $COMMAND in
update)
# workaround for correct internal path # workaround for correct internal path
cd $BACKUPDIR/$reldir/.. || exit cd $BACKUPDIR/$reldir/.. || exit
# packing # packing
echo
echo "Packing $bdir..."
zpaq a "$DUMPDIR/$reldir/$bdir.$STN.zpaq" "$bdir" zpaq a "$DUMPDIR/$reldir/$bdir.$STN.zpaq" "$bdir"
cd - >/dev/null cd - >/dev/null
;; done
repack) }
repack_dump()
{
# Получаем список каталогов, которые мы хотим превратить в файлы
find $BACKUPDIR -depth -maxdepth $DEPTH -mindepth $DEPTH -type d | \
while read subdir ; do
# TODO: не забыть файлы в основном каталоге
# TODO: неизвестно, как сделать нерекурсивным
# /var/log/long/something -> long/something
reldir="${subdir/$BACKUPDIR\//}"
bdir=$(basename "$reldir")
# TODO: improve
if [ "$bdir" = "$EXCLUDEDIR" ] ; then
echo "Skip excluded $bdir"
continue
fi
# TODO: удалённые каталоги будут незамечены и останутся.
# Создавать новый слой, копируя со старого, и оставляя тот старыми датами?
# FIXME: copy dir permissions
mkdir -p "$DUMPDIR/$reldir"
# TODO: тут нужно сделать другой обход каталогов (готовых) # TODO: тут нужно сделать другой обход каталогов (готовых)
# TODO: выделить в отдельную функцию # TODO: выделить в отдельную функцию
# TODO: check it # TODO: check it
zpaq extract "$DUMPDIR/$reldir/$bdir.$STN.zpaq" -to "$DUMPDIR/$reldir/../$bdir.$STZ.zpaq" || exit zpaq purge "$DUMPDIR/$reldir/$bdir.$STN.zpaq" -to "$DUMPDIR/$reldir/../$bdir.$STZ.zpaq" || exit
rm -f $DUMPDIR/$reldir/$bdir.$STN.zpaq rm -f $DUMPDIR/$reldir/$bdir.$STN.zpaq
mv $DUMPDIR/$reldir/../$bdir.$STZ.zpaq $DUMPDIR/$reldir/$bdir.$STZ.zpaq mv $DUMPDIR/$reldir/../$bdir.$STZ.zpaq $DUMPDIR/$reldir/$bdir.$STZ.zpaq
;;
*)
exit 1
esac
done done
} }
...@@ -124,26 +145,31 @@ if [ "$1" = "--exclude" ] ; then ...@@ -124,26 +145,31 @@ if [ "$1" = "--exclude" ] ; then
fi fi
case $COMMAND in case $COMMAND in
update|repack) update)
# from # from
BACKUPDIR=$(realpath -e "$1") || exit BACKUPDIR=$(realpath -e "$1") || exit
# to # to
DUMPDIR=$(realpath -m "$2") DUMPDIR=$(realpath -m "$2")
update_dump update_dump
exit ;;
repack)
# from
BACKUPDIR=$(realpath -e "$1") || exit
# to
DUMPDIR=$(realpath -m "$2")
repack_dump
;; ;;
list) list)
# from # from
BACKUPDIR=$(realpath -e "$1") || exit BACKUPDIR=$(realpath -e "$1") || exit
list_dirs list_dirs
exit
;; ;;
extract) extract)
DUMPDIR=$(realpath -e "$1") || exit DUMPDIR=$(realpath -e "$1") || exit
DESTDIR=$(realpath -m "$2")/$(basename $DUMPDIR) DESTDIR=$(realpath -m "$2")/$(basename $DUMPDIR)
extract_dump extract_dump
exit
;; ;;
-h|--help) -h|--help)
echo $DESCR echo $DESCR
...@@ -160,7 +186,6 @@ case $COMMAND in ...@@ -160,7 +186,6 @@ case $COMMAND in
echo echo
echo "Extract backup:" echo "Extract backup:"
echo " $ eterbackup extract /path/backup /path/to" echo " $ eterbackup extract /path/backup /path/to"
exit
;; ;;
*) *)
echo "$DESCR" >&2 echo "$DESCR" >&2
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment