Zuletzt aktiv 1721403897

Migrates one docker volume to another host

lerone hat die Gist bearbeitet 1721403897. Zu Änderung gehen

1 file changed, 83 insertions

gistfile1.txt(Datei erstellt)

@@ -0,0 +1,83 @@
1 + #!/bin/bash
2 +
3 + # Environment check
4 +
5 + # If migrating from localhost, set this to localhost
6 + if [[ ! $SOURCE_HOST_ADDRESS ]]
7 + then
8 + echo "Please set the current host address in SOURCE_HOST_ADDRESS"
9 + exit 1
10 + fi
11 +
12 + # If migrating from localhost, set this to $USER
13 + if [[ ! $SOURCE_HOST_USER ]]
14 + then
15 + echo "Please set the current host user in SOURCE_HOST"
16 + exit 1
17 + fi
18 +
19 + # If migrating to localhost, set this to localhost
20 + if [[ ! $TARGET_HOST_ADDRESS ]]
21 + then
22 + echo "Please set the new host address in TARGET_HOST_ADDRESS"
23 + exit 1
24 + fi
25 +
26 + # If migrating to localhost, set this to $USER
27 + if [[ ! $TARGET_HOST_USER ]]
28 + then
29 + echo "Please set the new host user in TARGET_HOST_USER"
30 + exit 1
31 + fi
32 +
33 + # Argument check
34 +
35 + if [[ ! $1 ]]
36 + then
37 + echo "Please supply a docker volume name, as displayed by the command 'docker volume ls'"
38 + exit 1
39 + fi
40 + volume_name=$1
41 +
42 + # Export the volume from the current instance
43 +
44 + echo "Exporting volume $volume_name on $SOURCE_HOST_ADDRESS"
45 + ssh "$SOURCE_HOST_USER"@"$SOURCE_HOST_ADDRESS" "\
46 + mkdir -p \$HOME/docker-volume-backup
47 + docker run \
48 + --rm \
49 + -v $volume_name:/volume-backup-source \
50 + -v \$HOME/docker-volume-backup:/volume-backup-target \
51 + busybox \
52 + sh -c 'cd /volume-backup-source && tar cf /volume-backup-target/backup.tar .' \
53 + "
54 +
55 +
56 + # Transfer the exported volume to the new address
57 +
58 + echo "Transferring exported volume $volume_name from $SOURCE_HOST_ADDRESS to $TARGET_HOST_ADDRESS"
59 + ssh "$TARGET_HOST_USER"@"$TARGET_HOST_ADDRESS" "mkdir -p \$HOME/docker-volume-backup"
60 + scp -3 "$SOURCE_HOST_USER"@"$SOURCE_HOST_ADDRESS":./docker-volume-backup/backup.tar \
61 + "$TARGET_HOST_USER"@"$TARGET_HOST_ADDRESS":./docker-volume-backup/backup.tar
62 +
63 +
64 + # Restore the backup
65 +
66 + echo "Creating volume $volume_name on $TARGET_HOST_ADDRESS"
67 + ssh "$TARGET_HOST_USER"@"$TARGET_HOST_ADDRESS" "\
68 + docker volume create $volume_name \
69 + && docker run \
70 + --rm \
71 + -v $volume_name:/volume-backup-target \
72 + -v \$HOME/docker-volume-backup/:/volume-backup-source \
73 + busybox \
74 + sh -c 'cd /volume-backup-target && tar xf /volume-backup-source/backup.tar .' \
75 + "
76 +
77 + # Clean up residual files
78 +
79 + echo "Cleaning up unnecessary files"
80 + ssh "$SOURCE_HOST_USER"@"$SOURCE_HOST_ADDRESS" "rm -rf \$HOME/docker-volume-backup"
81 + ssh "$TARGET_HOST_USER"@"$TARGET_HOST_ADDRESS" "rm -rf \$HOME/docker-volume-backup"
82 +
83 + echo "Successfully migrated docker volume $volume_name from $SOURCE_HOST_ADDRESS to $TARGET_HOST_ADDRESS"
Neuer Älter