Когда нужно перекинуть много файлов — будь то резервное копирование или синхронизация папок между устройствами, — RSYNC станет твоим лучшим другом. Эта утилита избавляет от мучительного ручного копирования и долгих ожиданий завершения процесса.
1. Зачем нужен RSYNC?
RSYNC — это инструмент командной строки для Linux, Mac и даже Windows (при установке соответствующих пакетов). Его главные преимущества:
✅ Быстро копирует файлы внутри одного компьютера.
✅ Передаёт файлы между разными машинами (например, с ноутбука на сервер).
✅ Работает умно: отправляет только обновленные файлы, экономя трафик и время.
✅ Может докачать передачу, если соединение оборвалось.
✅ Выполняется в фоне, позволяя заниматься своими делами дальше.
Короче говоря, если утомило переносить файлы вручную или наблюдать бесконечные часы работы scp
или cp
, RSYNC решит проблему!
2. Установка RSYNC
Linux (Ubuntu/Debian)
sudo apt update && sudo apt install rsync -y
Linux (CentOS/RHEL/Fedora)
sudo yum install rsync -y # Или sudo dnf install rsync
macOS
По умолчанию уже установлен, но можно обновить:
brew install rsync
Windows
Используем WSL (Linux в Windows) или Cygwin.
3. Основные команды RSYNC
📌 Локальное копирование папки
rsync -av /source_dir/ /destination_dir/
Параметры:
- -a: архивный режим (права доступа, структура каталогов сохраняются);
- -v: выводит подробную информацию о процессе.
Например:
rsync -av ~/Pictures/ /backup/Pictures_backup/
📌 Клонируем папку с удаленного сервера через SSH
rsync -avz -e ssh username@remote_server:/path/to/source/ /local/path/
Здесь:
- -z: сжатие файлов перед передачей (полезно при слабом интернете);
- -e ssh: используем протокол SSH для безопасности.
Пример:
rsync -avz -e ssh alexei@192.168.1.10:/home/alexei/Documents/ ~/Backup/
📌 Переносим локальные файлы на сервер
rsync -avz -e ssh /local/path/ username@remote_server:/target_path/
4. Дополнительные полезные опции
🚀 Копируем только новые файлы
rsync -av --ignore-existing /src/ /dst/
Это позволяет избежать перезаписи старых версий.
🗑 Убираем лишние файлы из целевой директории
rsync -av --delete /src/ /dst/
Удаляет ненужные файлы из приемника, если их нет в источнике.
⏸ Продолжение прерванной передачи
rsync -av --partial --progress /big_file /dst/
Можно сократить до -P.
🚫 Исключение определенных типов файлов
rsync -av --exclude="*.log" --exclude="cache/*" /src/ /dst/
Игнорирует указанные шаблоны.
🐢 Ограничиваем скорость передачи
rsync -av --bwlimit=1000 /src/ remote_user@server:/dst/
Значение задаётся в килобайтах в секунду (--bwlimit=1000
→ ограничение скорости 1 Мбит/с).
🔍 Проверяем, что произойдет без фактического копирования
rsync -avn /src/ /dst/
Опция -n («dry run») покажет изменения без реальных действий.
5. Автоматизируем процесс
Запуск по расписанию с Cron
Добавляем задание в crontab:
crontab -e
И добавляем команду запуска, например:
0 3 * * * rsync -avz /home/user/Important_files/ user@backup-server:/backups/
Простой bash-скрипт для регулярных бэкапов
Создаем файл backup.sh
:
#!/bin/bash
rsync -av --delete --backup --backup-dir=/backups/$(date +%Y-%m-%d) /data/ /backup/
Делаем его исполняемым:
chmod +x backup.sh
Теперь можем запускать командой:
./backup.sh
6. Восстановление файлов из резервной копии
При необходимости восстановить данные:
rsync -av /backup/ /original_folder/
Заключение
RSYNC — простой и мощный инструмент для быстрой и удобной работы с файлами. Больше никаких страданий с ручной обработкой и длительным ожиданием копирования! Главное помнить базовые команды:
- Локальное копирование:
rsync -av
- Загрузка на сервер:
rsync -avz -e ssh
- Скачивание с сервера:
rsync -avz -e ssh
- Докачка файла:
rsync -avP