Занятный факап приключился у клиента. На скрине, думаю, понятно, что произошло. Добро пожаловать в Linux!

Переписка об ошибочном удалении crontab.
Эту задачу мне удалось решить за несколько минут, не имея бэкапов, я восстановил ему этот удалённый файл. Как раз способом из этого поста.
Если кратко, я глянул в логи /var/log/cron, взял рандомную таску, которая выполнялась ранее, и вбил:
grep -a -C 500 -F 'console import:reports' /dev/sda1
Соответственно, console import:reports — это часть таски, которая когда-то выполнялась. Команда отработала и нашла мне удалённый cron-файл. Копипаста — и все рады. Но тут, опять же, повезло, что данные не были перезаписаны на диске.
В любом случае можно было бы восстановить по хронологии из файла /var/log/cron, но уже с геморроем. Либо грепнуть CRON в syslog и journald.
На будущее сделал клиенту алиас:
alias crontab="crontab -i"
Этакая защита от дурака и толстых пальцев. Теперь если перепутать «e» и «r», то оно выругается и запросит подтверждение:
crontab: really delete root’s crontab? (y/n)
Ну и на будущее не забывай делать бэкапы. Хотя сколько ни говори, никто не делает, пока петух не клюнет. Хотя сколько меня ни клевал, я всё равно зачастую забиваю — видимо, уверен, что смогу всё восстановить.
Бэкап крона:
@daily crontab -l > $HOME/.crontab
Восстановить:
crontab < $HOME/.crontab
А вообще часто советуют использовать systemd timers вместо cron или systemd-cron: мол, они гибче и безопаснее. Ну, хз, хз — каждый привык выбирать свои игрушки.
Всех с пятницей, хороших предстоящих выходных. Увидимся!







Комментарии