Синхронизация через rsync в Linux: перенос сотен гигабайт с докачкой
Почему SCP и FTP не подходят для больших объемов?
При переносе папки с картинками или бэкапами весом 500 ГБ стандартный scp при любом сбое сети обрывается и начинает передачу заново с 0%. Утилита rsync сверяет контрольные суммы и передает только недостающие или измененные куски файлов.
Преимущества rsync
- Дозакачка: продолжение передачи с места обрыва.
- Сжатие на лету: экономия входящего/исходящего трафика.
- Сохранение атрибутов: сохраняются владельцы, права и даты файлов.
Команда для надежной миграции данных
- Устанавливаем rsync на обоих серверах:
sudo apt install rsync -y - Запускаем перенос папки на удаленный сервер:
rsync -avzP --partial /var/www/uploads/ user@IP_УДАЛЕННОГО_СЕРВЕРА:/var/www/uploads/
Разбор флагов:
- -a (archive) — режим архива (сохраняет права, владельцев и вложенность папок).
- -v (verbose) — подробный вывод процесса передачи.
- -z (compress) — сжатие данных при передаче по сети.
- -P (progress + partial) — отображение прогресс-бара и сохранение частично переданных файлов для легкой докачки.
Обратите внимание на слэш в конце пути:uploads/ (со слэшем) — скопирует содержимое папки.uploads (без слэша) — создаст саму папку uploads внутри каталога назначения.
Частые вопросы (FAQ)
Как передать данные, если SSH работает на нестандартном порту (например, 2222)?
Используйте ключ -e: rsync -avzP -e 'ssh -p 2222' /local/dir/ user@server:/remote/dir/.
Что делать, если интернет оборвался во время передачи?
Просто запустите ту же команду rsync заново — она мгновенно продолжит с места обрыва.
Как удалить на целевом сервере файлы, которых уже нет в источнике?
Добавьте флаг зеркалирования: --delete.
Как протестировать синхронизацию без реального копирования файлов?
Добавьте флаг безопасного прогона: --dry-run.