LINUX.ORG.RU

Перенос данных с жесткого диска с бОльшим объемом на меньший

 


0

2

Имеется посыпавшийся жесткий диск с файлового сервера объемом 1ТБ, объем данных 350 ГБ. В систему он даже не монтировался, пока не выполнил «fsck.ext4». Команда «cp» валится в ошибку при обращении к битому сектору диска. Вопрос: 1) Возможно ли с помощью команды ddrescue скопировать именно файлы (350 ГБ), а не сделать копию объемом 1ТБ с одного жесткого диска на другой. В наличии есть только винт объемом 500 Гб. 2) После выполнения

ddrescue --no-split --verbose -f /dev/sdb /dev/sdc /mnt/rescue.log
При попытке монтирования
moutn /dev/sdc2 /mnt
Пишет:
mount: wrong fs type, bad option, bad superblock on /dev/sdc2,
       missing codepage or helper program, or other error
Грубо говоря, ddrescue копировала побайтово 1ТБ на 500Гб, пока не закончилось место. Возможно ли примонтировать этот пятисотник?

Ну я не специалист, но если монтируется, то не проще ли написать скрипт который будет с помощью dd каждый файл (отдельно) копировать на твой новый диск, естественно с включенной опцией игнора ошибок.

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

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

dd if=/mnt/disk1/filename of=/mnt/disk2/filename conv=noerror
А чем считывать имена файлов и каталогов?

greedisgood42rus
() автор топика
Ответ на: комментарий от greedisgood42rus

конструкция вроде этой

while $(find folder -name "*.rar") != "" ; do
    find folder -name "*.rar" -exec unrar ... "{}" folder \;
done

она про разархивирование, но переделать думаю будет не сложно

Noob_Linux ★★★★
()

Я так понял, что диск 1ТБ уже вынут из файл-сервера, а значит предполагаем что работы с ним мы ведём на другой рабочей системе. Нам потребуется раздел там > 1ТБ места - его можно получить хоть организовав через mdadm raid0 массив из флешек - это не важно. Пусть это будет раздел /dev/md127. Создаём там ФС, монтируем как /mnt/md127. Через dd спасаем инфу с /dev/sdc2 в файл на /dev/md127: dd if=/dev/sdc2 of=/mnt/md127/sdc2.dd bs=1M conv=noerror,sync. Монтируем /mnt/md127/sdc2.dd как /mnt/something1. Монтируем 500ГБ винт как /mnt/something2. Переносим с /mnt/something1 на /mnt/something2 данные пофайлово с сохранением прав и владельцев. Отмонтируем всё, вставляем 500ГБ диск в файл-сервер вместо 1ТБ диска, разбираем временный 1ТБ raid0 массив.

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

Можно и так. Я просто не в курсе, насколько критична утечка инфы с диска ТС к третьим лицам. Поэтому не упоминал облачные сервисы :)

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

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

Iron_Bug ★★★★★
()

man fsck.ext4, там есть вызов badblocks.

anonymous
()
Ответ на: комментарий от darkenshvein

а на кой, если тебе надо переносить данные, ты вместо этого переносишь структуру ФС с dd?

Ибо «cp» в ошибку падает, при обращение к битому сектору. Спасибо Noob_Linux, greenman.

#Дано: 
#поврежденный /dev/sdb
#рабочий диск /dev/sdc

#монтируем
mount /dev/sdb2 /mnt/old
mount /dev/sdc1 /mnt/new

#переходим в поврежденный диск
cd /mnt/old

#создаем структуру каталогов
find . -type d -exec mkdir -f /mnt/new/{} \;

#переносим файлы с поврежденного диска на рабочий 
find . -type f -exec ddrescue {} /mnt/new/{} \;

greedisgood42rus
() автор топика
Ответ на: комментарий от greedisgood42rus

#создаем структуру каталогов
find . -type d -exec mkdir -f /mnt/new/{} \;

Лучше (сохраняет права и владельца):

find ./ -type d | cpio -pd /mnt/new/

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