Unix/Linux восстанавливает удаленные файлы после удаления/восстанавливает

Во-первых, удостоверьтесь, что Ваш ТЕРМИН является правильным в каждом местоположении:

  • xterm- что-то (например. xterm-256color) в Вашей локальной оболочке, работающей в Вашем iTerm2 окне
  • xterm- что-то в Вашей оболочке после SSHing к системе Linux
    Это должно совпасть с тем, что Вы используете локально в iTerm2, так как SSH должен передавать его удаленной стороне (и, значительно, удаленная сторона не должна вслепую переопределять значение в файле инициализации оболочки).
  • screen- что-то (например. screen-256color) в Вашей оболочке, работающей под tmux в системе Linux
    Необходимо всегда использовать a screen- основанный ТЕРМИН внутри tmux.

Наличие xterm НАЗОВИТЕ сразу снаружи tmux, позволит tmux распознавать измененные клавиши со стрелками, но он не передаст их через, если у Вас также не будет xterm-keys опция окна включена. Вставьте это Ваш ~/.tmux.conf в системе Linux:

set-window-option -g xterm-keys on

Последовательности для клавиш одновременно с "SHIFT" должны теперь сделать его до Emacs, работая внутри tmux, через соединение SSH, в iTerm2 окне.

126
30.04.2014, 01:58
12 ответов

Ссылка, которую кто-то предоставил в комментариях, вероятна Ваша лучшая возможность.

Linux debugfs Взлом: Восстановите Файлы после удаления

Та рецензия, хотя выглядя немного пугающей является на самом деле довольно прямой для следования. В целом шаги следующие:

  1. Используйте debugfs для просмотра журнала файловых систем

    $ debugfs -w /dev/mapper/wks01-root
    
  2. При подсказке debugfs

    debugfs: lsdel
    
  3. Демонстрационный вывод

    Inode  Owner  Mode    Size    Blocks   Time deleted
    23601299      0 120777      3    1/   1 Tue Mar 13 16:17:30 2012
    7536655      0 120777      3    1/   1 Tue May  1 06:21:22 2012
    2 deleted inodes found.
    
  4. Выполните команду в debugfs

    debugfs: logdump -i <7536655>
    
  5. Определите файлы inode

    ...
    ...
    ....
    output truncated
        Fast_link_dest: bin
        Blocks:  (0+1): 7235938
      FS block 7536642 logged at sequence 38402086, journal block 26711
        (inode block for inode 7536655):
        Inode: 7536655   Type: symlink        Mode:  0777   Flags: 0x0   Generation: 3532221116
        User:     0   Group:     0   Size: 3
        File ACL: 0    Directory ACL: 0
        Links: 0   Blockcount: 0
        Fragment:  Address: 0    Number: 0    Size: 0
        ctime: 0x4f9fc732 -- Tue May  1 06:21:22 2012
        atime: 0x4f9fc730 -- Tue May  1 06:21:20 2012
        mtime: 0x4f9fc72f -- Tue May  1 06:21:19 2012
        dtime: 0x4f9fc732 -- Tue May  1 06:21:22 2012
        Fast_link_dest: bin
        Blocks:  (0+1): 7235938
    No magic number at block 28053: end of journal.
    
  6. С вышеупомянутым inode информация выполняет следующие команды

    # dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
    # file recovered.file.001
    file: ASCII text, with very long lines
    

Файлы, восстановленный к recovered.file.001.

Другие опции

Если вышеупомянутое не для Вас, я использовал инструменты такой как photorec для восстановления файлов в прошлом, но это приспособлено для файлов изображений только. Я записал об этом методе экстенсивно на моем блоге в этой названной статье:

Как Восстановить Повреждение jpeg и mov Файлы от Карты Цифрового фотоаппарата SDD на Fedora/CentOS/RHEL.

68
27.01.2020, 19:29
  • 1
    я попробовал debugfs -w /dev/sdb2 но lsdel Саис: 0 deleted inodes found. –  rubo77 11.09.2013, 10:54
  • 2
    extundelete легче для ext3/4 и вероятно привел бы к тем же результатам. –  eadmaster 16.06.2015, 22:54
  • 3
    это работало для восстановления файла, но я получил ��@Y��U���T6 ���*E�0�� ��V'���T�0� <#selinuxsystem_u:object_r:rpm_var_lib_t:s0��} y��U���T6..... пробуя conv=ascii, conv=ibm, и conv=ebcdic, приводит к той же проблеме –  codyc4321 04.08.2015, 21:20
  • 4
    lsdel ответов с 2 предложениями: Файловая система, не открытая, как разрешить его? –  Amitābha 22.10.2015, 12:38
  • 5
    я добираюсь /dev/mapper/wks01-root: No such file or directory while opening filesystem Где Вы получали это /dev/mapper/wks01-root от? –  Marko Avlijaš 02.05.2017, 15:04

Я не соглашаюсь, что это невозможно, просто очень очень трудно, и, и при этом я никогда не делал этого от Linux:

Когда файлы удалены, они на самом деле не удалены. То, что происходит, - то, что пространство, что они были на жестком диске, является видом сброса, так, чтобы, если компьютер пытается записать данные там, ничто не жаловалось. Обычно данные по Вашему жесткому диску, Вы думали, что удалили, могут быть там почти год спустя. Или по крайней мере, это - мой опыт в машине Windows. Работает ли это тот же путь от командной строки на Linux, я не уверен, но Вам, вероятно, был бы нужен отдельный Живой CD для открытия раздела как этот, и нет также никакой гарантии, которая файлы все еще там. Я сделал это на Windows XP несколько раз с помощью Нулевого Восстановления Предположения. Я уверен, что существует подобный инструмент вокруг, если Вы выглядите достаточно твердыми.

1
27.01.2020, 19:29
  • 1
    В зависимости от ситуации это может быть на 100% невозможно. Это может или не может работать, но у Вас НИКОГДА нет гарантий. –  klutt 03.01.2018, 12:16

При удалении файла число каналов в inode таблице для того файла уменьшено одним. В Unix, когда число каналов раскрывается к 0, блоки данных для того файла отмечены как свободные и обычно, ссылки на те блоки данных потеряны. Я просто обнаружил из комментария @fedorqui, что может быть некоторый способ получить доступ к тем блокам, но это только применимо к ext3 файловой системе.

Один способ сохранить файлы будет состоять в том, чтобы записать функцию, которая позволит Вам перемещаться, файлы к области мусора (давайте скажем $HOME/.trash) и восстановите необходимые файлы оттуда. Эта функция может быть искажена к rm. Можно запланировать задание крона для удаления файлов, которые были в области мусора для определенного количества дней.

0
27.01.2020, 19:29

С немного возможности иногда я могу восстановить удаленные файлы с этим сценарием или следующим решением в ответе:

#!/bin/bash

if [[ ! $1 ]]; then
    echo -e "Usage:\n\n\t$0 'file name'"
    exit 1
fi

f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')

if [[ $f ]]; then
    echo "fd $f found..."
    cp -v "$f" "$1"
else
    echo >&2 "No fd found..."
    exit 2
fi

Существует другой полезный прием: если Вы знаете шаблон в своих удаленных файлах, введите alt+sys+resuo к reboot+remount в только для чтения, то с живым CD, использовать grep искать в жестком диске:

grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover

затем редактирование /tmp/recover сохранять только, что было Вашим файлом (файлами) прежде.

Эй, если с философией Unix все - файлы, пора использовать в своих интересах это, нет?

30
27.01.2020, 19:29
  • 1
    Ваш grep основанное решение очень умно и обработано для меня, даже с файловой системой, все еще смонтированной.Спасибо! –  wchargin 27.11.2014, 22:16
  • 2
    , который я не понимаю, как grep решение работало на Вас, оно производит только двоичные данные. Как это полезно? –  w00t 15.08.2016, 03:33
  • 3
    @w00t Несомненно, он "только" выкладывает двоичные данные. Но иногда что двоичные данные, оказывается, содержат биты ASCII, соответствующие файлу, я ищу. Я предполагаю, что не понимаю вопроса? –  wchargin 05.09.2016, 05:17
  • 4
    @w00t прием должен использовать шаблон поиска, который очень характерен для того файла. Команда grep будет проводить эти 500 строк прежде и после каждого согласующего отрезка длинной линии, таким образом, это все еще выложит много несоответствующих данных, но с текстовым редактором, который может справиться с этим (например, Vim), легко разобраться в пользе от плохого материала. Вы могли также отфильтровать все строки с непечатаемыми символами путем передачи по каналу его посредством другой команды grep: grep -av "[^[:print:]]" –  CJStuart 28.03.2017, 22:12
  • 5
    grep решение работало на меня с модификацией: Я сделал sudo grep --line-buffered -ab "$PATTERN" /dev/sda1 | tee lines и получил байтовые смещения (как 123123123:line\n456456456:another\n...), затем сделал n=1000; sudo dd of=before if=/dev/sda1 ibs=1 skip=$[123123123-$n] count=$n и n=1000; sudo dd of=after if=/dev/sda1 ibs=1 skip=123123123 count=$n с различным n значения. –  Kirill Bulygin 05.10.2017, 14:38

Это может сохранить неприятности для некоторых из вас.
Если вы когда-либо использовали Gedit, чтобы редактировать этот файл, по умолчанию будет создан копия этого файла.
Например, давайте предположим, что мы имеем случайность удаленного 'myfile.txt'.
В папке, которая используется для содержения файла, вы только что удалили, используйте эти команды, и вы восстановите копию оттуда:
LS | grep 'myfile.txt ~'
с небольшим количеством удачи вы найдете его, а затем:
CP 'MyFile.txt ~' 'myfile.txt'
Я восстановил файл, только сейчас, используя это метод. Удачи!

0
27.01.2020, 19:29

подключение диска через внешний интерфейс

  1. mount
  2. umount /dev/{sd*}
  3. extundelete --restore-all /dev/{sd*}
  4. results go to home folder on boot drive
  5. bonus points: запишите GUI для этого

Смотрите эту ссылку для получения более подробной информации: недоустановите только что удаленный файл на ext4 с помощью extundelete.

5
27.01.2020, 19:29

На прошлой неделе у меня была такая же проблема, и я перепробовал множество программ, таких как debugfs, photorec, ext3grep и extundelete. ext3grep была лучшей программой для восстановления файлов. Синтаксис очень прост:

ext3grep image.img --restore-all

или:

ext3grep /dev/sda3 --restore-all --after `date -d '2015-01-01 00:00:00' '+%s'` --before `date -d '2015-01-02 00:00:00' '+%s'`

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

6
27.01.2020, 19:29

В качестве альтернативы можно использовать del вместо rm для удаления:

http: // fex .belwue.de / fstools / del.html

del имеет функцию восстановления и работает с любой файловой системой.

Конечно, это не решение, если вы уже удалили свои файлы с помощью rm: -}

6
27.01.2020, 19:29

Herramientas de recuperación -Línea de comando:

Herramientas de recuperación -GUI:

Información:

En mi experiencia personal, recupero mis datos usando ufs -explorer y photorec

(1 )= No es de código abierto, no es gratuito

(2 )= No de código abierto, gratis

(3 )= Código abierto y gratuito

(4 )= Tiene soporte NTFS

(5 )= Tiene función de estructura de directorio


Fuentes:Linuxhacks.org
Divulgación :Soy el propietario de Linuxhacks.org

17
20.08.2021, 13:10

То, что сработало для меня, было дано arch(применимо только к текстовым файлам):

grep -a -C 200 -F 'Unique string in text file' /dev/sdXN

где /dev/sdXN— это раздел, содержащий потерянный файл (проверьте с помощью mount, если вы не уверены ).

Занимает некоторое время, но сработало, когда я случайно удалил исходный код, который еще не зафиксировал!

41
20.08.2021, 13:10

Хотя этот Вопрос решен и ему уже несколько лет, Хочу отметить утилиту testdisk .

Как восстанавливать файлы с помощью testdisk, подробно описано в этом руководстве . Чтобы восстановить файлы, запустите testdisk /dev/sdXи выберите тип таблицы разделов. После этого выберите [ Advanced ] Filesystem Utils, затем выберите свой раздел и выберите [Undelete]. Теперь вы можете просматривать и выбирать удаленные файлы и копировать их в другое место в вашей файловой системе.

16
20.08.2021, 13:10

ext4magic только что успешно восстановил мои удаленные файлы (, включая правильные имена файлов! ), после того как несколько других методов не увенчались успехом.

1
20.08.2021, 13:10

Теги

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