115 lines
4.9 KiB
Bash
Executable File
115 lines
4.9 KiB
Bash
Executable File
#!/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}"
|
||
|