Если ты думаешь, что копирование файлов — это просто “скопировать и забыть”, значит, ты либо новичок, либо крутишься в каких-то учебниках с розовыми пони и единорогами. Rsync — это тот самый древний и мёртвый, но очень живучий зверь, что таскает твои данные, не переписывая лишнего и не нудя на каждом шагу. И да, он бывает капризен, но без него ИТ-шнику — как без рук.
Установка — да не такая это и великая проблема
Почти на всех современных Linux и macOS rsync уже стоит и ждёт, пока ты его используешь. Но если по каким-то причинам нет — не парься, устанавливай через менеджер пакетов и не ной.
Ubuntu/Debian:
sudo apt install rsync
CentOS/Fedora:
sudo yum install rsync
Всё. Тупо, просто, работает.
Основы синтаксиса — быстро, чтоб запомнил и не накосячил
Rsync — это утилита, которая таскает файлы с одного места в другое. Тут три сценария:
- Локально → Локально
- Локально → Удалённо
- Удалённо → Локально
Пример простого вызова:
rsync [опции] источник назначение
Где:
опции— флаги, что говорят, как копироватьисточник— откуда копируемназначение— куда кладём
Если копируешь с удалённого сервера — добавь user@host: перед путём.
Что реально стоит знать из опций — минимум для выживания
-a(--archive) — включает почти всё, что нужно: рекурсия, сохранение прав, симлинков, времени и прочего. Не парься — всегда ставь.-z(--compress) — если твой канал дерьмовый, включи сжатие, чтобы меньше гнать по сети.-P— прогресс и докачка. Если передаёшь большие файлы и сеть нестабильна — твой лучший друг.--delete— удаляет лишнее в папке назначения. Полезно, если хочешь точное зеркало, но аккуратно, не перепутай с путями.-q— тихий режим, чтоб не засорять терминал.-e— указываешь, какую оболочку использовать для удалённого подключения, обычно ssh, но можно и кастом.
Практика — примеры из жизни
Копируем файл локально, не парясь
rsync -a /opt/filename.zip /tmp/
Если надо переименовать файл при копировании:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Копируем целый каталог — и не забываем про слэш!
Разница между /path/dir и /path/dir/ — это не просто слэш, а реальный повод выебнуться.
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Здесь копируется только содержимое папки public_html в public_html_backup.
А если забыть слэш, то будет:
rsync -a /var/www/domain.com/public_html /var/www/domain.com/public_html_backup/
В этом случае скопируется сама папка public_html со всем содержимым внутрь public_html_backup. И иногда это ломает сценарии.
Копируем на удалённый сервер
rsync -a /opt/media/ user@remote_host:/opt/media/
Принимающая сторона должна иметь rsync, иначе будешь мучиться.
Если SSH на порту, отличном от стандартного 22:
rsync -a -e "ssh -p 2322" /opt/media/ user@remote_host:/opt/media/
Копируем с удалённого сервера на локалку
rsync -a user@remote_host:/opt/media/ /opt/media/
Исключаем мусор, чтоб не таскать весь ненужный хлам
Ты, конечно, можешь таскать всё подряд, но зачем? Чтобы не тратить время и место, используешь --exclude или --exclude-from.
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
Если список большой, делай отдельный файл с путями и кидай его:
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
Что ещё?
Запускай в screen или tmux, если передаёшь по долгу — чтобы не рвать сессию и не материться на обрыв.
Если есть сомнения — всегда проверяй путь, а то --delete может послать в топку не то, что нужно.
Rsync не любит когда ты меняешь слеши и пути на ходу — уважай его правила, иначе он тебя посылает.
Итог
Rsync — это не игрушка, а инструмент для тех, кто понимает, что копирование — это работа и нервотрёпка одновременно. Он дикий, умный и жесткий. Крути его как хочешь, но уважай.
Если хочешь надежные бэкапы, а не цирк с конями, — смотри в сторону rsync. Но помни: никакой утилитой не заменить голову и внимательность.
0 комментариев