{ echo "Starting physical backup for ${CONTAINER_NAME} at $(date)" mkdir -p ${BACKUP_DIR} # Выполнение pg_basebackup через сеть Docker export PGPASSWORD=${POSTGRES_PASSWORD} pg_basebackup \ -h ${CONTAINER_NAME} \ -U postgres \ -D ${BACKUP_DIR} \ -F tar \ -X stream \ -P \ -v if [ $? -eq 0 ]; then echo "Physical backup completed successfully" # Архивирование tar -czf ${BACKUP_DIR}.tar.gz -C ${BACKUP_DIR} . # Загрузка в MinIO /usr/local/bin/mc alias set minio-backup ${MINIO_ENDPOINT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY} /usr/local/bin/mc cp ${BACKUP_DIR}.tar.gz minio-backup/${MINIO_BUCKET}/${CONTAINER_NAME}/physical/ # Очистка rm -rf ${BACKUP_DIR} ${BACKUP_DIR}.tar.gz echo "Backup uploaded to MinIO and local files cleaned" else echo "Physical backup failed" exit 1 fi } >> ${LOG_FILE} 2>&1 4. Docker Compose для Backup Manager yaml version: '3.8' services: backup-manager: build: context: . dockerfile: Dockerfile volumes: - backup_data:/backup - backup_logs:/opt/backup-manager/
echo "Starting physical backup for ${CONTAINER_NAME} at $(date
29 октября 202529 окт 2025
2 мин