2021-05-09 01:41:52 -05:00
|
|
|
#!/usr/bin/env bash
|
2019-07-09 14:17:19 +02:00
|
|
|
|
|
|
|
set -o errexit
|
|
|
|
|
2022-02-17 18:14:02 +00:00
|
|
|
if [[ -t 1 ]]
|
|
|
|
then
|
|
|
|
exec 2>&1 | ts '%X %Z'
|
|
|
|
fi
|
|
|
|
|
2019-07-09 14:17:19 +02:00
|
|
|
exec 220>/tmp/.RunSearchIndexesDump.lock || exit 1
|
|
|
|
# Will be automatically released when the script exits.
|
|
|
|
flock -n 220 || { echo "Failed to obtain lock. Another instance is running?" >&2; exit 1; }
|
|
|
|
|
|
|
|
# This is to help with disk space monitoring - run "df" before and after
|
|
|
|
echo "Disk space when RunSearchIndexesDump starts:" ; df -m
|
|
|
|
trap 'echo "Disk space when RunSearchIndexesDump ends:" ; df -m' 0
|
|
|
|
|
|
|
|
MB_SERVER_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/../" && pwd)
|
|
|
|
cd "$MB_SERVER_ROOT"
|
|
|
|
|
|
|
|
source admin/config.sh
|
|
|
|
|
|
|
|
. ./admin/functions.sh
|
|
|
|
make_temp_dir
|
|
|
|
|
|
|
|
DUMP_DIR="$SEARCH_INDEXES_DUMP_DIR"
|
|
|
|
DUMP_STAMP=`TZ=UTC date +'%Y%m%d-%H%M%S'`
|
|
|
|
|
|
|
|
# Create necessary directories and set permissions.
|
|
|
|
mkdir -m "$SEARCH_INDEXES_DUMP_DIR_MODE" -p "$DUMP_DIR/$DUMP_STAMP"
|
|
|
|
chown "$SEARCH_INDEXES_DUMP_USER:$SEARCH_INDEXES_DUMP_GROUP" \
|
|
|
|
"$DUMP_DIR" \
|
|
|
|
"$DUMP_DIR"/"$DUMP_STAMP"
|
|
|
|
|
2022-02-17 18:14:02 +00:00
|
|
|
echo Requesting SolrCloud backups
|
2019-07-09 14:17:19 +02:00
|
|
|
BACKUP_STAMP="$DUMP_STAMP" \
|
|
|
|
./admin/RequestSolrCloudBackups \
|
|
|
|
|| exit $?
|
|
|
|
|
2022-02-17 18:14:02 +00:00
|
|
|
echo Retrieving SolrCloud backups
|
2019-07-09 14:17:19 +02:00
|
|
|
MBS_ADMIN_CONFIG=config.search-indexes-dump.sh \
|
|
|
|
./bin/rsync-solrcloud-backups "$TEMP_DIR" \
|
|
|
|
|| exit $?
|
|
|
|
|
2022-02-17 18:14:02 +00:00
|
|
|
echo Making a search indexes dump
|
2019-07-09 14:17:19 +02:00
|
|
|
BACKUP_STAMP="$DUMP_STAMP" \
|
|
|
|
./admin/BundleSearchIndexesDump \
|
|
|
|
--working-dir "$TEMP_DIR" \
|
|
|
|
|| exit $?
|
|
|
|
|
2022-02-17 18:14:02 +00:00
|
|
|
echo Copying the dump to the local FTP directory
|
2019-07-09 14:17:19 +02:00
|
|
|
chown "$SEARCH_INDEXES_DUMP_USER:$SEARCH_INDEXES_DUMP_GROUP" "$TEMP_DIR"/*
|
|
|
|
chmod "$SEARCH_INDEXES_DUMP_FILE_MODE" "$TEMP_DIR"/*
|
|
|
|
mv "$TEMP_DIR"/* "$DUMP_DIR"/"$DUMP_STAMP"/
|
|
|
|
|
|
|
|
# Finally create a "latest-is" file, indicating the export we just did.
|
|
|
|
rm -rf "$DUMP_DIR"/latest-is-*
|
|
|
|
> "$DUMP_DIR"/latest-is-"$DUMP_STAMP"
|
|
|
|
chmod "$SEARCH_INDEXES_DUMP_FILE_MODE" "$DUMP_DIR"/latest-is-"$DUMP_STAMP"
|
|
|
|
chown "$SEARCH_INDEXES_DUMP_USER:$SEARCH_INDEXES_DUMP_GROUP" "$DUMP_DIR"/latest-is-"$DUMP_STAMP"
|
|
|
|
|
|
|
|
# Finally finally, create a LATEST file whose *contents* are this export's tag
|
|
|
|
rm -rf "$DUMP_DIR"/LATEST
|
|
|
|
echo "$DUMP_STAMP" > "$DUMP_DIR"/LATEST
|
|
|
|
chmod "$SEARCH_INDEXES_DUMP_FILE_MODE" "$DUMP_DIR"/LATEST
|
|
|
|
chown "$SEARCH_INDEXES_DUMP_USER:$SEARCH_INDEXES_DUMP_GROUP" "$DUMP_DIR"/LATEST
|
|
|
|
|
2022-02-17 18:14:02 +00:00
|
|
|
echo Deleting old full exports from the local FTP directory
|
2019-07-09 14:17:19 +02:00
|
|
|
./bin/delete-old-fullexports -k -r "$DUMP_DIR"
|
|
|
|
|
2022-02-17 18:14:02 +00:00
|
|
|
echo Syncing the local FTP directory with the FTP server
|
2019-07-09 14:17:19 +02:00
|
|
|
MBS_ADMIN_CONFIG=config.search-indexes-dump.sh ./bin/rsync-fullexport-files
|