일반화하다
파일이 삭제되기 전에 파일의 정규화된 경로를 알고 있는 경우 LUKS 컨테이너 내부의 LVM 볼륨 내부에 있는 ext4 파일 시스템의 파일을 어떻게 (비교적 쉽고 안정적으로) {복구, 삭제 취소}합니까? (잘못된 용어를 사용한 경우 미리 사과드립니다. 필요한 경우 수정해 주세요.)
세부 사항
좋은 소식은 쉽게 복원할 수 없는 파일(예: 백업)을 실수로 삭제한 지 몇 년이 지났다는 것입니다. 몇 가지 정밀도 용어를 정의합니다.
- 내 파일에 전화하세요. {삭제됨, 복구 요청}
target file
- 이전에 대상 파일이 있던 디렉터리/폴더를 호출합니다.
target dir
- 호출 파티션 {대상 파일이 있던 곳과 대상 파일을 복원하려고 하는 곳}
target partition
나쁜 소식은,
- 지난번에는 대상 파티션이 "단순 ext4"였습니다. 즉, 암호화나 기타 관리가 없었습니다.
LVM2_crypt-home
이번에 대상 파티션은 다음 표에서 이름이 =인 파티션입니다lsblk
.NAME MAJ:MIN SIZE TYPE MOUNTPOINT sda 8:0 465.8G disk ├─sda1 8:1 16.6G part ├─sda2 8:2 97.7G part ├─sda3 8:3 500M part /boot ├─sda4 8:4 1K part └─sda5 8:5 351G part └─LVM2_crypt 254:0 351G crypt ├─LVM2_crypt-swap 254:1 3.9G lvm ├─LVM2_crypt-root 254:2 20G lvm / └─LVM2_crypt-home 254:3 327.1G lvm /home
다음 명령을 사용하여 단순 파티션에서 파일을 복구하는 방법을 기억하는 것 같습니다.확장 삭제: 아래 절차를 참조하세요. 내가 알고 싶은 것은
- 관리 + 암호화 파티션에 대해 동일하거나 유사한 프로세스가 작동합니까? 그렇지 않다면 무엇을 추가, 수정, 삭제해야 합니까?
extundelete
이 사용 사례에 대해 (보다) 더 안정적인 도구가 있습니까? 그렇다면 이 사용 사례의 절차는 무엇입니까?
간단한 파티셔닝 프로세스
내 마지막 절차 - "간단한" ext4 파티션의 경우 - extundelete
다음 (bash) 예제를 사용했습니다.
- 독서
info extundelete
와 (너무 빈약함)문서 삭제 확장(제목 = 까지 아래로 스크롤Documentation
). 복구 등 여기에 표시된 것 이외의 사용 사례도 처리할 수 있습니다.모두파티션에서 파일을 삭제합니다. 대상 파일 지정:
정규화된 경로를 정의하고
TARGET_FQP
기억하세요.아니요사용~
:# CHANGE FOR YOUR USECASE! TARGET_FQP="${HOME}/video/greatest_movie_ever.mp4" echo "TARGET_FQP='${TARGET_FQP}'"
디렉터리/폴더를 정의합니다(대상 파일과 동일한(대상) 파티션에 있다고 가정합니다).
TARGET_DIR="$(dirname "${TARGET_FQP}")" echo "TARGET_DIR='${TARGET_DIR}'"
파일 이름 정의(아래 사용)
TARGET_FN="$(basename "${TARGET_FQP}")" echo "TARGET_FN='${TARGET_FN}'"
대상 디렉터리에서 대상 파티션
TARGET_PART
과 해당 마운트 지점을 식별합니다.TARGET_MP
TARGET_PART="$(df --output=source "${TARGET_FQP}" | tail -1)" echo "TARGET_PART='${TARGET_PART}'" TARGET_MP="$(df --output=target "${TARGET_FQP}" | tail -1)" echo "TARGET_MP='${TARGET_MP}'"
현재 작업 디렉터리(CWD)를 사용하여 원하는 터미널에서 원하는 쉘을 엽니다.
- CWD가 대상이 아닌 다른 파티션에 있습니다. ( 파티션에 대한 정보를 얻으려면 원하는 도구를 사용하십시오.
lsblk
)fdisk
extundelete
찾은 모든 파일(있는 경우)을 CWD 하위 디렉터리 name= 에 복원하므로RECOVERED_FILES
해당 이름의 파일이 이미 있으면 해당 파일을 이동하고 싶을 것 같습니다. (재정의하는 방법을 알고 계시다면 알려주세요. IIRC,--restore-directory
실제로아니요이 작업을 수행. )
- CWD가 대상이 아닌 다른 파티션에 있습니다. ( 파티션에 대한 정보를 얻으려면 원하는 도구를 사용하십시오.
대상 파티션을 읽기 전용으로 다시 마운트합니다.
mount --options remount,ro --source "${TARGET_PART}"
달리기
extundelete
:date # because if this runs too long, you'll wanna give up extundelete --restore-file "${TARGET_FQP}" "${TARGET_PART}"
복구된 파일을 확인하세요.
SAVED_RELPATH="./RECOVERED_FILES/${TARGET_FN}" echo '(hopefully) restored file @' ls -al "${SAVED_RELPATH}"
복구된 file@이
SAVED_RELPATH
원하는 것이라고 가정하면TARGET_PART
읽기/쓰기를 다시 마운트하여 그곳으로 이동할 수 있습니다. 또는 (보통 그렇게 합니다)- 복구된 파일을 외부 백업으로 이동
- 다음으로 PC를 다시 시작하세요.
TARGET_PART
- 복구된 파일을 백업에서 다음으로 복사합니다.
TARGET_DIR
귀하의 수정이나 개선을 환영합니다.