check if container is running

This commit is contained in:
foobar
2022-02-03 18:36:37 +01:00
parent 40f842e69f
commit 690c68ba45

View File

@@ -4,7 +4,7 @@
me="$(basename "$0")"; me="$(basename "$0")";
result=$(ps aux | grep -i "$me" | grep -v "grep" | wc -l) result=$(ps aux | grep -i "$me" | grep -v "grep" | wc -l)
echo "running: $result" echo "running: $result"
if [ "$result" -gt 2 ] if [ "$result" -gt 3 ]
then then
exit exit
fi fi
@@ -18,6 +18,7 @@ MYSQL_USER=root
MYSQL_PASSWORD='BV$9V#5Bq!enW&ez' MYSQL_PASSWORD='BV$9V#5Bq!enW&ez'
# specify seafile-mysql docker name and temporary backup location inside the docker # specify seafile-mysql docker name and temporary backup location inside the docker
DOCKER_SEAFILE=seafile
DOCKER_SEAFILE_MYSQL=seafile-mysql DOCKER_SEAFILE_MYSQL=seafile-mysql
@@ -38,20 +39,28 @@ LOGFILE_PATH="${DIR_BACKUP_LOGS}/${LOGFILE_STATUS}"
mkdir -p ${DIR_BACKUP_LOGS} ${DIR_BACKUP_DB} mkdir -p ${DIR_BACKUP_LOGS} ${DIR_BACKUP_DB}
# 1) backup seafile databases # 1) backup seafile databases
docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "mkdir -p ${DOCKER_BACKUP_DIR_TIMESTAMP}" # create remporary backup dir inside docker
IFS=$'\n\r' # set the IFS to a newline character, so that a whole line can be assigned to an array element
DATABASES=( $(docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "mysql -e 'show databases' -s --skip-column-names -u ${MYSQL_USER} -p'${MYSQL_PASSWORD}'") ) # parse database names into array
# loop databases and dump tables to sql files inside temporary docker backup folder if [ "$( docker container inspect -f '{{.State.Status}}' ${DOCKER_SEAFILE} )" == "running" ]; then
for i in "${DATABASES[@]:1}" echo "docker ${DOCKER_SEAFILE} running"
do
:
docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "mysqldump --single-transaction -h localhost -u ${MYSQL_USER} -p'${MYSQL_PASSWORD}' --opt ${i} > ${DOCKER_BACKUP_DIR_TIMESTAMP}/${i}.sql"
done
# 2) copy backup database files to host and cleanup docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "mkdir -p ${DOCKER_BACKUP_DIR_TIMESTAMP}" # create remporary backup dir inside docker
docker cp ${DOCKER_SEAFILE_MYSQL}:${DOCKER_BACKUP_DIR_TIMESTAMP} ${DIR_BACKUP_DB} IFS=$'\n\r' # set the IFS to a newline character, so that a whole line can be assigned to an array element
docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "rm -r ${DOCKER_BACKUP_DIR}" DATABASES=( $(docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "mysql -e 'show databases' -s --skip-column-names -u ${MYSQL_USER} -p'${MYSQL_PASSWORD}'") ) # parse database names into array
# loop databases and dump tables to sql files inside temporary docker backup folder
for i in "${DATABASES[@]:1}"
do
:
docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "mysqldump --single-transaction -h localhost -u ${MYSQL_USER} -p'${MYSQL_PASSWORD}' --opt ${i} > ${DOCKER_BACKUP_DIR_TIMESTAMP}/${i}.sql"
done
# 2) copy backup database files to host and cleanup
docker cp ${DOCKER_SEAFILE_MYSQL}:${DOCKER_BACKUP_DIR_TIMESTAMP} ${DIR_BACKUP_DB}
docker exec -i ${DOCKER_SEAFILE_MYSQL} sh -c "rm -r ${DOCKER_BACKUP_DIR}"
else
echo "docker ${DOCKER_SEAFILE} NOT running"
fi
# 3) backup seafile docker volumes folder # 3) backup seafile docker volumes folder
rsync -azh --log-file "${LOGFILE_PATH}" ${DIR_VOLUMES} ${DIR_BACKUP} rsync -azh --log-file "${LOGFILE_PATH}" ${DIR_VOLUMES} ${DIR_BACKUP}