На последних версиях удара можно включить globstar (shopt -s globstar
), и затем сделайте:
cd /tmp/backup
tar cvf - **/*.php | tar xvf - -C /home/mysite/public_html
** соответствия все файлы, директора и subdirs
Я использую tar
здесь, потому что это сохраняет структуру каталогов.
Да, можно сделать это с /sys
файловая система.
/sys
поддельная файловая система, динамично сгенерированная ядром и драйверами ядра.
В этом конкретном случае можно перейти в /sys/block/sda
и Вы будете видеть каталог для каждого раздела на диске. Существует 2 определенных файла в тех папках, в которых Вы нуждаетесь, start
и size
. start
содержит смещение с начала диска, и size
размер раздела. Просто удалите разделы и воссоздайте их с тем же самым, запускается и размеры, как найдено в /sys
.
Например, это - то, на что похож мой диск:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 133119 65536 83 Linux
/dev/sda2 * 133120 134340607 67103744 7 HPFS/NTFS/exFAT
/dev/sda3 134340608 974675967 420167680 8e Linux LVM
/dev/sda4 974675968 976773167 1048600 82 Linux swap / Solaris
И это - то, в чем я имею /sys/block/sda
:
sda1/
start: 2048
size: 131072
sda2/
start: 133120
size: 134207488
sda3/
start: 134340608
size: 840335360
sda4/
start: 974675968
size: 2097200
Я протестировал это, чтобы проверить, что информация является достоверной после изменения таблицы разделов в рабочей системе
Вы попробовали испытательный стенд? Это может просканировать диск и восстановить потерянные таблицы разделов, даже после перезагрузки.
Это доступно предварительно упакованный для Debian и по-видимому для Ubuntu также. Вероятно, другие дистрибутивы.
При начальной загрузке gparted CD, это, вероятно, стоит проверить, чтобы видеть, предварительно установлено ли это на этом.
Я сделал сценарий, чтобы помочь решить эту проблему без ГАРАНТИИ. (но я протестировал на своей виртуальной машине),
Запущение следующего скрипта, с поврежденным HD в первом параметре: $./repart.sh sda
#!/bin/bash
HARDDISK=$1
PARTITIONS=$(ls -d /sys/block/${HARDDISK}/${HARDDISK}?/)
echo "unit: sectors"
for i in $PARTITIONS; do
DEVICE=$(basename $i)
START=$(cat $i/start)
SIZE=$(cat $i/size)
echo "/dev/$DEVICE : start=$START, size=$SIZE, type=XX"
done
Вывод является sfdisk форматом. Но осторожность, этот файл должен быть изменен, чтобы использоваться. При расширенном разделе type=5, увеличьте размер, использовав все логическое пространство плюс пространство между запуском расширенных и запуститесь первого логического раздела.
unit: sectors
/dev/sda1 : start=63, size=2040192, type=XX
/dev/sda2 : start=2040255, size=20482875, type=XX
/dev/sda3 : start=22523130, size=19197675, type=XX
/dev/sda4 : start=41720805, size=2, type=XX
/dev/sda5 : start=41720868, size=208782, type=XX
Необходимо изменить тип, от XX до количества типа раздела. Поместите загрузочный раздел в первую строку.
unit: sectors
/dev/sda1 : start=63, size=2040192, type=83, bootable
/dev/sda2 : start=2040255, size=20482875, type=83
/dev/sda3 : start=22523130, size=19197675, type=fd
/dev/sda4 : start=41720805, size=208845, type=5
/dev/sda5 : start=41720868, size=208782, type=82
Подайте заявку это изменяется
cat repart.sfdisk | sfdisk -f /dev/sda
Перечитайте таблицы разделов
partprobe
/sbin/blockdev --rereadpt
Переустановите личинку
grub-install /dev/sda
/dev/sdb/start
. Это было переименовано кext_range
? Ядро:4.8.15-1-MANJARO
– Tom Hale 18.01.2017, 04:10/sys/block/sdb/start
, нет/dev/sdb/start
– Patrick 18.01.2017, 15:24stat
там, но нетstart
. – Tom Hale 20.01.2017, 08:54fdisk
поскольку это позволяет вводить номер секторов непосредственно, и Вы можете контрольные числа прежде, чем записать в диск. Я успешно восстановил диск: создание первого раздела, принимая быть, затем входя "+size" (сверху) для конца, второго ввода разделаstart
от/sys... и "+size" снова и так далее... Проверьте размер разделов прежде, чем записать новую таблицу.Удачи! – Jörg Gottschlich 28.08.2017, 10:39