One-way directory synchronization
Project description
🚀 Py Dir Sync
pip install py-dir-sync
Простая библиотека Python для односторонней живой синхронизации каталогов. Отслеживает изменения в исходном каталоге source и применяет их к целевому каталогу destination, поддерживая структуру директорий.
Основные возможности
- Односторонняя синхронизация: Изменения переносятся из
sourceвdestination. - Фильтрация: Гибкие правила включения и исключения файлов и папок через паттерны
fnmatch. - События: Предоставляет детальную информацию о том, какие файлы были созданы, изменены, перемещены или удалены через обработчик
ChangeHandler. - Гибкая настройка:
- Автосинхронизация при запуске
auto_sync=True. - Удаление пустых директорий в
destremove_empty=True. - Форс-синхронизация при ошибках с контролем количества попыток
force_sync=5и интерваловforce_sync_interval=1.
- Автосинхронизация при запуске
- Основан на
watchdog - Требования: Python 3.12+.
Пример использования
Демонстрационный пример py_dir_sync_run.py, который можно опробовать на реальных директориях.
from pathlib import Path, PurePath
from typing import AbstractSet
from py_dir_sync import DirSync, SyncPathPair
# Обработчик может ничего не делать,
# но DirSync требует функцию ChangeHandler(Protocol)
def handler(
created: None | set[Path] = None,
modified: None | set[Path] = None,
moved: None | AbstractSet[tuple[PurePath, Path]] = None,
deleted: None | AbstractSet[PurePath] = None,
error: None | Exception = None,
) -> None:
pass
# Пара путей для синхронизации
path_pair = SyncPathPair("C:/src", "C:/dest")
# Паттерны для фильтрации (относительно корня src)
# include применяется только к файлам после проверки exclude.
exclude = [".*", "*/.*"]
include = ["*.py", "*.json", "*.md", "*.txt"]
# Создание экземпляра DirSync
dir_sync = DirSync(
handler=handler,
path_pair=path_pair,
exclude=exclude,
include=include,
auto_sync=True, # синхронизировать при start()
remove_empty=True, # удалять пустые каталоги
force_sync=3, # при ошибке синхронизировать весь каталог(3 попытки)
force_sync_interval=2, # 2 секунды между попытками
)
# Запустите и наблюдайте за изменениями
dir_sync.start()
# Остановка запланирована автоматически, но это можно сделать явно
dir_sync.stop()
Паттерны exclude/include
- Используется стандартный синтаксис fnmatch.
excludeпроверяется первой, затемincludeприменяется только к файлам.- Путь всегда относительно
source-каталога.
auto_sync
- Синхронизирует каталоги при вызове
DirSync.start()
remove_empty
- По умолчанию наблюдатель нацелен на события файлов, и не всегда может корректно определить, стоит ли удалять пустую директорию.
- Опция
remove_empty=Trueзаставляет дополнительно проверять родительскую директорию при удалении или перемещении файлов/каталогов. - Если директория окажется пустой, она будет удалена.
force_sync/force_sync_interval
- Любая ошибка при обработке событий может вызвать рассинхронизацию. По умолчанию ошибки создания/удаления/перемещения доступны через параметр
errorобработчикаChangeHandler(error:Exception). - Для автоматической корректировки состояния укажите:
force_sync > 0— максимальное количество попыток вызвать синхронизацию.force_sync_interval = 1(в секундах, можно float) — интервал между попытками.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_dir_sync-0.1.0.tar.gz.
File metadata
- Download URL: py_dir_sync-0.1.0.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2905f1ad6c56c792fb1ebeb1f51f1459155d7dace67907e1ddc63a67d4145a3
|
|
| MD5 |
09d8300e8a80f29b4756682659d35525
|
|
| BLAKE2b-256 |
2ddb92bf8583ca4ebd260d758c75da90c507fdad6bb3dfc37e0d596e38c1644f
|
File details
Details for the file py_dir_sync-0.1.0-py3-none-any.whl.
File metadata
- Download URL: py_dir_sync-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3df1fe56e3a3501e55e5d79fed28db5073ea1439fdc634e9fc99d82ffe0e7a8a
|
|
| MD5 |
47306ce394205e218b4a6bd6aee1a5cf
|
|
| BLAKE2b-256 |
f7d4d94d4090a54b0823533e85551c5adb4a62503e66a31393521403fea6006e
|