Linux восстановить удаленные файлы xfs

Резервное копирование и восстановление XFS

Резервное копирование и восстановление файловой системы XFS включает две утилиты: xfsdump и xfsrestore.

Для резервного копирования или выгрузки файловой системы XFS используйте утилиту xfsdump.
xfsdump поддерживает инкрементные резервные копии и может исключать файлы из резервной копии, используя флаги размера, поддерева или inode для их фильтрации.

Для поддержки инкрементного резервного копирования xfsdump использует уровни дампа, чтобы определить базовый дамп, к которому относится определенный дамп.
Опция -l указывает уровень дампа (0-9).

Выполнить полное резервное копирование на /dev/device, дамп уровня 0 файловой системы /path/to/filesystem:
# xfsdump -l 0 -f /dev/device /path/to/filesystem

Параметр -f указывает место назначения для резервной копии.
Например, место назначения /dev/st0 обычно используется для ленточного накопителя.
Назначением xfsdump может быть ленточный накопитель, обычный файл или удаленное ленточное устройство.

При инкрементном копировании будут только дампы файлов, которые изменились с момента последнего дампа уровня 0.
Дамп уровня 1 — это первый инкрементный дамп после полного дампа
Следующим инкрементным дампом будет уровень 2 и т. д. максимум до уровня 9.

Чтобы выполнить дамп уровня 1 на ленточный накопитель:
# xfsdump -l 1 -f /dev/st0 /path/to/filesystem

Утилита xfsrestore восстанавливает файловые системы из дампов, созданных xfsdump.
Утилита xfsrestore имеет два режима: простой режим по умолчанию и накопительный режим.

Конкретные дампы определяются по идентификатору сеанса или метке сеанса.
Таким образом, для восстановления дампа требуется соответствующий идентификатор сеанса или метка.

Отобразить идентификатор сеанса и метки всех дампов (полных, так и инкрементных), используйте параметр -I:
# xfsrestore -I

Это обеспечит вывод, подобный следующему

Пример: Идентификатор сеанса и метки всех дампов:
file system 0:
fs id: 45e9af35-efd2-4244-87bc-4762e476cbab
session 0:
mount point: bear-05:/mnt/test
device: bear-05:/dev/sdb2
time: Fri Feb 26 16:55:21 2010
session label: «my_dump_session_label»
session id: b74a3586-e52e-4a4a-8775-c3334fa8ea2c
level: 0
resumed: NO
subtree: NO
streams: 1
stream 0:
pathname: /mnt/test2/backup
start: ino 0 offset 0
end: ino 1 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 21016
mfile start: ino 0 offset 0
mfile end: ino 1 offset 0
media label: «my_dump_media_label»
media id: 4a518062-2a8f-4f17-81fd-bb1eb2e3cb4f
xfsrestore: Restore Status: SUCCESS

Простой режим для xfsrestore

Простой режим позволяет пользователям восстанавливать всю файловую систему из дампа уровня 0.
После определения идентификатора сеанса дампа уровня 0 (то есть идентификатора сеанса) восстановите:
# xfsrestore -f /dev/st0 -S session-ID /path/to/destination

Параметр -f указывает местоположение дампа, а параметр -S или -L указывает, какой конкретный дамп необходимо восстановить.
Параметр -S используется для указания идентификатора сеанса, а параметр -L — для меток сеанса.
Опция -I отображает метки сеанса и идентификаторы для каждого дампа.

Читайте также:  Сетевой файловый сервер linux

Накопительный режим для xfsrestore

Накопительный режим xfsrestore позволяет восстанавливать файловую систему из определенной инкрементной резервной копии, например, с уровня 1 до уровня 9.
Чтобы восстановить файловую систему из инкрементной резервной копии, просто добавьте параметр -r:
# xfsrestore -f /dev/st0 -S session-ID -r /path/to/destination

Интерактивная операция

Утилита xfsrestore также позволяет извлекать, добавлять или удалять определенные файлы из дампа.
Чтобы использовать xfsrestore в интерактивном режиме, используйте параметр -i, например:
# xfsrestore -f /dev/st0 -i

Интерактивный диалог начнется после того, как xfsrestore завершит чтение указанного устройства.
В этом диалоговом окне доступны следующие команды: cd, ls, add, delete и extract
Для полного списка команд используйте help

Для получения дополнительной информации о дампе и восстановлении файловых систем XFS обратитесь к man xfsdump и man xfsrestore

Показательный пример работы

Есть два диска по гигабайту /dev/sdb и /dev/sdc

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 1014M 33M 982M 4% /data1
/dev/sdc 1014M 33M 982M 4% /data2

Установка xfsdump в centos:
# yum install xfsdump

Подопытные файлы:
# echo «test1» > /data1/testfile1 && echo «test1» > /data1/testfile2

Делаем 0й дамп каталога /data1 (указал session label — 1):
# xfsdump -l 0 -f /data2/b1 /data1 -L 1st_backup

Продолжаем опыты:
# echo «test2» >> /data1/testfile1 && echo «test2» >> /data1/testfile3

Делаем 0й дамп каталога /data1 (указал session label — 2):
# xfsdump -l 0 -f /data2/b2 /data1 -L 2st_backup

Продолжаем опыты:
# rm /data1/testfile2 /data1/testfile3 && echo «test3» > /data1/testfile1

Смотрим информацию по дампам:
# xfsrestore -I
file system 0:
fs id: 6b62efca-8f35-4d0d-b94e-334297e3c95c
session 0:
mount point: centos1:/data1
device: centos1:/dev/sdb
time: Wed May 15 05:32:05 2019
session label: «1st_backup»
session id: f10d6efe-7b3b-46e6-9b83-a57cd384ee74
level: 0
resumed: NO
subtree: NO
streams: 1
stream 0:
pathname: /data2/b1
start: ino 67 offset 0
end: ino 69 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 23416
mfile start: ino 67 offset 0
mfile end: ino 69 offset 0
media label: «1»
media id: 2b26b566-d7e4-46db-9ab3-f8cd0c2a0d08
session 1:
mount point: centos1:/data1
device: centos1:/dev/sdb
time: Wed May 15 05:32:15 2019
session label: «2st_backup»
session id: b3f6a2de-2754-47cb-a2ad-2146a4161237
level: 0
resumed: NO
subtree: NO
streams: 1
stream 0:
pathname: /data2/b2
start: ino 67 offset 0
end: ino 70 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 24616
mfile start: ino 67 offset 0
mfile end: ino 70 offset 0
media label: «2»
media id: b3eec203-6dcd-4fe5-b083-0470bd9375f0
xfsrestore: Restore Status: SUCCESS

Читайте также:  Guild wars 2 on linux

Итого имеем:
# ls -l /data1/ && cat /data1/testfile1
total 4
-rw-r—r—. 1 root root 6 May 15 05:32 testfile1
test3

Восстановление

Восстанавливаем дамп из сессии 1:
# xfsrestore -f /data2/b1 -S «f10d6efe-7b3b-46e6-9b83-a57cd384ee74» /data1

Проверяем:
ls -l /data1/ && cat /data1/testfile1 && cat /data1/testfile2
total 8
-rw-r—r—. 1 root root 6 May 15 05:32 testfile1
-rw-r—r—. 1 root root 6 May 15 05:32 testfile2
test1
test1

Восстанавливаем дамп из сессии 2:
# xfsrestore -f /data2/b2 -S «b3f6a2de-2754-47cb-a2ad-2146a4161237» /data1

Проверяем:
# ls -l /data1/ && cat /data1/testfile1 && cat /data1/testfile2 && cat /data1/testfile3
total 12
-rw-r—r—. 1 root root 12 May 15 05:32 testfile1
-rw-r—r—. 1 root root 6 May 15 05:32 testfile2
-rw-r—r—. 1 root root 6 May 15 05:32 testfile3
test1
test2
test1
test2

Продолжаем опыты:
# rm /data1/testfile2 /data1/testfile3 && echo «test3» > /data1/testfile1

Итого имеем:
# ls -l /data1/ && cat /data1/testfile1
total 4
-rw-r—r—. 1 root root 6 May 15 05:42 testfile1
test3

Восстанавливаем отдельные файлы в интерактивном режиме:
# xfsrestore -f /data2/b2 -i /data1
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) — type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: centos1
xfsrestore: mount point: /data1
xfsrestore: volume: /dev/sdb
xfsrestore: session time: Wed May 15 05:32:15 2019
xfsrestore: level: 0
xfsrestore: session label: «2st_backup»
xfsrestore: media label: «2»
xfsrestore: file system id: 6b62efca-8f35-4d0d-b94e-334297e3c95c
xfsrestore: session id: b3f6a2de-2754-47cb-a2ad-2146a4161237
xfsrestore: media id: b3eec203-6dcd-4fe5-b083-0470bd9375f0
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 3 entries processed
xfsrestore: directory post-processing

the following commands are available:
pwd
ls [ ]
cd [ ]
add [ ]
delete [ ]
extract
quit
help

-> ls
69 testfile3
68 testfile2
67 testfile1

-> add testfile1

-> add testfile2

xfsrestore: restoring non-directory files
xfsrestore: restore complete: 83 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /data2/b2 OK (success)
xfsrestore: Restore Status: SUCCESS

# ls -l /data1/ && cat /data1/testfile1 && cat /data1/testfile2
total 8
-rw-r—r—. 1 root root 12 May 15 05:32 testfile1
-rw-r—r—. 1 root root 6 May 15 05:32 testfile2
test1
test2
test1

Управлять сессиями (например удалить сессию) можно тут:
# xfsinvutil -i

? — выдаст подсказку по действиям

xfsinvutil: version 3.1.7
fs: centos1:/data1
inv file: 5e303e9c-cdf8-4882-a49a-302989583f0c.StObj
session level: 0 label: 1st_backup
session level: 0 label: 2st_backup
—————————
| Menu Help |
| |
| +: Expand |
| -: Collapse |
| *: Expand Tree |
| %: Collapse Tree |
| d: Delete |
| u: Undelete |
| i: Import Inventory |
| x: Commit & Exit |
| q: Quit |
| : Select |
—————————

Читайте также:  Asus zenbook linux driver

session entry
pruned: no, flags: 0, time: Wed May 15 05:32:15 2019
mountpt: centos1:/data1, fsid: 6b62efca-8f35-4d0d-b94e-334297e3c95c
device: centos1:/dev/sdb, sesid: b3f6a2de-2754-47cb-a2ad-2146a4161237
Hit any key to continue.

Источник

Админим локалку

После беглого гугления понял что восстановить удаленные файлы с XFS невозможно, и что стоит попробовать утилиты scalpel и foremost. Обе установились с родных Ubuntu репозитариев.

Файлы были удалены с сетевого ресурса Samba. Сама Ubuntu Server установлена на VMware ESXi. Система на ext3, примаунтен виртуальный винт на 250 Гб с файловой системой XFS — он и расшарен под сетевые диски.

Перед запуском редактируем /etc/scalpel/scalpel.conf

Раскоментируем строки с нужными расширениями файлов. Не нашел XLS. Загрустил.

Запускается все дело командой:
scalpel /dev/sdb -o /mnt/dsk2/recovery

Сканируется весь раздел, времени ушло много, скорость судя по всему небольшая. Проц грузил все время на 70-90%. Нашел очень много файлов, но больше половины из них были битыми и не открывались. Все вывалил в одну кучу, с ниочем не говорящими названиями файлов. Как я понял после удаления в Linux уже невозможно восстановить имя файла и дату создания/редактирования.

Так как xls файлы scalpel не умеет? восстанавливать, решил пробовать foremost.

FOREMOST
foremost -v -T -t xls -i /dev/sdb -o /mnt/dsk2/recovery

-v – инфориация о прогрессе сканирования — практически бесполезная штука.

-Т – покажет время в названии папок для восстановленных файлов — ничего не показал (возможно потому что все таки xfs)

-t xls,png,bmp – восстанавливать только файлы нужного типа, например *xls

Просканировал шустро. Вывалил все файлы с рандомными названиями в кучу. Получилось около 5 тысяч excel файлов — дальше разбирайся как хочешь.

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

Кстати ни одна программа не работает с файловой системой XFS — по крайней мере не нашел в описании. Еще все осложнялось тем, что диск с которого шло восстановление нельзя было отключать, нельзя также было отключить и сетевой ресурс с которого удалились файлы. Сканирование шло на живую, что естественно недопустимо, по идее, так как и ежу понятно что после «инцидента» раздел нужно отключить, или примаунтить только для чтения. И уже точно никакие файлы на него не записывать.

Источник

Оцените статью
Adblock
detector