@@ -23,22 +23,42 @@ ghe_remote_version_required "$host"
2323# us run this script directly.
2424: ${GHE_RESTORE_SNAPSHOT:= current}
2525
26+ # The directory holding the snapshot to restore
27+ snapshot_dir=" $GHE_DATA_DIR /$GHE_RESTORE_SNAPSHOT "
28+
2629# Use GNU tar on BSDs.
2730TAR=tar
2831if ! tar --version | grep -q GNU; then
2932 TAR=gtar
3033fi
3134
3235# Transfer all ES data from the latest snapshot to the GitHub instance.
33- if [ ! -d " $GHE_DATA_DIR / $GHE_RESTORE_SNAPSHOT /elasticsearch" ]; then
36+ if [ ! -d " $snapshot_dir /elasticsearch" ]; then
3437 echo " Warning: Elasticsearch backup missing. Skipping ..."
3538 exit 0
36- elif [ " $GHE_VERSION_MAJOR " -gt 1 ]; then
39+
40+ # restoring v11.10.x ES snapshot into a v2.0 appliance
41+ elif [ " $GHE_VERSION_MAJOR " -gt 1 -a -f " $snapshot_dir /elasticsearch/elasticsearch.yml" ]; then
3742 cd " $GHE_DATA_DIR /$GHE_RESTORE_SNAPSHOT /elasticsearch"
3843 ghe-ssh " $host " -- " sudo mkdir -p '$GHE_REMOTE_DATA_USER_DIR /elasticsearch-legacy'" 1>&3
3944
4045 $TAR -cf - --owner=root --group=root . |
4146 ghe-ssh " $host " -- " sudo tar -xf - -C '$GHE_REMOTE_DATA_USER_DIR /elasticsearch-legacy'" 1>&3
47+
48+ # restoring v2.0 ES snapshot into a v2.0 appliance
49+ elif [ " $GHE_VERSION_MAJOR " -gt 1 ]; then
50+ ghe-ssh " $host " -- " sudo mkdir -p '$GHE_REMOTE_DATA_USER_DIR /elasticsearch-snapshots'" 1>&3
51+ ghe-ssh " $host " -- " sudo chown elasticsearch:elasticsearch '$GHE_REMOTE_DATA_USER_DIR /elasticsearch-snapshots'" 1>&3
52+
53+ ghe-rsync -avz --delete \
54+ -e " ghe-ssh -p $( ssh_port_part " $host " ) " \
55+ --rsync-path=" sudo -u elasticsearch rsync" \
56+ " $snapshot_dir /elasticsearch/" \
57+ " $( ssh_host_part " $host " ) :$GHE_REMOTE_DATA_USER_DIR /elasticsearch-snapshots" 1>&3
58+
59+ ghe-ssh " $host " -- " ghe-es-restore"
60+
61+ # restoring v11.10.x ES snapshot into a v11.10.x appliance
4262else
4363 cd " $GHE_DATA_DIR /$GHE_RESTORE_SNAPSHOT "
4464 $TAR -cf - --owner=root --group=root elasticsearch |
0 commit comments