Мне нужно перенести всю корневую файловую систему Linux с неисправного жесткого диска на другой компьютер с открытым доступным разделом. Я уверен, что это включает в себя tar
и ssh
, но я не могу вспомнить, как именно это сделать.
Я, вероятно, представляю себе, используя live cd на новом / целевом хосте, чтобы запустить что-то вроде этого:
ssh user@failingharddrivehost "some tar command | piped into something else"
ssh user@failingsys "tar cfz - /" > oldsys.tar.gz
Ответы:
Используйте rsync. С нового хоста вы можете использовать
rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/
Я не стал бы пытаться использовать что-то вроде tar, потому что это, вероятно, не будет работать, когда есть битые файлы
источник
Если оба компьютера находятся в одной (безопасной) локальной сети, я рекомендую использовать другой подход
netcat
. Это обычно намного быстрее, так как не шифрует данные.который открывает прослушивающий порт 1234 на хорошем компьютере
netcat -l -p 1234
иtar
передает входящие данные для извлечения (с сохранением mtime и разрешений). Плохой хост отправляет данные на этот порт, также используяtar
иnetcat
. Я включил некоторые--exclude
параметры, так как/proc
и/sys
являюсь виртуальными файловыми системами и, следовательно, бесполезен на новом хосте. (особенно файл, представляющий вашу оперативную память в (/proc/kcore
) добавит ненужный объем данных).Тем не менее, вы должны (также) рассмотреть возможность создания
dd
дампа разделов неисправного диска:где вы должны были принять
/dev/sda1
правильное устройство. Сделайте то же самое с другими разделами на неисправном диске.С этим дампом вы уверены, что не пропустили никаких важных метаданных (например, ACL), которые
tar
не будут записываться.источник
Почему вы сочетаете с каталогом, кроме? Не лучше ли смонтировать это устройство в другой каталог? современные ядра позволяют так. например, вы установили
/ dev / sda1 как / затем выполните: mkdir / CLEANROOT mount / dev / sda1 / CLEANROOT
после этого у вас есть: / dev / sda1 как / / dev / sda1 как / CLEANROOT
Это та же файловая система, видимая в двух местах, но / CLEANROOT не имеет аддитивного монтирования. Затем вы можете использовать tar или rsync / CLEANROOT без каких-либо исключений вместо копирования / с исключениями.
Конечно, вы должны скопировать другие разделы данных, когда у вас есть.
Копирование раздела - это первый шаг к восстановлению сервера. другой - восстановить загрузочные секторы, иначе система не загрузится с скопированного диска. Полезным является режим восстановления при загрузке с установочного / аварийного CD или pendrive.
источник
У вас есть физический доступ к отказавшему хосту?
Если вы это сделаете, то загрузитесь с live CD. Тогда используйте:
исключающий синтаксис:
tar --exclude='/dev'
.rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination
Если вы не можете загрузиться с живого компакт-диска, некоторые из приведенных выше решений останутся прежними, но:
Например
tar --exclude='/dev' --exclude='/proc'
источник
#mount /dev/sda1 /mnt/fedora
mount: unknown filesystem type 'LVM2_member'
Вот описание того, как копировать файлы, используя
tar
иssh
. По сути, вы должны выполнить одно из следующих действий, в зависимости от того, хотите ли вы скопировать локальный -> удаленный или удаленный -> локальный:источник
вы должны рассмотреть возможность использования rsync
следующая команда предполагает 2 вещи:
rsync / new_partition:/wherever/you/want/
Примечание: конечный / важен, иначе ваши файлы окажутся на одном уровне каталогов выше
источник
-a
параметр (и, возможно,-A
), поскольку он сохраняет время, владельца, символические ссылки (и, возможно, ACL) и т. Д., А также-e ssh
параметр, поскольку данные должны передаваться на другой компьютер. Итакrsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint