awips2/deltaScripts/18.1.1/DR6507/6507_move_tablespaces.sh
2022-05-05 12:34:50 -05:00

56 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
# #6507 - This script moves all postgres tablespaces to
# /awips2/data/tablespaces. It will also create a symlink from
# /awips2/database/data to /awips2/data if the latter does not exist already.
#
# Run this script as root on all servers that have /awips2/data.
#
# Author: tgurney
pg_ctl=/awips2/postgresql/bin/pg_ctl
old_data_dir=/awips2/data
new_data_dir=/awips2/database/data
new_tablespace_dir=/awips2/database/tablespaces
pg_tblspc=${new_data_dir}/pg_tblspc
su - awips -c "${pg_ctl} -D ${new_data_dir} status"
if [[ "$?" -eq 0 ]]; then
echo "ERROR: Postgres is running. Cannot continue."
exit 1
fi
if [[ -e "${old_data_dir}" && ! -h "${old_data_dir}" ]]; then
echo "ERROR: ${old_data_dir} exists and is not a symlink. It needs to be"
echo "moved to ${new_data_dir} first."
exit 1
fi
echo INFO: Starting.
if [[ ! -h "${old_data_dir}" ]]; then
echo "INFO: Symlinking ${new_data_dir} to ${old_data_dir}"
ln -sf "${new_data_dir}" "${old_data_dir}"
chown awips:fxalpha "${old_data_dir}"
fi
# move tablespaces
mkdir -p ${new_tablespace_dir}
chown -R awips:fxalpha ${new_tablespace_dir}
chmod 700 ${new_tablespace_dir}
for ts_link in "${pg_tblspc}"/* ; do
if [[ -h ${ts_link} ]]; then
this_ts=$(readlink "${ts_link}")
if [[ "$(dirname "${this_ts}")" != "${new_tablespace_dir}" ]]; then
mv -v "${this_ts}" "${new_tablespace_dir}" && \
rm -vf "${ts_link}" && \
ln -sv "${new_tablespace_dir}/$(basename ${this_ts})" ${ts_link}
chown awips:fxalpha ${ts_link}
else
echo "INFO: ${this_ts} already in correct location"
fi
fi
done
echo INFO: Done.