Skip to content
Snippets Groups Projects
Commit 9dd7fa96 authored by nimrod's avatar nimrod
Browse files

Restore script.

parent a5b469f6
No related branches found
No related tags found
No related merge requests found
Pipeline #2405 passed
......@@ -3,6 +3,7 @@ FROM docker.io/library/alpine:3.14
RUN echo 'https://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories && \
echo 'https://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories && \
apk add --update --no-cache \
findutils \
skopeo \
reg \
;
......
......@@ -17,6 +17,8 @@ then
exit 1
fi
command -v skopeo >/dev/null || { echo 'skopeo is missing.' >&2; exit 2; }
registry="$1"
dest="$2"
......@@ -44,6 +46,7 @@ NR>2 {
}
}
END {
exit retruncode
if ( exitcode == 1) print "Backup failed for some images."
exit exitcode
}
'
#!/bin/sh
set -eu
usage() {
echo "$0: BACKUP_SOURCE REGISTRY_DOMAIN"
}
if [ "${1:-}" = -h ] || [ "${1:-}" = --help ]
then
usage
exit 0
fi
if [ "$#" -ne 2 ]
then
usage
exit 1
fi
command -v skopeo >/dev/null || { echo 'skopeo is missing.' >&2; exit 2; }
src="$1"
registry="$2"
# There's an assumption here that filenames don't have spaces (or other such
# characters) as the image format prohibits that and I don't want to deal with
# such issues right now.
images="$(find "$src" -maxdepth 1 -mindepth 1 -type d -printf '%f\n')"
if [ -z "$images" ]
then
echo 'No images found,' >&2
exit 3
fi
returncode=0
for image in $images
do
tags="$(find "$src/$image" -maxdepth 1 -mindepth 1 -type f -name '*.tar' -printf '%f\n' | sed 's/\.tar$//g')"
if [ -z "$tags" ]
then
echo "No tags found for image $image, skipping." >&2
continue
fi
for tag in $tags
do
echo "Restoring $image:$tag" >&2
if skopeo copy "docker-archive://$src/$image/$tag.tar" "docker://$registry/$image:$tag"
then
echo "Restore finished successfully." >&2
else
echo "Restore failed, continuing with other image." >&2
returncode=1
fi
done
done
if [ "$returncode" -gt 0 ]
then
echo 'Restoration failed for some images.'
fi
exit "$returncode"
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