Files

61 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Целью этого предстартового крючка является миграция
# локальная папка загрузок для существующих установок
# в общую папку загрузок DFWebOS
APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)"
DFWEBOS_ROOT="${APP_DATA_DIR}/../.."
# Нам необходимо обеспечить общую папку загрузки DFWebOS.
# существует и принадлежит правильному пользователю
DFWEBOS_DATA_DIR="${DFWEBOS_ROOT}/data"
DFWEBOS_DATA_STORAGE_DIR="${DFWEBOS_DATA_DIR}/storage"
DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR="${DFWEBOS_DATA_STORAGE_DIR}/downloads"
DESIRED_OWNER="1000:1000"
if [[ ! -d "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}" ]]; then
mkdir -p "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}"
fi
simpletorrent_correct_permission() {
local -r path="${1}"
if [[ -d "${path}" ]]; then
owner=$(stat -c "%u:%g" "${path}")
if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then
chown "${DESIRED_OWNER}" "${path}"
fi
fi
}
simpletorrent_correct_permission "${DFWEBOS_DATA_DIR}"
simpletorrent_correct_permission "${DFWEBOS_DATA_STORAGE_DIR}"
simpletorrent_correct_permission "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}"
# Перенесите существующие установки для использования общего каталога загрузок.
LOCAL_DOWNLOADS_DIR="${APP_DATA_DIR}/data/downloads"
if [[ ! -d "${LOCAL_DOWNLOADS_DIR}" ]]; then
echo "No local downloads directory found. Skipping migration..."
exit
fi
# Проверьте, не пуста ли локальная загрузка.
if [[ "$(ls -l "${LOCAL_DOWNLOADS_DIR}" | wc -l)" -gt "1" ]]; then
# Переместите содержимое локальной папки загрузок в общую папку загрузок DFWebOS.
mv --verbose "${LOCAL_DOWNLOADS_DIR}/"* "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}"
fi
# Проверьте, пуст ли теперь локальный каталог загрузок.
if [[ "$(ls -l "${LOCAL_DOWNLOADS_DIR}" | wc -l)" -gt "1" ]]; then
echo "Failed to migrate local downloads directory: ${LOCAL_DOWNLOADS_DIR}"
echo "This directory still contains files/folders..."
exit
fi
rm -rf "${LOCAL_DOWNLOADS_DIR}"
echo "Local downloads directory successfully migrated"