Skip to content
Snippets Groups Projects
Commit fd591aed authored by root's avatar root
Browse files

Add a new backup script

parent e5a9f5ef
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env bash
set -e
fail() {
echo "$1" >&2
exit 1
}
[[ "$1" = "full" ]] || [[ "$1" = "weekly" ]] || [[ "$1" = "daily" ]] || \
fail "usage: $0 [full|weekly|daily]"
TARGET=backup-$HOSTNAME@antea
LOCAL_HOME_ID=$(stat -c %d /home)
SOURCES=$(comm -12 <(getent passwd | cut -d: -f6 | sort) <(for i in /home/*; do [[ $(stat -c %d $i) -eq $LOCAL_HOME_ID ]] && echo $i; done))
TYPE=$1
TIMESTAMP=$(date +"%Y-%m-%d")
BACKUP_FILE=${TYPE}/${TIMESTAMP}.tar.xz
INCFILE_TGT=${TYPE}/${TIMESTAMP}.snar
INCFILE=${TIMESTAMP}.${TYPE}.snar
INC_FILTER="."
if [[ "$TYPE" = "weekly" ]]; then
INCFILE='\(full\|weekly\)'
fi
[[ -f $INCFILE ]] && fail "ERROR: backup already in progress (incremental backup file exists)"
if [[ "$TYPE" != "full" ]]; then
LAST=$(ls *.snar | sort | grep $INC_FILTER | tail -n1)
if [[ -f "$LAST" ]]; then
cp --reflink=auto $LAST $INCFILE
fi
fi
set -x
ssh $TARGET "mkdir -p $TYPE"
tar --create --xz --xattrs --acls --listed-incremental=$INCFILE $SOURCES | ssh $TARGET "cat > $BACKUP_FILE"
scp $INCFILE $TARGET:$INCFILE_TGT
#!/usr/bin/env bash
set -ex
KEY=$HOME/.ssh/id_rsa
PUB=${KEY}.pub
test -f $KEY && exit 1
ssh-keygen -b 4096 -t rsa -N "" -f $KEY
echo "Add the following to /backup-tar/$HOSTNAME/.ssh/authorized_keys on the backup server:"
cat $PUB
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment