LINUX.ORG.RU

Случайно перезаписал файл, помогите

 , ,


0

2

Привет. Случайно перезаписал файл с помощью tar, было это примерно так:

~# tar -cz /var/lib/mysql > /home/mysql.tar.gz

~# rm -r /var/lib/mysql

~# tar -cz /var/lib/mysql > /home/mysql.tar.gz

Вместо последней строчки должно было быть совершенно нечто другое, но кого это теперь волнует. Короче, /home/mysql.tar.gz теперь весит 42байта. Таким образом я удалил и БД и бекап БД.

Кто-нибудь подскажет, как можно полазить по inod'ам и найти старую версию /home/mysql.tar.gz?


Ответ на: комментарий от Xlab

Тебе уже ничего не поможет, нужно было стразу перемонтировать в режим только для чтения.

bhfq ★★★★★ ()
Ответ на: комментарий от Xlab

Есть, но против overwritten они не помогают, как я понял А в /var/lib/mysql было более 1000 файлов

1. photorec может восстановить вам многие из 1000+ файлов в /var/lib/mysql

2. при перезаписи > /home/mysql.tar.gz гарантированно уничтожается в EXT3,4 только первый блок. Остальные НЕ уничтожаются, т.к. файл усекается до нулевого размера (кстати, про первый блок это тоже мои догадки, надо сырцы смотреть, возможно при усечении до нуля берётся не первый блок, а какой-то из свободных). Разнообразные undelete могут найти информацию про старые блоки в журнале. (внимание! _могут_, но не обязаны). Хотя, после энтропийного кодирования gzip'ом будет сложновато выделить информацию без первого блока, но я думаю - можно. За десяток килорублей (5К сразу + 5К в случае успеха), я-бы взялся за решение этой интересной проблемы (я про gzip, восстановлением заниматься не интересно, обратитесь в ближайшую контору. Это ремесло).

drBatty ★★ ()
Ответ на: комментарий от Xlab

и да, частично убитую MySQL базу довольно просто восстановить штатными методами. Буквально сегодня восстановил (а лениво было бекап разворачивать, да и БД чисто тестовая).

нужно было стразу перемонтировать в режим только для чтения.

ну это само собой разумеется. Почему вы решили, что это не было сделано?

drBatty ★★ ()
Ответ на: комментарий от drBatty

Бд убита не частично, а полностью (кроме этого, mysqld был закрыт, то есть lsof даже бы не спас)

Ладно, буду восстанавливать БД по html-кешу данных. Мир, труд, скоро май.

Xlab ()

Таким образом я удалил и БД и бекап БД.
кого это теперь волнует

Вы сами ответили на свой вопрос. На ошибках учимся.

comp00 ★★★★ ()
Ответ на: комментарий от no-dashi

Он не удалил, он ПЕРЕЗАПИСАЛ. Сам контент файла. Всё, это п..ц.

перечитай первый пост: он перезаписал файл /home/mysql.tar.gz, а вот /var/lib/mysql/ он просто удолил. Есть за что бороться, особенно если /home/ и /var/ в разных разделах ФС.

drBatty ★★ ()
Ответ на: комментарий от drBatty

ну и опять-таки повторюсь - для ПЕРЕЗАПИСИ требуются специальные меры. Файл нельзя усекать до нуля, как делает это перенаправление >. Т.е. перенаправление не пишет в этот файл, а _сначала_ уменьшает его размер до нуля байт, а уж потом начинает писать туда данные. Где эти данные окажутся - неизвестно.

drBatty ★★ ()

Оффтопик. Если MySQL устанавливал не ты, есть шанс что твой предшественник настроил бекапы. И ещё есть дохленький шанс что простейший бекап настроили мейнтейнеры mysql из твоего дистрибутива

router ★★★★★ ()

Пиши по собственному желанию :-)

r2d2 ()

В таких случаях на локалхосте нужно тыкать reset сразу же, тогда есть шансы. Естественно, если ФС журналируемая.

leave ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.