Skip to content
Snippets Groups Projects
Commit f370bb43 authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

Merge branch 'add_prune_script' into 'master'

update docs

See merge request !5
parents 74d11b19 fb420791
No related branches found
No related tags found
1 merge request!5update docs
......@@ -139,6 +139,7 @@ The inc_config.sh mus contain 3 variables for pruning
prune_basedir=/netshare/restic-backup
prune_params="--group-by paths,tags --prune --keep-within 180d --max-unused unlimited --max-repack-size 100M --cleanup-cache"
prune_skipdays="7"
prune_cachedir=${prune_basedir}/.cache_for_pruning
```
## rest_pruner.cfg
......@@ -162,9 +163,9 @@ ls -l rest_pruner.cfg
## Syntax
```txt
========== RESTIC REST PRUNER v0.1 ==========
------------------------------------------------------------------------------
--------========###| RESTIC REST PRUNER :: v0.3 |###=======--------
------------------------------------------------------------------------------
Pruner for restic rest server with append only option.
This script prunes all repositories on server side.
......@@ -172,11 +173,21 @@ This script prunes all repositories on server side.
The config file [rest_pruner.cfg] contains <USER>:<RESTIC_PASSWORD>
If a directory matches /netshare/restic-backup/<USER> then it will be pruned.
Institute for Medical Education * University of Bern
GNU GPL 3.0
SYNTAX:
rest_pruner.sh [OPTIONS] [FILTER]
OPTIONS:
-h, --help show help and exit.
-a, --all process all repositories, default: rest only + archives
-d, --debug show more infos
-f, --force force pruning; do not wait 7 days
-s, --status show pruning status with last prunes
PARAMETERS:
FILTER regex to filter directory list in
......@@ -185,10 +196,22 @@ PARAMETERS:
EXAMPLES:
rest_pruner.sh
Start pruning of all matching repositories
rest_pruner.sh mail
Prune servers that match "mail",
eg. my-mailhub.example.com
rest_pruner.sh --force mail
Prune servers that match "mail",
eg. my-mailhub.example.com
rest_pruner.sh --status
Show statistics with last prunes, if it is archive or
running or on error.
It shows repositories with passwords and archives.
Other repositories are not visible until you
specify --all.
```
## How does it work
......
......@@ -28,7 +28,9 @@
sLogfile="$sLogdir/connections.log"
# for prune on restic rest server
prune_params="--group-by paths,tags --prune --keep-within 180d --max-unused unlimited --max-repack-size 100M --cleanup-cache"
prune_basedir=/netshare/restic-backup
prune_params="--group-by paths,tags --prune --keep-within 180d --max-unused unlimited --max-repack-size 100M --cleanup-cache --verbose=0"
prune_skipdays="7"
prune_cachedir=${prune_basedir}/.cache_for_pruning
# ----------------------------------------------------------------------
......@@ -6,16 +6,18 @@
# ----------------------------------------------------------------------
# 2024-02-01 v0.1 <axel.hahn@unibe.ch> first lines
# 2024-02-02 v0.2 <axel.hahn@unibe.ch> add: timer, skip file, skin N days, limit process time, stats
# 2024-02-03 v0.3 <axel.hahn@unibe.ch> enable cache dir; unlock before pruning
# ======================================================================
cd "$( dirname $0 )" || exit
_version=0.2
_version=0.3
logdir=_last_prune
prune_basedir=
prune_params=
prune_skipdays=7
prune_cachedir=
# stop pruning more repositories when running longer N seconds
prune_timeout=7200
......@@ -40,6 +42,7 @@ typeset -i rcAll=0
. "inc_config.sh" || exit 1
cfgfile=rest_pruner.cfg || exit 1
test -z "$prune_cachedir" && prune_cachedir="${prune_basedir}/.cache_for_pruning"
# ----------------------------------------------------------------------
......@@ -93,7 +96,7 @@ EXAMPLES:
running or on error.
It shows repositories with passwords and archives.
Other repositories are not visible until you
specify -d.
specify --all.
EOH
}
......@@ -153,13 +156,24 @@ function _prune(){
fi
if [ "$bDoRun" -eq "1" ]; then
local _user; _user=$( stat -c "%U" "$_dir" )
echo ">>>>> $( _getTimer ) >>>>> $_dir"
echo ">>>>> $( _getTimer ) sec >>>>> $_dir"
local _user;
_user=$( stat -c "%U" "$_dir" )
local _cachedir;
export _cachedir=$prune_cachedir/${mybase}
echo "Creating cache $_cachedir ..."
test -d "$_cachedir" || mkdir -p "$_cachedir"
chown ${_user}:${_user} "$_cachedir"
echo "Starting prune as user $_user ..."
su - $_user - /bin/bash -c "
echo START $( date ) $_dir
export RESTIC_PASSWORD=$mypw
restic forget -r $_dir $prune_params 2>&1
set -vx
restic unlock -r $_dir --cache-dir=$_cachedir 2>&1
restic forget -r $_dir --cache-dir=$_cachedir $prune_params 2>&1
" | tee "${logfile}.running"
rc=${PIPESTATUS[0]}
rcAll+=$rc
......@@ -170,7 +184,10 @@ function _prune(){
else
iCountPruneError+=1
mv "${logfile}.running" "${logfile}.error"
echo "!!! ERROR !!! pruning failed."
fi
echo "Removing cache $_cachedir ..."
rm -rf "$_cachedir"
fi
else
test "$bOptAll" -eq "1" && echo "SKIP: $_dir - no password for this repo"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment