파일 시스템의 공간을 사용하지 않고 파일을 함께 연결합니다.

파일 시스템의 공간을 사용하지 않고 파일을 함께 연결합니다.

파일 시스템의 공간을 사용하지 않고 Linux에서 두 파일을 결합(연결)하고 싶습니다. 내가 할 수 있을까?

A + B = AB

파일은 파일 시스템의 AB섹터 또는 세그먼트를 사용합니다 A. B이것이 가능합니까?

두 파일을 모두 복사하지 않고도 (느린 프로세스임) gparted새 파일로 인식할 수 있나요 ?AB

답변1

나는 당신이 큰 파일로 나누어진 매우 큰 디스크 이미지를 가지고 있고 그 f1디스크 이미지의 파티션을 수정하고 싶다고 가정합니다. 그런 다음 모든 파일의 크기가 512의 배수라고 가정하면 루트로 이 작업을 수행할 수 있습니다.f2f3

offset=0
for f in f1 f2 f3; do
   loop=$(losetup -f --show -- "$f")
   size=$(blockdev --getsz "$loop")
   printf '%s\n' "$offset $size linear $loop 0"
   offset=$(( offset + size ))
done | dmsetup create myimg

그런 다음 이후에 생성된 파티션을 수행 gparted /dev/mapper/myimg하고 포맷하고 마운트할 수도 있습니다.

장치를 제거하려면:

  • 모든 파일 시스템과 기타 리소스가 마운트 해제/해제되었는지 확인하세요.
  • dmsetup remove myimg
  • losetup -d모든 루프 장치에서 실행됩니다.

답변2

프로세스 대체두 개 이상의 파일을 연결하여 하나의 프로세스의 하나의 파일처럼 보이도록 할 수 있습니다 some_program <(cat A B).

gparted그러나 입력 파일을 수정하도록 설계된 다른 프로그램과 함께 사용하는 것은 의미가 없습니다. 이는 실제 파일이 아니며 FIFO, 익명 파이프 및 임시 파일입니다. 생성된 "파일"은 <()읽기 전용이며 검색할 수 없습니다(즉, 순차적으로만 읽을 수 있음).

프로세스 교체에는 stdout을 프로세스로 리디렉션하는 것도 포함되지만 실제 블록 장치나 디스크 이미지 파일을 기대하는 >()이 방법은 여전히 ​​아무 소용이 없습니다 .gparted

관련 정보