Borg backup local et distants

Bonjour,

J’ai actuellement mes sauvegardes qui se font via borg sur un autre serveur grâce à ce tutoriel

Il me faudrait aussi faire ces backups avec un prune (nettoyage des backups) différent vers un emplacement local. Sauf que je ne comprends pas trop les scripts et mes modifications manuelles ne fonctionnent pas :confused:

La partie optionnelle du tutoriel (deux serveur, l’un avec un gros et l’autre avec un petit espace) n’est pas vraiment ce que je recherche étant donné que je souhaites avoir moins de versions mais toujours toutes mes app sauvegardées sur cet emplacement, peu importe leurs taille.

Ce tuto correspond sans doute à ce que tu cherches: How to backup automatically with borg on a local harddrive without encryption

Pour le script de sauvegarde borg oui mais pas pour le script cron qui ne déclenchera qu’une des deux sauvegarde :confused:

Dans le script /etc/cron.daily/yunohost-99-backup tu remplaces
“myborg”
par
“mylocalborg myborg”

Wait, si dans la commande je met les deux scripts de sauvegardes à la suite ça va déclencher les deux scripts de sauvegarde ? :open_mouth:

Il est possible de mettre plusieurs méthodes dans la même commande.

yunohost backup create --methods tar myborg

par exemple

Bonjour,

J’ai un petit porblème avec le script etc/cron.daily/yunohost-99-backup :
J’ai bien paramétré ma seconde méthodes de sauvegarde et l’incorporée au script. Sauf que quand je lance celui-ci j’ai cette erreur pour chaque app :
Erreur : Une archive de sauvegarde avec ce nom existe déjà

Hello, je déterre ce sujet… peut-être plus à jour ?
J’ai déjà un backup journalier configurer vers un autre serveur avec Borg Backup et Borg Server pour la machine qui accueille les sauvegardes…
J’aimerai rajouter une sauvegarde locale sur le serveur… peut-être pas à la même heure. Je peux utiliser Borg pour cette deuxième sauvegarde ?
Par contre je n’ai pas de scripts dans etc/cron.daily/ ??

Autre soucis que je découvre, j’ai rapatrié une sauvegarde avec Borg qui vient du serveur Borg. En voulant le supprimer, j’ai une erreur, car il comporte trop de caractères !

yunohost backup delete _auto_nextcloud-2022-01-18_04:03
Warning: argument value '_auto_nextcloud-2022-01-18_04:03' for 'name' doesn't match pattern '^[\w\-\._]{1,50}(?<!\.)$'
Error: Invalid argument 'name': Must be a valid filename with max 30 characters, alphanumeric and -_. characters only

Je peux modifier son nom pour l’effacer… Si je devais le restaurer, est-ce que je pourrai aussi changer son nom sans tout casser ?

Toutes mes sauvegardes sur le serveur Borg ont ces 2 underscores avant leurs noms, pourquoi, est-ce normal ?

Voici comment se présente mon fichier actuel /etc/yunohost/hooks.d/backup_method/05-borg_app

#!/bin/bash

set -eo pipefail
app="${0#"./05-"}"
app="${app%"_app"}"

BORG_PASSPHRASE="$(yunohost app setting $app passphrase)"
repo="$(yunohost app setting $app repository)"   #$4
if ssh-keygen -F "[borgserverdomain.tld]:xxxx" >/dev/null ; then
    BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes "
else
    BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=no "
fi

do_need_mount() {
    true
}

LOGFILE=/var/log/backup_borg.err
log_with_timestamp() {
  sed -e "s/^/[$(date +"%Y-%m-%d_%H:%M:%S")] /" | tee -a $LOGFILE
}

do_backup() {
    
    export BORG_PASSPHRASE
    export BORG_RSH
    export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
    work_dir="$1"
    name="$2"
    repo="$3"
    size="$4"
    description="$5"
    current_date=$(date +"%Y-%m-%d_%H:%M")
    pushd "$work_dir"
    set +e
    if borg init -e repokey "$repo" ; then
	    #human_size=`echo $size | awk '{ suffix=" KMGT"; for(i=1; $1>1024 && i < length(suffix); i++) $1/=1024; print int($1) substr(suffix, i, 1), $3; }'`
	    # Speed in Kbps
	    #speed=1000
	    #evaluated_time=$(($size / ($speed * 1000 / 8) / 3600))
	    echo "Hello,

Your first backup on $repo is starting.

This is an automated message from your beloved YunoHost server." | /usr/bin/mail.mailutils -a "Content-Type: text/plain; charset=UTF-8" -s "[YNH] First backup is starting" "root"
    fi
    set -e

    borg create "$repo::_${name}-${current_date}" ./ 2>&1 >/dev/null | log_with_timestamp
    popd

    # About thi _20 it's a crazy fix to avoid pruning wordpress__2 
    # if you prune wordpress
    borg prune "$repo" -P "_${name}-" --keep-hourly 2 --keep-daily=7 --keep-weekly=8 --keep-monthly=12 2>&1 >/dev/null | log_with_timestamp
    
    # Prune legacy archive name without error on wordpress/wordpress__2
    borg prune "$repo" -P "${name}_" --keep-within 2m --keep-monthly=12 2>&1 >/dev/null | log_with_timestamp
    
    # We prune potential manual backup older than 1 year
    borg prune "$repo" --keep-within 1y 2>&1 >/dev/null | log_with_timestamp
}

do_mount() {
    export BORG_PASSPHRASE
    export BORG_RSH
    work_dir="$1"
    name="$2"
    repo="$3"
    size="$4"
    description="$5"
    borg mount "$repo::$name" "$work_dir" 2>&1 >/dev/null | log_with_timestamp
}

work_dir="$2"
name="$3"

size="$5"
description="$6"

case "$1" in
  need_mount)
    do_need_mount "$work_dir" "$name" "$repo" "$size" "$description"
    ;;
  backup)
    do_backup "$work_dir" "$name" "$repo" "$size" "$description"
    ;;
  mount)
    do_mount
    ;;
  *)
    echo "hook called with unknown argument \`$1'" >&2
    exit 1
    ;;
esac

exit 0

Ou bien pour les sauvegardes locales, ce pourrait être un cron sans Borg ? sachant que sur cette machine il n’y a que Borg Backup d’installer les Borg Server est sur une autre machine…
Sinon, je me contente d’en faire occasionnellement à la mano…

Bon, ça j’ai essayé, si je change le nom du .tar et du .info.json ça fonctionne pareil…