TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #832 1.55K
😭 Как один rsync положил прод

Иногда прод падает не из-за zero-day, не из-за DDoS и не из-за кривого кода. Иногда его кладет… обычный rsync.

🔖 Сценарий. Есть:

прод-сервер
staging
cron-задача синхронизации
и уверенность «я же сто раз так делал»

Команда выглядела примерно так:


rsync -av --delete /data/ backup@storage:/prod-data/


Или еще лучше:


rsync -av --delete /data/ /mnt/nfs/prod/


Все работало годами. Пока однажды:

/data не примонтировался
NFS отвалился
переменная с путем оказалась пустой
кто-то перепутал source и destination

И rsync честно сделал то, что должен был сделать.


С --delete.


▪️ Почему это происходит. rsync - не "умная синхронизация". Он синхронизирует состояние директорий. Если source пустой - значит, и на destination должно быть пусто. Логика железная.

Особенно опасные кейсы:

▪️ Не примонтированный диск
/data - пустая локальная папка

rsync --delete удаляет все на целевом хранилище.

▪️ Пустая переменная


SRC=""
rsync -av --delete $SRC /backup/


Подставится / или текущая директория. И дальше - лотерея.

▪️ Перепутаны местами аргументы


rsync -av --delete backup:/data/ /data/


Удаляем прод, потому что backup оказался пустым.

▪️ Что происходит в этот момент

inode удаляются
файловая система занята
приложения падают
БД начинают ругаться
контейнеры теряют volume

А вы смотрите на логи и видите, как rsync методично чистит прод.

▪️ Как не повторить

1️⃣ Всегда делайте dry-run


rsync -av --delete --dry-run ...


Если видите тысячи deleting - остановитесь.

2️⃣ Проверяйте, что диск примонтирован (добавляйте это в скрипты)


mountpoint -q /data || exit 1


3️⃣ Используйте защитные опции


--max-delete=100


Если удалений больше - rsync аварийно завершится.

4️⃣ Делайте snapshot перед синхронизацией.
LVM, ZFS, btrfs - спасают карьеры.

5️⃣ Разделяйте роли.
Бэкап не должен иметь права удалять прод-данные.

#linux #rsync
  • 👍 11
  • 😱 1
More from @networkadminru
  1. Sep 30, 2026🖥 Get-ADUser: полезные примеры для работы с пользователями Active Directory Get-ADUser -…
  2. Sep 30, 2026👁‍🗨 Хочешь разбираться в информационной безопасности, а не просто копировать чужие коман…
  3. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  4. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
  5. Sep 25, 2026🤩 Как расшифровать код ошибки Windows через certutil При установке обновлений Windows ран…
  6. Sep 23, 2026💻 Как жестко перезагрузить linux, когда обычный reboot уже не помогает Иногда сервер зави…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →