Skip to content

Automated file synchronization tool designed to ensure data consistency between local directories or remote servers.

Notifications You must be signed in to change notification settings

Nicksok2413/FileSyncService

Repository files navigation

Синхронизация файлов с облачным хранилищем

Это программа для автоматической синхронизации файлов между локальной папкой и облачным хранилищем. Программа позволяет легко поддерживать актуальность данных и организовывать резервное копирование в облаке.


📜 Основные функции

  • Связывание локальной и облачной папок: Вы задаете локальную папку и имя папки в облаке, а приложение синхронизирует их.
  • Автоматическое отслеживание изменений:
    • Добавление новых файлов на локальном компьютере автоматически загружает их в облако.
    • Изменение файлов в локальной папке приводит к обновлению их версии в облачном хранилище.
    • Удаление локальных файлов синхронизируется с облаком.
  • Настраиваемые параметры: Все настройки приложения задаются в конфигурационном файле .env.
  • Логирование: Запись времени работы, синхронизируемых файлов, а также ошибок при синхронизации.

🛠️ Требования

  • Python 3.8+
  • Библиотеки:
    • python-dotenv
    • requests
    • loguru

📦 Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/Nicksok2413/FileSyncService.git
    cd FileSyncService
  2. Установите зависимости:

    pip install -r requirements.txt
  3. Создайте файл .env в корне проекта и задайте параметры по шаблону .env.template:

    TOKEN = "ваш_токен_доступа_Яндекс_Диска"
    LOCAL_DIR = "/путь/к/локальной/директории"
    CLOUD_DIR = "/путь/к/директории/в/облаке"
    SYNC_INTERVAL = 60  # Интервал синхронизации в секундах (по умолчанию)
    LOG_FILE = "sync_service.log"  # Имя файла для логирования
  4. Убедитесь, что файл .env добавлен в .gitignore:

    .env
    

🚀 Использование

  1. Запустите программу:

    python main.py
  2. Программа выполнит первую синхронизацию при запуске.

  3. Изменения в отслеживаемой папке будут синхронизироваться в заданный период.


✨ Основные возможности

  • Гибкая настройка параметров через файл .env.
  • Отчеты и логи: Уровни логирования INFO и ERROR фиксируют все ключевые действия и возможные ошибки.
  • Обработка ошибок:
    • Программа не завершает работу при ошибках (например, потеря интернет-соединения).
    • Пользователь получает понятные сообщения для исправления настроек.

🖥️ Структура кода

  • Логика взаимодействия с облачным хранилищем вынесена в отдельный класс (YandexDiskConnector) в отдельном файле.
  • Методы класса:
    • load(path) — загрузка файла в облако.
    • reload(path) — обновление файла в облаке.
    • delete(filename) — удаление файла из облака.
    • get_info() — получение информации о файлах в облаке.
  • Основной функционал программы разделен на модули, соответствующие принципам чистого кода и PEP 8.

📋 Примеры использования

  • Пример 1: Синхронизация файлов

    • При успешной синхронизации вы можете увидеть следующие сообщения в логах:
      • Синхронизация начата.
      • Загружен новый файл в облако: example.txt
      • Удалён файл из облака: old_file.txt
      • Перезаписан файл в облаке: updated_file.txt
  • Пример 2: Ошибка синхронизации

    • Если возникнет ошибка во время синхронизации, вы увидите сообщение в логах:
      • Ошибка синхронизации: Не удалось установить соединение с облачным сервисом.

About

Automated file synchronization tool designed to ensure data consistency between local directories or remote servers.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages