Практическое задание

Эта задача — шаг 12 курса «Архивы и бэкапы»

rsync: зеркало каталога сайта

средне~6 мин

Каталог сайта /var/www/shop нужно держать в резервной копии /mnt/backup/shop — резервный nginx отдаёт сайт прямо из неё. Открой вкладку «Сайт» над терминалом: там до сих пор Shop v1, копия устарела — в ней старые версии файлов и мусор, которого в сайте давно нет. Сделай /mnt/backup/shop точным зеркалом сайта — то же содержимое, без лишних файлов, с теми же правами доступа. Потом обнови вкладку «Сайт».

Что потренируешь:
  • rsync
  • --delete
  • зеркалирование
  • trailing slash
  • права файлов

Разбор темы

Зеркало — это копия, которая совпадает с источником полностью: те же файлы с тем же содержимым и атрибутами и ни одного лишнего. rsync в архивном режиме (-a) переносит только различия и сохраняет права, владельцев и времена, а удаление файлов, исчезнувших из источника, включается отдельно ключом --delete — без него «зеркало» постепенно обрастает мусором. Главная ловушка — завершающий слэш у источника: src/ значит содержимое каталога, src — сам каталог, который окажется на уровень глубже. Результат удобно проверять рекурсивным diff -r, а права — через stat.

Что проверяется

  1. /mnt/backup/shop совпадает с сайтом
  2. права файлов сохранены
  3. сайт не пострадал
  4. резервный сайт отдаёт актуальную версию

Как это выглядит