Always clean up
This commit is contained in:
parent
bfea98db61
commit
fd581ef877
1 changed files with 15 additions and 12 deletions
|
|
@ -17,18 +17,29 @@ if ! borg info; then
|
||||||
borg init --encryption=repokey
|
borg init --encryption=repokey
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# The above command will fail if the repo hasn't been already initialized,
|
# The above command will fail if the repo hasn't been already initialized,
|
||||||
# so we can ignore the return status. However, if any of the commands below fail,
|
# so we can ignore the return status. However, if any of the commands below fail,
|
||||||
# we want to stop the script immediately.
|
# we want to stop the script immediately.
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
if [ -n "${GIT_EXCLUDE_FILE:-}" ] && [ -f "$GIT_EXCLUDE_FILE" ]; then
|
||||||
|
rm -f "$GIT_EXCLUDE_FILE"
|
||||||
|
fi
|
||||||
|
if [ -d "/snapshot/btrfs-root" ]; then
|
||||||
|
cd /
|
||||||
|
btrfs subvolume delete /snapshot/btrfs-root || true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
if [ -d "/snapshot/btrfs-root" ]; then
|
if [ -d "/snapshot/btrfs-root" ]; then
|
||||||
btrfs subvolume delete /snapshot/btrfs-root
|
btrfs subvolume delete /snapshot/btrfs-root
|
||||||
fi
|
fi
|
||||||
|
|
||||||
btrfs subvolume snapshot /btrfs-root /snapshot
|
btrfs subvolume snapshot /btrfs-root /snapshot
|
||||||
|
|
||||||
cd "/snapshot/btrfs-root$BACKUP_RELATIVE_PATH"
|
cd "/snapshot/btrfs-root${BACKUP_RELATIVE_PATH:-}"
|
||||||
|
|
||||||
# Generate exclusions for git-untracked files if enabled
|
# Generate exclusions for git-untracked files if enabled
|
||||||
EXCLUDE_ARGS=(--exclude-from /exclude.conf)
|
EXCLUDE_ARGS=(--exclude-from /exclude.conf)
|
||||||
|
|
@ -37,12 +48,12 @@ if [ "${IGNORE_GIT_UNTRACKED:-false}" = "true" ]; then
|
||||||
GIT_EXCLUDE_FILE=$(mktemp)
|
GIT_EXCLUDE_FILE=$(mktemp)
|
||||||
|
|
||||||
# Find all git repositories and list their untracked files
|
# Find all git repositories and list their untracked files
|
||||||
find . -name .git -type d 2>/dev/null | while read -r gitdir; do
|
find . -name .git -type d | while read -r gitdir; do
|
||||||
repo_dir=$(dirname "$gitdir")
|
repo_dir=$(dirname "$gitdir")
|
||||||
(
|
(
|
||||||
cd "$repo_dir"
|
cd "$repo_dir"
|
||||||
# Get untracked files (respecting .gitignore)
|
# Get untracked files (respecting .gitignore)
|
||||||
git ls-files --others --exclude-standard 2>/dev/null | while read -r file; do
|
git ls-files --others --exclude-standard | while read -r file; do
|
||||||
# Output path relative to backup root
|
# Output path relative to backup root
|
||||||
echo "${repo_dir#./}/$file"
|
echo "${repo_dir#./}/$file"
|
||||||
done
|
done
|
||||||
|
|
@ -62,11 +73,6 @@ borg create --stats \
|
||||||
--compression=zstd,12 \
|
--compression=zstd,12 \
|
||||||
"${EXCLUDE_ARGS[@]}" ::"{hostname}-{now:%Y-%m-%dT%H:%M:%S}" .
|
"${EXCLUDE_ARGS[@]}" ::"{hostname}-{now:%Y-%m-%dT%H:%M:%S}" .
|
||||||
|
|
||||||
# Clean up temporary exclude file
|
|
||||||
if [ -n "$GIT_EXCLUDE_FILE" ] && [ -f "$GIT_EXCLUDE_FILE" ]; then
|
|
||||||
rm -f "$GIT_EXCLUDE_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd -
|
cd -
|
||||||
|
|
||||||
borg prune --list --stats \
|
borg prune --list --stats \
|
||||||
|
|
@ -76,6 +82,3 @@ borg prune --list --stats \
|
||||||
--keep-yearly="$KEEP_YEARLY"
|
--keep-yearly="$KEEP_YEARLY"
|
||||||
|
|
||||||
borg compact --threshold=5 --cleanup-commits --verbose --progress
|
borg compact --threshold=5 --cleanup-commits --verbose --progress
|
||||||
|
|
||||||
btrfs subvolume delete /snapshot/btrfs-root
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue