Commit 2e2d88a6 authored by Vitaly Lipatov's avatar Vitaly Lipatov

commit last changes

parent eed34442
Check https://github.com/bup/bup
https://wiki.thingsandstuff.org/Backup
rename to eterpack
Предел размера файла архива. Также начинать вести новый, если много инкрементов. Предел размера файла архива. Также начинать вести новый, если много инкрементов.
Хранить на gluster в garbage. Файлы брать с nun (там и проводить операции). Хранить на gluster в garbage. Файлы брать с nun (там и проводить операции).
Шифровать с помощью encfs. Шифровать с помощью encfs.
...@@ -10,6 +15,8 @@ ...@@ -10,6 +15,8 @@
Возможно, можно просто удалять ненужные? Проверить, как работает удаление файлов Возможно, можно просто удалять ненужные? Проверить, как работает удаление файлов
при добавлении архив. при добавлении архив.
Удалять просто сравнением списков каталогов?
Нужен тест для zpaq. Нужен тест для zpaq.
Нужен тест для архиватора, что он всё помещает, а потом восстанавливает. Нужен тест для архиватора, что он всё помещает, а потом восстанавливает.
...@@ -18,6 +25,12 @@ ...@@ -18,6 +25,12 @@
Сохранять контрольные суммы по архивам, проверять целостность. Сохранять контрольные суммы по архивам, проверять целостность.
Проблемы с сохранением owner/group и других свойств файла. Автор пишет, что добавить не сложно, но не знаю.
Отдельно сохранять структуру? Это будет двойной просмотр.
Для режима, когда локально архив не сохраняется
zpaq: If the index is present but part 1 is not, then it is assumed that all of the parts have been moved. The number of versions in the index is counted and a new part is created using the next available version number, and the index is updated.
rsnapshot - можно ли приспособить для локальных копий? rsnapshot - можно ли приспособить для локальных копий?
Должен быть только read-only доступ с места бэкапа. Должен быть только read-only доступ с места бэкапа.
......
...@@ -22,6 +22,21 @@ STN="???" ...@@ -22,6 +22,21 @@ STN="???"
DESCR="eterbackup version 0.1 (c) Etersoft 2015" DESCR="eterbackup version 0.1 (c) Etersoft 2015"
print_message()
{
local DESC="$1"
shift
echo "$DESC in $(basename $0): $@"
}
# Print error message and stop the program
fatal()
{
print_message Error "$@" >&2
exit 1
}
list_dirs() list_dirs()
{ {
#echo "List dirs from $BACKUPDIR, with $EXCLUDEDIR exclude." #echo "List dirs from $BACKUPDIR, with $EXCLUDEDIR exclude."
...@@ -54,7 +69,7 @@ while read subdir ; do ...@@ -54,7 +69,7 @@ while read subdir ; do
# /var/log/long/something -> long/something # /var/log/long/something -> long/something
reldir="${subdir/$BACKUPDIR\//}" reldir="${subdir/$BACKUPDIR\//}"
bdir=$(basename "$reldir") bdir="$(basename "$reldir")"
# TODO: improve # TODO: improve
if [ "$bdir" = "$EXCLUDEDIR" ] ; then if [ "$bdir" = "$EXCLUDEDIR" ] ; then
...@@ -69,7 +84,7 @@ while read subdir ; do ...@@ -69,7 +84,7 @@ while read subdir ; do
mkdir -p "$DUMPDIR/$reldir" mkdir -p "$DUMPDIR/$reldir"
# workaround for correct internal path # workaround for correct internal path
cd $BACKUPDIR/$reldir/.. || exit cd "$BACKUPDIR/$reldir/.." || exit
# packing # packing
echo echo
echo "Packing $bdir..." echo "Packing $bdir..."
...@@ -80,18 +95,20 @@ done ...@@ -80,18 +95,20 @@ done
repack_dump() repack_dump()
{ {
fatal "Do not realized jet!"
# Получаем список каталогов, которые мы хотим превратить в файлы # Получаем список каталогов, которые мы хотим превратить в файлы
find $BACKUPDIR -depth -maxdepth $DEPTH -mindepth $DEPTH -type d | \ find "$BACKUPDIR" -depth -maxdepth $DEPTH -mindepth $DEPTH -type d | \
while read subdir ; do while read subdir ; do
# TODO: не забыть файлы в основном каталоге # TODO: не забыть файлы в основном каталоге
# TODO: неизвестно, как сделать нерекурсивным # TODO: неизвестно, как сделать нерекурсивным
# /var/log/long/something -> long/something # /var/log/long/something -> long/something
reldir="${subdir/$BACKUPDIR\//}" reldir="${subdir/$BACKUPDIR\//}"
bdir=$(basename "$reldir") bdir="$(basename "$reldir")"
# TODO: improve # TODO: improve
if [ "$bdir" = "$EXCLUDEDIR" ] ; then if [ "$bdir" = "$EXCLUDEDIR" ] ; then
echo
echo "Skip excluded $bdir" echo "Skip excluded $bdir"
continue continue
fi fi
...@@ -106,18 +123,18 @@ while read subdir ; do ...@@ -106,18 +123,18 @@ while read subdir ; do
# TODO: выделить в отдельную функцию # TODO: выделить в отдельную функцию
# TODO: check it # TODO: check it
zpaq purge "$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"
done done
} }
extract_dump() extract_dump()
{ {
# CHECKME: always exists 000? # CHECKME: always exists 000?
find $DUMPDIR -type f -name "*.$STZ.zpaq" | \ find "$DUMPDIR" -type f -name "*.$STZ.zpaq" | \
while read paqfile ; do while read paqfile ; do
relfile="${paqfile/$DUMPDIR\//}" relfile="${paqfile/$DUMPDIR\//}"
reldir=$(dirname "$relfile") reldir="$(dirname "$relfile")"
# FIXME: copy dir permissions # FIXME: copy dir permissions
# TODO: хранить структуру каталогов отдельно, сразу и проверка? # TODO: хранить структуру каталогов отдельно, сразу и проверка?
mkdir -p "$DESTDIR/$reldir" || exit mkdir -p "$DESTDIR/$reldir" || exit
...@@ -147,28 +164,29 @@ fi ...@@ -147,28 +164,29 @@ fi
case $COMMAND in case $COMMAND in
update) 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
;; ;;
repack) repack)
# from # from
BACKUPDIR=$(realpath -e "$1") || exit BACKUPDIR="$(realpath -e "$1")" || exit
# to # to
DUMPDIR=$(realpath -m "$2") DUMPDIR="$(realpath -m "$2")"
repack_dump repack_dump
;; ;;
list) list)
# from # from
BACKUPDIR=$(realpath -e "$1") || exit BACKUPDIR="$(realpath -e "$1")" || exit
list_dirs list_dirs
;; ;;
extract) extract)
DUMPDIR=$(realpath -e "$1") || exit DUMPDIR="$(realpath -e "$1")" || exit
DESTDIR=$(realpath -m "$2")/$(basename $DUMPDIR) DESTDIR=
[ -n "$2" ] && DESTDIR="$(realpath -m "$2")/$(basename $DUMPDIR)"
extract_dump extract_dump
;; ;;
-h|--help) -h|--help)
......
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