Project

General

Profile

Backup » History » Version 17

« Previous - Version 17/24 (diff) - Next » - Current version
Laurent GUERBY, 04/28/2016 11:38 PM


Backup

Liens

BackupPC

Attic

Borg

Borg script

Note 20160428 : le script est probablement inutilen cf https://github.com/borgbackup/borg/issues/994

Pour une machine qui va etre eteinte et rallumée de maniere non controlable.

Creation initiale avec un user normal capable de ssh sur MACHINE:PORT :

borg init --encryption keyfile ssh://USER@MACHINE:PORT/some/where/borg/NICK-repo

Et setup cron + script :

# crontab -l
@reboot /root/cron-borg.sh

# cat /root/cron-borg.sh
#!/bin/bash
export LANG=en_US.UTF-8
mkdir -p /root/borg >& /dev/null

sleep 300
echo === start === $(date) >> /root/borg/cron.log

NICK=myhost
REPO=ssh://USER@MACHINE:PORT/some/where/borg/${NICK}-repo
export BORG_PASSPHRASE=lalalala

if [ -f /root/borg/stamp ]; then
    STAMP=$(cat /root/borg/stamp)
    borg break-lock $REPO
else
    STAMP=$(date '+%Y%m%dT%H%M%S')
    if [ -f /root/borg/previous-stamp ]; then
      PREVIOUS_STAMP=$(cat /root/borg/previous-stamp)
      while [ "${STAMP%T*}" = "${PREVIOUS_STAMP%T*}" ]; do
              STAMP=$(date '+%Y%m%dT%H%M%S')
              echo === delay === $(date) >> /root/borg/cron.log
          sleep 1h
      done
    fi
    echo $STAMP > /root/borg/stamp
fi

borg create --compression lz4 --stats --verbose \
   --exclude /root/borg --exclude '/home/*/.cache' --exclude-caches --one-file-system \
   ${REPO}::${NICK}-$STAMP / >> /root/borg/log-$STAMP 2>> /root/borg/err-$STAMP

res=$?

if [ $res -eq 0 -o $res eq 1 ]; then
    mv -f /root/borg/stamp /root/borg/previous-stamp >& /dev/null
    rm -f /root/borg/stamp >& /dev/null
fi

echo === done === $res === $(date) >> /root/borg/cron.log

exec "$0" 

Migration Attic vers Borg

# apt-get -t jessie-backports install borgbackup
$ cd /backup/attic/
$ borg upgrade <repo>
$ borg check --repair <repo>
$ mv <repo> ../borg/
$ chown -R backupinfra: /backup/borg/<repo>

Dans le module puppet, le changement le plus important est le parametre compression explicite pour correspondre au défaut de attic create :

attic create ... <repo> -> borg create --compression zlib,6 ... <repo>

Sinon le prochain backup sera non compressé, et aucun nouveau chucks ne correspondra aux anciens -> perte de la dedup. "zlib,6" étant le niveau de compression de attic.

https://github.com/jborg/attic/issues/299
http://borgbackup.readthedocs.org/en/stable/usage.html#environment-variables

export ATTIC_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes