Title: 🚚 RSYNC — File Synchronization Group: Network Icon: 🚚 Order: 8 ## Table of Contents - [Basics](#-basics--основы) - [Remote Sync via SSH](#-remote-sync-via-ssh--синхронизация-через-ssh) - [Mirror & Delete](#-mirror--delete--зеркалирование-и-удаление) - [Exclude Patterns](#-exclude-patterns--исключение-паттернов) - [Backups & Snapshots](#-backups--snapshots--бэкапы-и-снимки) - [Permissions & Ownership](#-permissions--ownership--права-и-владельцы) - [Dry Run & Preview](#-dry-run--preview--пробный-прогон-и-предпросмотр) - [Progress & Stats](#-progress--stats--прогресс-и-статистика) - [Best Practices](#-best-practices--лучшие-практики) --- # 📘 Basics / Основы ```bash rsync -avh --progress / / # Sync directory / Синхронизация каталогов rsync -av / / # Archive mode (preserves permissions) / Архивный режим rsync -avz / / # With compression / Со сжатием rsync -avh / / # Human-readable sizes / Человекочитаемые размеры rsync -aP / / # Archive with progress and partial / С прогрессом и докачкой ``` --- # 🌐 Remote Sync via SSH / Синхронизация через SSH ### Push to Remote / Отправка на удалённый ```bash rsync -avz --progress -e "ssh -p 2222 -i ~/.ssh/id_ed25519" / @:/path/ # Custom SSH port and key / Свой порт и ключ SSH rsync -avz -e 'ssh -p 2222' /data/ @:/backups/ # SSH on custom port with compression / SSH на нестандартном порту со сжатием rsync -av /data/ backup:/backups/ # Use SSH config host alias / Использует псевдоним из ~/.ssh/config ``` ### Pull from Remote / Загрузка с удалённого ```bash rsync -avz --progress @:/path/ .// # Pull from remote / Загрузка с удалённого rsync -avz -e 'ssh -p 2222' @:/var/log/app/ ./logs/ # Pull logs over custom SSH port / Забирает логи по нестандартному порту rsync -avz @:/var/log/myapp/ ./server_logs/ # Pull app logs with compression / Забирает логи с сжатием ``` ### Resume Large Files / Докачка больших файлов ```bash rsync -avh --partial --append-verify / / # Resume large file transfers / Досыл больших файлов rsync -av --progress --partial-dir=.partial-dir @:/big/file.iso ./ # Resume via partial-dir / Докачка в безопасную временную папку ``` --- # 🔄 Mirror & Delete / Зеркалирование и удаление ```bash rsync -av --delete // @:/backup/projects/ # Mirror source to remote / Зеркалирует источник на сервере rsync -avn --delete // @:/backup/projects/ # Dry run with deletions / Пробный запуск с удалениями rsync -avz --delete @:/var/www/ /local/mirror/ # Make exact local mirror / Локальное зеркало сайта rsync -av --delete ~/projects/ /mnt/data/projects_backup/ # Local mirror with deletions / Локальное зеркалирование rsync -avz --delete ./build/ @:/var/www/mysite/ # Deploy build as exact mirror / Деплой сборки как зеркало ``` --- # 🚫 Exclude Patterns / Исключение паттернов ### Basic Excludes / Базовые исключения ```bash rsync -avh --delete --exclude ".git/" --exclude "*.tmp" / / # Exclude patterns / Исключить паттерны rsync -av --exclude='b*' // // # Exclude by simple pattern / Исключает файлы на «b» rsync -av --exclude='data?.csv' // // # Single-character wildcard / Один символ вместо «?» rsync -av *.csv /backup/ # Copy only CSVs using shell glob / Только CSV-файлы ``` ### Exclude from File / Исключения из файла ```bash rsync -av --exclude-from='backup-exclude.txt' ~/important_data/ @:/backups/ # Exclude rules from file / Правила из файла rsync -avh --dry-run --exclude-from=/path/exclude.txt // // # Preview with exclude file / Пробный прогон с исключениями ``` ### Include/Exclude Patterns / Паттерны включения/исключения ```bash rsync -av --include='src/' --include='src/**/*.py' --exclude='*' /source/project/ /backup/project/ # Include-only subtree / Только каталог src и Python rsync -av --include='*/' --include='*.jpg' --include='*.png' --include='*.gif' --exclude='tmp/**' --exclude='*' /photos/ /backup/photos/ # Include images only / Только изображения ``` --- # 💾 Backups & Snapshots / Бэкапы и снимки ### Simple Backups / Простые бэкапы ```bash rsync -a ~/work/ /backups/work.2025-09-17/ # Initial full backup / Первая полная копия ``` ### Hardlink Snapshots / Снимки с жёсткими ссылками ```bash rsync -aH --link-dest=/prev/backup/ // /new/backup/ # Snapshot using hardlinks / Снимок с хардлинками rsync -a ~/work/ /backups/work.2025-09-17/ # Initial snapshot / Начальный снимок rsync -aH --link-dest=/backups/work.2025-09-17/ ~/work/ /backups/work.2025-09-18/ # Incremental snapshot / Инкрементальный снимок rsync -avh --dry-run --link-dest=/snapshots/prev/ // /snapshots/new/ # Preview snapshot / Предпросмотр снимка ``` --- # 👤 Permissions & Ownership / Права и владельцы ### Preserve Ownership / Сохранение владельцев ```bash sudo rsync -a server:/var/www/html/ ./backup/ # Preserve owners as root / Сохраняет владельцев sudo rsync -a // @:// # Push as root / Отправка от root ``` ### Remap Ownership / Переназначение владельцев ```bash rsync -a --usermap=www-data:webadmin --groupmap=www-data:webadmin server:/var/www/ ./backup/ # Remap owner/group / Переназначает владельца rsync -a --usermap='*:backupuser' --groupmap='*:backupuser' // // # Map all users / Меняет всех владельцев rsync -a --numeric-ids server:/var/www/ ./backup/ # Preserve numeric UIDs / Сохраняет числовые UID/GID ``` --- # 🔍 Dry Run & Preview / Пробный прогон и предпросмотр ```bash rsync -avh --dry-run // // # Preview archive copy / Предпросмотр копии rsync -avh --dry-run --itemize-changes // // # Show detailed changes / Детальный список изменений rsync -avh --dry-run --delete // // # Preview deletions / Предпросмотр удалений rsync -avhn --delete / / # Dry-run with deletion preview / Прогон с показом удаления ``` --- # 📊 Progress & Stats / Прогресс и статистика ```bash rsync -avh --progress / / # Show progress per file / Прогресс по файлам rsync -a --info=progress2 // // # Global progress / Глобальный прогресс rsync -avh --bwlimit=2m --info=stats2 / / # Bandwidth limit + stats / Ограничение + статистика rsync -aP // // # Archive with progress and partial / С прогрессом и докачкой rsync -a --partial --partial-dir=.rsync-partials // // # Keep partials in side dir / Недокачанные в отдельной папке ``` ### Bandwidth Limiting / Ограничение пропускной способности ```bash rsync -av --bwlimit=625 @:/data/ /backup/ # Throttle to ~5 Mbps / Ограничить до ~5 Мбит/с rsync -av --bwlimit=1024 @:/data/ /backup/ # Throttle to 1 MiB/s / Ограничить до 1 МБ/с rsync -avh --bwlimit=2m --info=stats2 / / # 2 MB/s limit with stats / 2 МБ/с с статистикой ``` --- # 💡 Best Practices / Лучшие практики ```bash # Always use trailing slashes on source dirs / Всегда используйте слеш в конце исходной папки # rsync / / - copies contents / копирует содержимое # rsync / - copies directory itself / копирует саму папку # Always test with --dry-run first / Всегда тестируйте с --dry-run сначала # Use --delete carefully - can wipe data / --delete опасен - может удалить данные # Use -e "ssh -p " for non-standard SSH / Используйте -e для нестандартных портов SSH # Use --partial for resuming interrupted transfers / --partial для возобновления передач # Use --link-dest for space-efficient snapshots / --link-dest для экономии места # Combine -a with -z for remote syncs / Комбинируйте -a с -z для удалённых синхронизаций ``` # 🔧 Common Flags / Распространённые флаги ```bash # -a — Archive mode (same as -rlptgoD) / Архивный режим # -v — Verbose output / Подробный вывод # -h — Human-readable sizes / Человекочитаемые размеры # -z — Compress during transfer / Сжатие при передаче # -P — Same as --partial --progress / Прогресс + докачка # -n — Dry-run (no changes) / Пробный прогон # --delete — Delete extraneous files / Удалить лишние файлы # --exclude — Exclude pattern / Исключить паттерн # --include — Include pattern / Включить паттерн # --partial — Keep partial files / Сохранять недокачанные # --bwlimit — Limit bandwidth (KB/s) / Ограничить скорость ``` # 📋 Use Cases / Сценарии использования ```bash # Local backup: rsync -avh --progress / /backup/ # Remote push: rsync -avz / @:// # Remote pull: rsync -avz @:// / # Mirror with delete: rsync -av --delete / / # Incremental backup: rsync -aH --link-dest=/prev/ / /new/ # Deploy website: rsync -avz --delete ./build/ @:/var/www/ ```