X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=disabled%2Fsmall-backup;fp=disabled%2Fsmall-backup;h=0000000000000000000000000000000000000000;hb=ef3bbffe6d2a08ebd735ba4f09c7bd0fbea585a0;hp=4db412ef3479230c592226b04c1210c7408b6b86;hpb=6d1ec26482f86b0f2d9560ce3d04ea8c63297c25;p=distro-setup diff --git a/disabled/small-backup b/disabled/small-backup deleted file mode 100755 index 4db412e..0000000 --- a/disabled/small-backup +++ /dev/null @@ -1,149 +0,0 @@ -#!/bin/bash -# I, Ian Kelling, follow the GNU license recommendations at -# https://www.gnu.org/licenses/license-recommendations.en.html. They -# recommend that small programs, < 300 lines, be licensed under the -# Apache License 2.0. This file contains or is part of one or more small -# programs. If a small program grows beyond 300 lines, I plan to switch -# its license to GPL. - -# Copyright 2024 Ian Kelling - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# for duplicity source build -PATH="$PATH:/usr/local/bin" - -# [--retry] interval_name [max_age] -# takes 2 arguments specifying the name of the subfolder, -# and optionally, the max age of the backup - -# this script setup by adding a user crontab. see t.org for the script -# it's also setup to email me only when it fails, and only for daily or weekly runs - -# uncomment for debugging, prints all commands to stdout -#set -x - -set -E -#trap 'echo trapped error from \"$BASH_COMMAND\" returned $? line $LINENO; accumulated_errors=true' ERR -trap 'echo trapped err: $?; accumulated_errors=true' ERR - -exec 3>&1 4>&2 -exec &>> /tmp/small-backup.log - -echo "BEGIN: $(date): args $*" - - -# only works with a single letter, ie 2D, not 2D12h -half-time() { - local time_word - local letter=${1##*[0-9]} - case $letter in - s) time_wrod=second ;; - m) time_word=minute ;; - h) time_word=hour ;; - D) time_word=day ;; - W) time_word=week ;; - M) time_word=month ;; - Y) time_word=year ;; - esac - echo "${1%%$letter} $time_word" - local x=$(date +%s -d "${1%%$letter} $time_word") - local y=$(date +%s) -} - - -if [[ $1 == --retry ]]; then - shift - x=0 - while pid=( $(pidof -o %PPID -x ${0##*/}) ) && (( ${#pid[@]} > 1 )) && (( x < 20 )); do - x=$(( x + 1 )) - sleep 30 - done - if [[ $x == 20 ]]; then - ps -F ${pid[@]} - echo timeout error: existing ${0##*/} running for over 5 minutes >&2 - exit 1 - fi -else - if pid=( $(pidof -o %PPID -x ${0##*/}) ) && (( ${#pid[@]} > 1 )); then - echo ps -F ${pid[@]} - ps -F ${pid[@]} - echo error: existing ${0##*/} running >&2 - exit 1 - fi -fi - -interval=$1 -max_age=$2 -full_backup_arg="" -if [[ $max_age ]]; then - full_backup_arg="--full-if-older-than $(half-time $max_age)" -fi - -rbackup () { - - local d=$1 - shift - local dest=root@li::/root/rdiff-backups/${d##*/}/${interval} - - c="rdiff-backup $* --create-full-path $d $dest" - echo "$c"; $c - - if [[ $max_age ]]; then - c="rdiff-backup --force --remove-older-than $max_age $dest" - echo "$c"; $c - - fi -} - - -rbackup /a/bin --exclude /a/bin/fai-basefiles -rbackup /a/c - -# this is populated after input_setup.sh is run on login - -ssh root@li mkdir -p /root/duplicity-backups/p/$interval -source /p/duplicity/gpg_agent_env -duplicity_dest=rsync://root@li//root/duplicity-backups/p/$interval - -x=(/p/*) -if ((${#x[@]} > 1)); then - set -x - # archive-dir is sort of a persistent cache - duplicity --use-agent \ - --encrypt-sign-key E969C67B \ - --include-globbing-filelist /p/duplicity/filelist \ - --archive-dir /p/duplicity/archive \ - --tempdir /p/tmp \ - $full_backup_arg /p $duplicity_dest - if [[ $max_age ]]; then - duplicity --use-agent \ - remove-all-but-n-full 2 --force $duplicity_dest - fi - set +x -fi -# example restore command. We only need to make the first argument be a url for it to know it to do restore -# the archive-dir and tempdir args are not needed -# duplicity --use-agent --encrypt-sign-key E969C67B --archive-dir /p/duplicity/archive --tempdir /p/tmp ssh://root@li//root/duplicity-backups/p/weekly /p/duptest - - -echo END - -# to restore duplicity. see man for additional options -# duplicity --use-agent restore ... -if [[ $accumulated_error ]]; then - eccho "tail -n 50 of /tmp/small-backup.log:" - tail -n 50 /tmp/small-backup.log - exit 1 -fi