Сохраненный по неправильному жесткому диску

Если Вы вводите

command 1 & command 2

это равно

command 1 &
command 2

т.е. это выполнит первую команду в фоне и затем выполняет вторую команду на переднем плане. Особенно это означает, что Ваш echo "done" печатается после command 2 законченный, даже если command 1 все еще работает.

Вы, вероятно, хотите

command 1 &
command 2 &
wait
echo "done"

Это будет выполнять обе команды в фоне и ожидать обоих для завершения.


При нажатии CTRL-C, это только отправит сигнал SIGINT в приоритетный процесс, т.е. command 2 в Вашей версии или wait в моей версии.

Я предложил бы поставить капкан как это:

#!/bin/bash

trap killgroup SIGINT

killgroup(){
  echo killing...
  kill 0
}

loop(){
  echo $1
  sleep $1
  loop $1
}

loop 1 &
loop 2 &
wait

С прерыванием сигнал SIGINT, произведенный CTRL-C, захватывается и заменяется killgroup функция, которая уничтожает все те процессы.

2
16.07.2014, 11:30
2 ответа
[

] Если у вас нет резервных копий, ваши данные не важны. [

] [

] Они пропали. Отмены нет. Особенно, если не задействовано шифрование.[

] [

][] что-то, что производит вывод > /dev/somedisk[] перезаписывает данные на устройстве. Что бы ни было перезаписано, оно не может быть восстановлено, поэтому ваш единственный шанс будет, если вы заметили и отменили его сразу же. Тогда, вероятно, будут отсутствовать только первые несколько сотен мегабайт, и у вас может быть шанс на восстановление, особенно если разделы, которые вы хотите восстановить, начинаются где-то дальше. В этом случае речь идет о восстановлении таблицы разделов, из памяти или с помощью []тестдиска[], []gpart[] или еще чего-нибудь.[

] [

]Если вы не отменили, то это зависит от того, сколько было произведено вывода, i. т.е. в вашем случае, был ли []/dev/sdb[] меньше, чем []/dev/sdc[], поэтому он был только перезаписан до сих пор.[

] [

] Однако, вы говорите, что это был dm-crypt'ed. Обычно это означает LUKS. И у LUKS есть заголовок в начале. Если вы потеряете этот заголовок и контейнер LUKS все еще не открыт, то вы ничего не сможете вернуть. Если он всё ещё открыт, вы хотите сохранить вывод []dmsetup table - showkeys[].[

] [

]Некоторые люди используют LUKS без разбиения диска на разделы, а затем имеют какую-то глупую ошибку в программе разметки или установки, которая ничего не делает, кроме создания маленькой таблицы разделов. Это перезаписывает менее 512 байт в начале диска, но этого всё равно достаточно, чтобы повредить заголовок LUKS и данные будут безвозвратно потеряны.[

].
4
27.01.2020, 21:57

Невозможно восстановить, как это просто.

На заметку, выполнение dd не является идеальным способом резервного копирования файлов. Для будущих случаев подумайте об использовании таких инструментов, как dar - вы хотите некоторого сжатия, инкрементальная резервная копия также позволит вам сэкономить огромное количество времени и дискового пространства в большинстве случаев.

1
27.01.2020, 21:57

Теги

Похожие вопросы