Initial commit

This commit is contained in:
Vojtěch Káně
2025-08-07 16:11:48 +02:00
commit 0ed9d3da47
4 changed files with 184 additions and 0 deletions

47
import.sh Executable file
View File

@@ -0,0 +1,47 @@
#!/usr/bin/env bash
set -eu -o pipefail
verbose='y' # we test for (non)emptiness
quiet='' # we test for (non)emptiness
source lib.sh
if [ "$#" -ne 1 ]; then
abort "Usage: $0 repositoryName"
fi
info "BEWARE that this script can't garbage collect no longer existing snapshots yet"
restic() { command restic --no-cache "$@"; }
repoName="$1"
checkPathComponent "$repoName"
repoFile="repos/$repoName"
if [ ! -f "$repoFile" ]; then
abort "Repository $repoName does not exist"
fi
repoType="$(< "$repoFile" jq --raw-output .type)"
if [ "$repoType" = "restic" ]; then
repoPath="$(< "$repoFile" jq --raw-output '."restic-path"')"
info "Inspecting repository $repoName"
snapshots="$(restic -r "$repoPath" snapshots --json)"
len="$(echo "$snapshots" | jq '. | length')"
i=0
while [ "$i" -lt "$len" ]; do
snapshot="$(echo "$snapshots" | jq ".[$i]")"
id="$(echo "$snapshot" | jq --raw-output '.id')"
checkPathComponent "$id"
snapshotFile="backups/$repoName/$id"
if [ -f "$snapshotFile" ]; then
verbose "Snapshot $id is already known"
else
info "Found new snapshot $id"
mkdir -p "backups/$repoName"
echo "$snapshot" | jq --sort-keys --tab '. | pick(.hostname, .id, .paths, .tags, .time)' > "$snapshotFile"
fi
i=$(("$i"+1))
done
info "Processed $len snapshots"
else
abort "Unsupported repository type $repoType"
fi