Update btrbk.lib separated making latest links to function, add -n to link command
parent
c374b03061
commit
15572b297c
|
@ -25,17 +25,62 @@ btrbk_conf () {
|
|||
return 1
|
||||
}
|
||||
|
||||
btrbk_run () {
|
||||
btrbk_src () {
|
||||
local file=$(btrbk_conf $1)
|
||||
[[ ! $file ]] && return 1
|
||||
sudo btrbk -c $file list config --format col:h:source_subvolume
|
||||
}
|
||||
|
||||
local dry_run="-n"
|
||||
local dry_run_echo="echo"
|
||||
[[ $1 == "-e" ]] && dry_run="" && dry_run_echo="" && shift
|
||||
btrbk_dests () {
|
||||
local file=$(btrbk_conf $1)
|
||||
[[ ! $file ]] && return 1
|
||||
local dests=$(sudo btrbk -c $file list config --format col:h:snapshot_path | tail -1)
|
||||
dests+=" $(sudo btrbk -c $file list target --format col:h:target_path)"
|
||||
echo $dests
|
||||
}
|
||||
|
||||
btrbk_latest_links () {
|
||||
|
||||
local dry_run="echo"
|
||||
[[ $1 == "-e" ]] && dry_run="" && shift
|
||||
|
||||
local file=$(btrbk_conf $1)
|
||||
[[ ! $file ]] && echo unable to find conf file for ${1:-btrbk.conf} && return 1
|
||||
shift
|
||||
|
||||
local src=$(sudo btrbk -c $file list config --format col:h:source_subvolume)
|
||||
local latest=$(sudo btrbk -c $file list latest --format col:h:snapshot_subvolume | xargs -I % sh -c 'basename %' | sed '$!N; /^\(.*\)\n\1$/!P; D')
|
||||
[[ ( ! $latest ) || $latest == "-" ]] && echo "no latest snapshots so can't make .latest links" && return 3
|
||||
local dests=$(btrbk_dests $file)
|
||||
|
||||
if [[ $dry_run ]]; then
|
||||
echo dry run for making latest links for following destinations, NOTE: use -e to actually make them
|
||||
echo $dests
|
||||
echo "-------------------"
|
||||
fi
|
||||
|
||||
echo making .latest symlinks in each destination
|
||||
for dest in $dests; do
|
||||
for snap in $latest; do
|
||||
# [[ -e $dest/${snap%%.*}.latest ]] && $dry_run_echo sudo rm $dest/${snap%%.*}.latest
|
||||
local cmd="sudo ln -srfn $dest/$snap $dest/${snap%%.*}.latest"
|
||||
echo $cmd
|
||||
[[ ! $dry_run ]] && $cmd
|
||||
done
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
btrbk_run () {
|
||||
|
||||
local dry_run="-n"
|
||||
local dry_run_echo="echo"
|
||||
[[ $1 == "-e" ]] && dry_run="" && shift
|
||||
|
||||
local file=$(btrbk_conf $1)
|
||||
[[ ! $file ]] && echo unable to find conf file for ${1:-btrbk.conf} && return 1
|
||||
shift
|
||||
|
||||
local src=$(btrbk_src $file)
|
||||
|
||||
local snaps=$(sudo btrbk -c $file list source --format col:h:snapshot_name)
|
||||
|
||||
|
@ -60,35 +105,18 @@ echo from $src
|
|||
echo at these destinations $dests
|
||||
echo additional passed arguments: $@
|
||||
|
||||
# so snaps
|
||||
# do snaps and backups
|
||||
[[ $dry_run ]] && echo backup dry run || echo Taking snapshost and making backups now...
|
||||
sudo btrbk -c $file run $dry_run --progress $@
|
||||
|
||||
# post snap/backup
|
||||
|
||||
local latest=$(sudo btrbk -c $file list latest --format col:h:snapshot_subvolume | xargs -I % sh -c 'basename %' | sed '$!N; /^\(.*\)\n\1$/!P; D')
|
||||
btrbk_latest_links $([[ $dry_run ]] || printf "%s" -e) $file
|
||||
|
||||
if [[ $dry_run ]]; then
|
||||
|
||||
echo Latest Snaphosts: $latest
|
||||
fi
|
||||
|
||||
[[ ( ! $latest ) || $latest == "-" ]] && echo "no latest snapshots so can't make .latest links" && return 3
|
||||
|
||||
# post snap tasks
|
||||
echo making .latest symlinks in each destination
|
||||
for dest in $dests; do
|
||||
for snap in $latest; do
|
||||
[[ -e $dest/${snap%%.*}.latest ]] && $dry_run_echo sudo rm $dest/${snap%%.*}.latest
|
||||
$dry_run_echo sudo ln -sr $dest/$snap $dest/${snap%%.*}.latest
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
(return 0 2>/dev/null) || btrbk_run $@
|
||||
|
||||
latest_links () {
|
||||
btrbk_run -e $@ -n
|
||||
}
|
||||
|
||||
latest_clone () {
|
||||
|
||||
|
|
Loading…
Reference in New Issue