| 
							
								 | 
							
							# dsync - Утилита для синхронизации директорий
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							**dsync** - это инструмент командной строки для синхронизации локальных проектов с удаленными серверами через SSH и rsync. Позволяет легко управлять синхронизацией нескольких проектов с различными наборами серверов.
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Структура проекта
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							/workspace/project1/
 | 
						
						
						
						
							 | 
							
								 | 
							
							├── train.py
 | 
						
						
						
						
							 | 
							
								 | 
							
							├── .dsyncconfig
 | 
						
						
						
						
							 | 
							
								 | 
							
							└── .dsyncignore
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							/workspace/project2/
 | 
						
						
						
						
							 | 
							
								 | 
							
							├── train2.py
 | 
						
						
						
						
							 | 
							
								 | 
							
							├── .dsyncconfig
 | 
						
						
						
						
							 | 
							
								 | 
							
							└── .dsyncignore
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Основные возможности
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							- 🚀 **Быстрая синхронизация** - использует rsync для эффективной передачи файлов
 | 
						
						
						
						
							 | 
							
								 | 
							
							- 📊 **Проверка статуса** - показывает изменения перед синхронизацией
 | 
						
						
						
						
							 | 
							
								 | 
							
							- 🔧 **Гибкая настройка** - каждый проект имеет свою конфигурацию
 | 
						
						
						
						
							 | 
							
								 | 
							
							- 🚫 **Игнорирование файлов** - поддержка .dsyncignore для исключения файлов
 | 
						
						
						
						
							 | 
							
								 | 
							
							- 🌐 **Множественные узлы** - синхронизация с несколькими серверами одновременно
 | 
						
						
						
						
							 | 
							
								 | 
							
							- 🎨 **Цветной вывод** - понятная визуализация результатов
 | 
						
						
						
						
							 | 
							
								 | 
							
							- ⚡ **Параллельная обработка** - проверка статуса всех узлов одновременно
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Установка
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Пользовательская установка (в ~/.local/bin)
 | 
						
						
						
						
							 | 
							
								 | 
							
							```bash
 | 
						
						
						
						
							 | 
							
								 | 
							
							curl -fsSL "https://git.ai.infran.ru/ilyukhin/dsync/raw/branch/main/install_dsync.sh" | bash
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Системная установка (в /usr/local/bin) — передаём флаг --system
 | 
						
						
						
						
							 | 
							
								 | 
							
							```bash
 | 
						
						
						
						
							 | 
							
								 | 
							
							curl -fsSL "https://git.ai.infran.ru/ilyukhin/dsync/raw/branch/main/install_dsync.sh" | bash -s -- --system
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Использование
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### Инициализация проекта
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							```bash
 | 
						
						
						
						
							 | 
							
								 | 
							
							cd /workspace/project1
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync init
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Создает файлы:
 | 
						
						
						
						
							 | 
							
								 | 
							
							- `.dsyncconfig` - конфигурация проекта
 | 
						
						
						
						
							 | 
							
								 | 
							
							- `.dsyncignore` - паттерны для игнорирования файлов
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### Управление узлами
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							```bash
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Добавить узлы для синхронизации
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync add-node user@server1.com user@server2.com
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Удалить узел
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync del-node user@server1.com
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Показать все узлы
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync list-nodes
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### Синхронизация
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							```bash
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Проверить статус (что изменится)
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync status
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Выполнить синхронизацию
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync sync
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Конфигурационные файлы
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### `.dsyncconfig`
 | 
						
						
						
						
							 | 
							
								 | 
							
							```json
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							  "master_dir": "/workspace/project1",
 | 
						
						
						
						
							 | 
							
								 | 
							
							  "nodes": [
 | 
						
						
						
						
							 | 
							
								 | 
							
							    "user@server1.com",
 | 
						
						
						
						
							 | 
							
								 | 
							
							    "user@server2.com"
 | 
						
						
						
						
							 | 
							
								 | 
							
							  ],
 | 
						
						
						
						
							 | 
							
								 | 
							
							  "ignore_file": ".dsyncignore"
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### `.dsyncignore`
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Системные файлы
 | 
						
						
						
						
							 | 
							
								 | 
							
							.git/
 | 
						
						
						
						
							 | 
							
								 | 
							
							.gitignore
 | 
						
						
						
						
							 | 
							
								 | 
							
							.dsyncconfig
 | 
						
						
						
						
							 | 
							
								 | 
							
							.dsyncignore
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Python
 | 
						
						
						
						
							 | 
							
								 | 
							
							__pycache__/
 | 
						
						
						
						
							 | 
							
								 | 
							
							*.pyc
 | 
						
						
						
						
							 | 
							
								 | 
							
							*.pyo
 | 
						
						
						
						
							 | 
							
								 | 
							
							.venv/
 | 
						
						
						
						
							 | 
							
								 | 
							
							venv/
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# IDE
 | 
						
						
						
						
							 | 
							
								 | 
							
							.vscode/
 | 
						
						
						
						
							 | 
							
								 | 
							
							.idea/
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Логи
 | 
						
						
						
						
							 | 
							
								 | 
							
							*.log
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# Node.js
 | 
						
						
						
						
							 | 
							
								 | 
							
							node_modules/
 | 
						
						
						
						
							 | 
							
								 | 
							
							.npm
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Примеры использования
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### Базовый workflow
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							```bash
 | 
						
						
						
						
							 | 
							
								 | 
							
							# 1. Инициализация нового проекта
 | 
						
						
						
						
							 | 
							
								 | 
							
							cd /workspace/ml-project
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync init
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# 2. Добавление серверов для обучения
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync add-node gpu-server1.com gpu-server2.com
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# 3. Проверка что будет синхронизировано
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync status
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							# 4. Синхронизация
 | 
						
						
						
						
							 | 
							
								 | 
							
							dsync sync
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### Вывод команды status
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							Checking status for 2 node(s)...
 | 
						
						
						
						
							 | 
							
								 | 
							
							--------------------------------------------------
 | 
						
						
						
						
							 | 
							
								 | 
							
							[OK] gpu-server1.com: Up to date
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							[!] gpu-server2.com: 3 change(s) pending
 | 
						
						
						
						
							 | 
							
								 | 
							
							  NEW FILE: train.py
 | 
						
						
						
						
							 | 
							
								 | 
							
							  UPDATE FILE: config.json (content, timestamp)
 | 
						
						
						
						
							 | 
							
								 | 
							
							  DELETE: old_model.pkl
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							--------------------------------------------------
 | 
						
						
						
						
							 | 
							
								 | 
							
							Summary: 2 active, 0 error(s), 3 total changes
 | 
						
						
						
						
							 | 
							
								 | 
							
							Run 'dsync sync' to apply changes
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							### Вывод команды sync
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							Syncing to gpu-server1.com:/workspace/ml-project...
 | 
						
						
						
						
							 | 
							
								 | 
							
							[OK] Successfully synced to gpu-server1.com
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Syncing to gpu-server2.com:/workspace/ml-project...
 | 
						
						
						
						
							 | 
							
								 | 
							
							[OK] Successfully synced to gpu-server2.com
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Sync completed: 2/2 nodes successful
 | 
						
						
						
						
							 | 
							
								 | 
							
							```
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Команды
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							| Команда | Описание |
 | 
						
						
						
						
							 | 
							
								 | 
							
							|---------|----------|
 | 
						
						
						
						
							 | 
							
								 | 
							
							| `dsync init` | Инициализировать dsync в текущей директории |
 | 
						
						
						
						
							 | 
							
								 | 
							
							| `dsync add-node <node1> [node2...]` | Добавить один или несколько узлов |
 | 
						
						
						
						
							 | 
							
								 | 
							
							| `dsync del-node <node1> [node2...]` | Удалить один или несколько узлов |
 | 
						
						
						
						
							 | 
							
								 | 
							
							| `dsync list-nodes` | Показать все настроенные узлы |
 | 
						
						
						
						
							 | 
							
								 | 
							
							| `dsync status` | Показать статус синхронизации для всех узлов |
 | 
						
						
						
						
							 | 
							
								 | 
							
							| `dsync sync` | Синхронизировать со всеми настроенными узлами |
 | 
						
						
						
						
							 | 
							
								 | 
							
							| `dsync help` | Показать справку |
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Особенности
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							- **Удаление файлов**: Использует `rsync --delete` для удаления файлов на удаленных серверах
 | 
						
						
						
						
							 | 
							
								 | 
							
							- **Тайм-ауты**: Автоматические тайм-ауты для избежания зависания
 | 
						
						
						
						
							 | 
							
								 | 
							
							- **Параллельность**: Проверка статуса всех узлов происходит параллельно
 | 
						
						
						
						
							 | 
							
								 | 
							
							- **Безопасность**: SSH-соединения с отключенной проверкой host key
 | 
						
						
						
						
							 | 
							
								 | 
							
							- **Цветной вывод**: Зеленый для успеха, желтый для предупреждений, красный для ошибок
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Требования
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							- Python 3.6+
 | 
						
						
						
						
							 | 
							
								 | 
							
							- rsync
 | 
						
						
						
						
							 | 
							
								 | 
							
							- SSH-доступ к удаленным серверам
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							## Примечания
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							- Каждый проект должен иметь свою конфигурацию
 | 
						
						
						
						
							 | 
							
								 | 
							
							- SSH-ключи должны быть настроены для работы без пароля
 | 
						
						
						
						
							 | 
							
								 | 
							
							- Изменения в `.dsyncignore` влияют на последующие синхронизации |