[unix] 유닉스 / 리눅스 삭제 된 파일 삭제 / 복구

삭제 된 파일을 복구 / 삭제 취소하는 명령이 rm있습니까?

$ rm -rf /path/to/myfile

어떻게 복구 할 수 myfile있습니까? 그러한 도구가 있다면 어떻게 사용할 수 있습니까?



답변

댓글에 제공된 사람의 링크가 가장 가능성이 높습니다.

리눅스 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과거에 파일을 복구 하는 등의 도구를 사용 했지만 이미지 파일에만 적합합니다. 나는이 기사에서 내 블로그 에이 방법에 대해 광범위하게 썼다 :

어떻게 페도라 / CentOS는 / RHEL에 디지털 카메라의 SDD 카드에서 손상된 JPEG 및 MOV 파일을 복구하는 방법 .


답변

약간의 기회로 때로는이 스크립트 또는 다음 솔루션으로 삭제 된 파일을 복구 할 수 있습니다.

#!/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를 입력 하여 읽기 전용으로 재부팅하고 다시 마운트 한 다음 live-cd를 사용 grep하여 하드 드라이브에서 검색 하는 또 다른 유용한 트릭 이 있습니다.

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

그런 다음 /tmp/recover파일의 내용 만 유지하도록 편집 하십시오.

유닉스 철학으로 모든 것이 파일이라면, 이것을 활용할 시간이다.


답변

나를 위해 일한 것은 아치 로 제공되었습니다 (텍스트 파일에만 적용).

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

/dev/sdXN손실 된 파일이 들어있는 파티션은 어디에 있습니까 ( mount확실하지 않은지 확인하십시오 ).

시간이 조금 걸리지 만 실수로 아직 커밋하지 않은 소스 코드를 삭제했을 때 작동했습니다!


답변

이 질문이 해결되고 몇 년이되었지만 testdisk 유틸리티 에 대해 언급하고 싶습니다 .

testdisk로 파일을 복구하는 방법은 이 튜토리얼 에서 잘 설명되어 있습니다 . 파일을 복구하려면 testdisk /dev/sdX파티션 테이블 유형을 실행 하고 선택하십시오. 이 후, 선택 [ Advanced ] Filesystem Utils후 파티션을 선택하고 선택 [Undelete]. 이제 삭제 된 파일을 찾아서 선택하여 파일 시스템의 다른 위치로 복사 할 수 있습니다.


답변

지난주에 같은 문제가 있었고 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’

이 비디오 는 당신을 도울 수있는 미니 튜토리얼입니다.


답변

다른 방법 으로 삭제 하는 del대신 사용할 수 있습니다 rm.

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

del 삭제 취소 기능이 있으며 모든 파일 시스템에서 작동합니다.

물론 “포로 수용하지 않음”rm :-}으로 파일을 이미 삭제 한 경우에는 해결책이 아닙니다.


답변

외부 인터페이스를 통해 드라이브 연결

  1. umount /dev/{sd*}
  2. extundelete --restore-all /dev/{sd*}
  3. 결과는 부팅 드라이브의 홈 폴더로 이동
  4. 보너스 포인트 : 이것에 대한 GUI 작성

자세한 내용은이 링크를 참조하십시오 : extundelete를 사용하여 ext4에서 방금 삭제 한 파일의 삭제를 취소하십시오 .