fix docker cp paths
continuous-integration/drone/pr Build is passing
Details
continuous-integration/drone/pr Build is passing
Details
This commit is contained in:
parent
f2472bd0d3
commit
ce42fb06fd
19
backup.sh
19
backup.sh
|
@ -21,7 +21,7 @@ if [ -n "$ssh_key_file" ] && [ -f "$ssh_key_file" ]; then
|
||||||
# Only check server against provided SSH_HOST_KEY, if set
|
# Only check server against provided SSH_HOST_KEY, if set
|
||||||
if [ -n "$SSH_HOST_KEY" ]; then
|
if [ -n "$SSH_HOST_KEY" ]; then
|
||||||
tmpfile=$(mktemp)
|
tmpfile=$(mktemp)
|
||||||
echo "$SSH_HOST_KEY" >> "$tmpfile"
|
echo "$SSH_HOST_KEY" >>"$tmpfile"
|
||||||
echo "using host key $SSH_HOST_KEY"
|
echo "using host key $SSH_HOST_KEY"
|
||||||
ssh_options="-o 'UserKnownHostsFile $tmpfile'"
|
ssh_options="-o 'UserKnownHostsFile $tmpfile'"
|
||||||
elif [ "$SSH_HOST_KEY_DISABLE" = "1" ]; then
|
elif [ "$SSH_HOST_KEY_DISABLE" = "1" ]; then
|
||||||
|
@ -79,27 +79,28 @@ if [[ \ $*\ != *\ --skip-backup\ * ]]; then
|
||||||
pre=$(echo "$details" | jq -r '.["backupbot.backup.pre-hook"]')
|
pre=$(echo "$details" | jq -r '.["backupbot.backup.pre-hook"]')
|
||||||
post=$(echo "$details" | jq -r '.["backupbot.backup.post-hook"]')
|
post=$(echo "$details" | jq -r '.["backupbot.backup.post-hook"]')
|
||||||
path=$(echo "$details" | jq -r '.["backupbot.backup.path"]')
|
path=$(echo "$details" | jq -r '.["backupbot.backup.path"]')
|
||||||
|
|
||||||
if [ "$path" = "null" ]; then
|
if [ "$path" = "null" ]; then
|
||||||
echo "ERROR: missing 'path' for $service"
|
echo "ERROR: missing 'path' for $service"
|
||||||
continue # or maybe exit?
|
continue # or maybe exit?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
container=$(docker container ls -f "name=$service" --format '{{ .ID }}')
|
container=$(docker container ls -f "name=$service" --format '{{ .ID }}')
|
||||||
|
|
||||||
echo "backing up $service"
|
echo "backing up $service"
|
||||||
|
|
||||||
if [ "$pre" != "null" ]; then
|
if [ "$pre" != "null" ]; then
|
||||||
# run the precommand
|
# run the precommand
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
docker exec "$container" sh -c "$pre"
|
docker exec "$container" sh -c "$pre"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
test -d "$backup_path/$service" || mkdir -p "$backup_path/$service"
|
|
||||||
|
|
||||||
# run the backup
|
# run the backup
|
||||||
for p in ${path//,/ }; do
|
for p in ${path//,/ }; do
|
||||||
docker cp "$container:$p" "$backup_path/$service"
|
# creates the parent folder, so `docker cp` has reliable behaviour no matter if $p ends with `/` or `/.`
|
||||||
|
dir=$backup_path/$service/$(dirname "$p")
|
||||||
|
test -d "$dir" || mkdir -p "$dir"
|
||||||
|
docker cp "$container:$p" "$dir/$(basename "$p")"
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$post" != "null" ]; then
|
if [ "$post" != "null" ]; then
|
||||||
|
@ -120,3 +121,5 @@ fi
|
||||||
if [[ \ $*\ != *\ --skip-upload\ * ]]; then
|
if [[ \ $*\ != *\ --skip-upload\ * ]]; then
|
||||||
_restic backup --host "$server_name" --tag coop-cloud "$backup_path"
|
_restic backup --host "$server_name" --tag coop-cloud "$backup_path"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -rf "${backup_path}"
|
Loading…
Reference in New Issue