읽기 권한이 있는 디스크 이미지(아마도 분할되어 있음)가 있다고 가정해 보겠습니다. 그러나 루프백*을 통해 설치할 권한이 없습니다. 이론적으로는 데이터가 실제로 존재하지만 데이터는 이미 존재합니다. Linux 커널과 유사한 코드, 파티션 편집기 및 mount
이미지를 구문 분석하고, 파티션을 찾고, 파일 시스템을 해석하고, 파일을 추출하는 나만의 코드를 작성할 수 있습니다. 하지만 그러한 도구가 GNU/Linux 시스템에 이미 존재합니까?
*실제로 저는 이를 처리하기 위한 도구를 작성하고 있으며 (a) 해당 도구의 사용자가 해당 도구를 사용할 수 있다고 가정하고 (b) 필요하지 않은 곳으로 sudo
이동하도록 요구하고 싶지 않습니다 .sudo
( 파일 시스템에 따라 답변이 달라지는 것이 ext2-4
나에게 더 중요할 것입니다 . 그러나 널리 사용되는 여러 파일 시스템에 대한 답변이 선호됩니다.)
답변1
7z(p7zip에서)는 전체는 아니지만 많은 공통 VM 디스크 이미지, 파티션 구성표 및 파일 형식에서 디스크 및 파일 시스템 이미지의 압축을 풀 수 있습니다. https://www.7-zip.org/목록이 있습니다(Windows에서 사용 가능 - p7zip은 Linux/Posix 포트임)
이는 일반적으로 2단계 프로세스입니다.
$ 7z l [raw HD image file]
Path = [raw HD image file]
Type = MBR
Physical Size = 42949672960
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
..... 104857600 104857600 0.ntfs
..... 42842718208 42842718208 1.ntfs
..... 1048576 1048576 2
------------------- ----- ------------ ------------ ------------------------
42948624384 42948624384 3 files
다음 단계:
$ 7z x [raw image file] 0.ntfs
Extracting archive: [raw Image file]
마침내
$ 7z l 0.ntfs
Scanning the drive for archives:
1 file, 104857600 bytes (100 MiB)
Listing archive: 0.ntfs
--
Path = 0.ntfs
Type = NTFS
Physical Size = 104857600
Label = System Reserved
File System = NTFS 3.1
Cluster Size = 4096
Sector Size = 512
Record Size = 1024
Created = 2013-09-10 16:20:30
ID = 591300999067013540
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2013-09-10 16:20:30 ..HS. 262144 262144 [SYSTEM]/$MFT
[Lots of files]
2013-09-10 16:23:30 .RHSA 8192 8192 BOOTSECT.BAK
------------------- ----- ------------ ------------ ------------------------
2014-10-14 16:35:50 23880514 23957604 56 files, 31 folders
2013-09-10 16:20:30 1314956 1318920 3 alternate streams
2014-10-14 16:35:50 25195470 25276524 59 streams
답변2
확장[234]
/dev/whatever의 루트 디렉터리에 파일이 있는 경우 foo
:
debugfs -f <(echo cat /foo) /dev/whatever | tail -n +2 > /restore/file
일반적인 접근
일반적인 접근 방식은 두 개의 디스크 드라이브(원시 모드의 파일)로 가상 머신을 생성하는 것입니다. 하나는 이미지용(가상 머신에 읽기 전용으로 제공됨)이고 다른 하나는 복구 파일용(네트워크를 사용하여 전송할 수 없는 경우)입니다. 문서) .
파일 시스템에 쉽게 액세스할 수 있도록 이미지에서 부팅할 수 있어야 합니다(그렇지 않은 경우: 디스크 드라이브 3개(부팅용 1개)가 있는 가상 머신 생성).
마운트가 불가능하므로 파일 시스템 없이도 인식할 수 있는 형태로 데이터를 작성해야 합니다.
tar -cf /dev/vdc /etc/passwd
호스트 시스템에서는 이미지 파일을 간단히 읽을 수 있습니다.
tar -xf imagefile.img
tar
아카이브의 끝을 식별하고 파일의 나머지 부분은 무시하십시오.