Это программа для автоматической синхронизации файлов между локальной папкой и облачным хранилищем. Программа позволяет легко поддерживать актуальность данных и организовывать резервное копирование в облаке.
- Связывание локальной и облачной папок: Вы задаете локальную папку и имя папки в облаке, а приложение синхронизирует их.
- Автоматическое отслеживание изменений:
- Добавление новых файлов на локальном компьютере автоматически загружает их в облако.
- Изменение файлов в локальной папке приводит к обновлению их версии в облачном хранилище.
- Удаление локальных файлов синхронизируется с облаком.
- Настраиваемые параметры: Все настройки приложения задаются в конфигурационном файле
.env. - Логирование: Запись времени работы, синхронизируемых файлов, а также ошибок при синхронизации.
- Python 3.8+
- Библиотеки:
python-dotenvrequestsloguru
-
Клонируйте репозиторий:
git clone https://github.com/Nicksok2413/FileSyncService.git cd FileSyncService -
Установите зависимости:
pip install -r requirements.txt
-
Создайте файл
.envв корне проекта и задайте параметры по шаблону.env.template:TOKEN = "ваш_токен_доступа_Яндекс_Диска" LOCAL_DIR = "/путь/к/локальной/директории" CLOUD_DIR = "/путь/к/директории/в/облаке" SYNC_INTERVAL = 60 # Интервал синхронизации в секундах (по умолчанию) LOG_FILE = "sync_service.log" # Имя файла для логирования
-
Убедитесь, что файл
.envдобавлен в.gitignore:.env
-
Запустите программу:
python main.py
-
Программа выполнит первую синхронизацию при запуске.
-
Изменения в отслеживаемой папке будут синхронизироваться в заданный период.
- Гибкая настройка параметров через файл
.env. - Отчеты и логи: Уровни логирования
INFOиERRORфиксируют все ключевые действия и возможные ошибки. - Обработка ошибок:
- Программа не завершает работу при ошибках (например, потеря интернет-соединения).
- Пользователь получает понятные сообщения для исправления настроек.
- Логика взаимодействия с облачным хранилищем вынесена в отдельный класс (
YandexDiskConnector) в отдельном файле. - Методы класса:
load(path)— загрузка файла в облако.reload(path)— обновление файла в облаке.delete(filename)— удаление файла из облака.get_info()— получение информации о файлах в облаке.
- Основной функционал программы разделен на модули, соответствующие принципам чистого кода и PEP 8.
-
Пример 1: Синхронизация файлов
- При успешной синхронизации вы можете увидеть следующие сообщения в логах:
- Синхронизация начата.
- Загружен новый файл в облако: example.txt
- Удалён файл из облака: old_file.txt
- Перезаписан файл в облаке: updated_file.txt
- При успешной синхронизации вы можете увидеть следующие сообщения в логах:
-
Пример 2: Ошибка синхронизации
- Если возникнет ошибка во время синхронизации, вы увидите сообщение в логах:
- Ошибка синхронизации: Не удалось установить соединение с облачным сервисом.
- Если возникнет ошибка во время синхронизации, вы увидите сообщение в логах: