115 lines
4.9 KiB
Bash
115 lines
4.9 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# Скрипт для настройки удаленного хранилища медиа и базы данных
|
|||
|
|
# Использует SSHFS для монтирования удаленных директорий
|
|||
|
|
|
|||
|
|
# Цвета для вывода
|
|||
|
|
RED='\033[0;31m'
|
|||
|
|
GREEN='\033[0;32m'
|
|||
|
|
YELLOW='\033[1;33m'
|
|||
|
|
NC='\033[0m' # No Color
|
|||
|
|
|
|||
|
|
# Конфигурация удаленного сервера
|
|||
|
|
REMOTE_SERVER="103.80.87.247"
|
|||
|
|
REMOTE_USER="root" # Измените на вашего пользователя
|
|||
|
|
REMOTE_MEDIA_PATH="/var/nakama/media"
|
|||
|
|
REMOTE_DB_PATH="/var/nakama/db"
|
|||
|
|
REMOTE_BACKUPS_PATH="/var/nakama/backups"
|
|||
|
|
|
|||
|
|
# Локальные точки монтирования
|
|||
|
|
LOCAL_MEDIA_MOUNT="/mnt/nakama-media"
|
|||
|
|
LOCAL_DB_MOUNT="/mnt/nakama-db"
|
|||
|
|
LOCAL_BACKUPS_MOUNT="/mnt/nakama-backups"
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}=== Настройка удаленного хранилища ===${NC}"
|
|||
|
|
|
|||
|
|
# Проверка наличия SSHFS
|
|||
|
|
if ! command -v sshfs &> /dev/null; then
|
|||
|
|
echo -e "${RED}✗ SSHFS не установлен${NC}"
|
|||
|
|
echo -e "${YELLOW}Установка SSHFS...${NC}"
|
|||
|
|
|
|||
|
|
# Определить ОС и установить SSHFS
|
|||
|
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|||
|
|
sudo apt-get update && sudo apt-get install -y sshfs
|
|||
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|||
|
|
brew install macfuse sshfs
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}Неподдерживаемая ОС. Установите SSHFS вручную.${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}✓ SSHFS установлен${NC}"
|
|||
|
|
|
|||
|
|
# Создать локальные директории для монтирования
|
|||
|
|
echo -e "${YELLOW}Создание локальных директорий...${NC}"
|
|||
|
|
sudo mkdir -p "$LOCAL_MEDIA_MOUNT" "$LOCAL_DB_MOUNT" "$LOCAL_BACKUPS_MOUNT"
|
|||
|
|
|
|||
|
|
# Создать директории на удаленном сервере
|
|||
|
|
echo -e "${YELLOW}Создание директорий на удаленном сервере...${NC}"
|
|||
|
|
ssh "${REMOTE_USER}@${REMOTE_SERVER}" "mkdir -p ${REMOTE_MEDIA_PATH} ${REMOTE_DB_PATH} ${REMOTE_BACKUPS_PATH}"
|
|||
|
|
|
|||
|
|
# Монтировать директории
|
|||
|
|
echo -e "${YELLOW}Монтирование удаленных директорий...${NC}"
|
|||
|
|
|
|||
|
|
# Медиа
|
|||
|
|
if mountpoint -q "$LOCAL_MEDIA_MOUNT"; then
|
|||
|
|
echo -e "${YELLOW}Медиа уже смонтированы${NC}"
|
|||
|
|
else
|
|||
|
|
sshfs "${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_MEDIA_PATH}" "$LOCAL_MEDIA_MOUNT" \
|
|||
|
|
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
|
|||
|
|
echo -e "${GREEN}✓ Медиа смонтированы: ${LOCAL_MEDIA_MOUNT}${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# База данных
|
|||
|
|
if mountpoint -q "$LOCAL_DB_MOUNT"; then
|
|||
|
|
echo -e "${YELLOW}БД уже смонтирована${NC}"
|
|||
|
|
else
|
|||
|
|
sshfs "${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_DB_PATH}" "$LOCAL_DB_MOUNT" \
|
|||
|
|
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
|
|||
|
|
echo -e "${GREEN}✓ БД смонтирована: ${LOCAL_DB_MOUNT}${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Бекапы
|
|||
|
|
if mountpoint -q "$LOCAL_BACKUPS_MOUNT"; then
|
|||
|
|
echo -e "${YELLOW}Бекапы уже смонтированы${NC}"
|
|||
|
|
else
|
|||
|
|
sshfs "${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_BACKUPS_PATH}" "$LOCAL_BACKUPS_MOUNT" \
|
|||
|
|
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
|
|||
|
|
echo -e "${GREEN}✓ Бекапы смонтированы: ${LOCAL_BACKUPS_MOUNT}${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Добавить в /etc/fstab для автоматического монтирования при загрузке (опционально)
|
|||
|
|
echo -e "${YELLOW}Хотите добавить автомонтирование при загрузке? (y/n)${NC}"
|
|||
|
|
read -r RESPONSE
|
|||
|
|
|
|||
|
|
if [[ "$RESPONSE" =~ ^[Yy]$ ]]; then
|
|||
|
|
echo -e "${YELLOW}Добавление в /etc/fstab...${NC}"
|
|||
|
|
|
|||
|
|
# Создать резервную копию fstab
|
|||
|
|
sudo cp /etc/fstab /etc/fstab.backup
|
|||
|
|
|
|||
|
|
# Добавить записи в fstab
|
|||
|
|
cat <<EOF | sudo tee -a /etc/fstab
|
|||
|
|
# Nakama remote storage
|
|||
|
|
${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_MEDIA_PATH} ${LOCAL_MEDIA_MOUNT} fuse.sshfs defaults,_netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
|
|||
|
|
${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_DB_PATH} ${LOCAL_DB_MOUNT} fuse.sshfs defaults,_netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
|
|||
|
|
${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_BACKUPS_PATH} ${LOCAL_BACKUPS_MOUNT} fuse.sshfs defaults,_netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}✓ Автомонтирование настроено${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}=== Настройка завершена ===${NC}"
|
|||
|
|
echo ""
|
|||
|
|
echo "Монтированные директории:"
|
|||
|
|
echo " Медиа: ${LOCAL_MEDIA_MOUNT}"
|
|||
|
|
echo " БД: ${LOCAL_DB_MOUNT}"
|
|||
|
|
echo " Бекапы: ${LOCAL_BACKUPS_MOUNT}"
|
|||
|
|
echo ""
|
|||
|
|
echo "Для размонтирования используйте:"
|
|||
|
|
echo " sudo umount ${LOCAL_MEDIA_MOUNT}"
|
|||
|
|
echo " sudo umount ${LOCAL_DB_MOUNT}"
|
|||
|
|
echo " sudo umount ${LOCAL_BACKUPS_MOUNT}"
|
|||
|
|
|