마운트된 이미지에서 파일을 제거하여 ISO를 다시 빌드하는 방법은 무엇입니까?

마운트된 이미지에서 파일을 제거하여 ISO를 다시 빌드하는 방법은 무엇입니까?

다음 내용으로 ISO를 만들었습니다.

Directory listing of /
d---------   0    0    0            2048 Mar 19 2015 [     29 02]  .
d---------   0    0    0            2048 Mar 19 2015 [     29 02]  ..
d---------   0    0    0            4096 Mar 19 2015 [     32 02]  target-rpms
d---------   0    0    0            2048 Mar 19 2015 [     34 02]  vat
Directory listing of /target-rpms/
d---------   0    0    0            4096 Mar 19 2015 [     32 02]  .
d---------   0    0    0            2048 Mar 19 2015 [     29 02]  ..
----------   0    0    0        32435902 Mar 18 2015 [     85 00]  file1.rpm
----------   0    0    0         2055833 Mar 18 2015 [  15923 00]  file2.rpm
Directory listing of /vat/
d---------   0    0    0            2048 Mar 19 2015 [     44 02]  .
d---------   0    0    0            2048 Mar 19 2015 [     29 02]  ..
----------   0    0    0               0 Apr 20 2015 [  56633 00]  file1.txt

ISO 탑재 이미지에서 파일을 추가/제거하고 싶어서 다음과 같이 했습니다.

  sudo mount -o loop,ro /full/path/to/file.iso /mounted/path

파일을 추가하려면 다음 방법을 찾았습니다.

mkdir /path/where/put/addedFile/vat/
cp prova.txt /path/where/put/addedFile/vat/prova.txt
mkisofs -o /tmp/test.iso -A test-1.0 -copyright 'Test' -joliet-long -RU
 -uid 0 -gid 0 -iso-level 4 /mounted/path /path/where/put/addedFile

효과적으로 mkisofs파일은 디렉터리에 병합되고 test.iso필요한 모든 파일을 포함합니다.

test.iso예를 들어 없이 이 작업을 수행하는 방법에 대한 조언이 필요합니다 target-rpms/file2.rpm.

나는 이 작업을 수행하기 위해 다음 프로그램을 사용할 수 있다는 것을 알고 있습니다.

mkdir /path/where/rebuildIso
cp -R /mounted/path /path/where/rebuildIso
rm /path/where/rebuildIso/target-rpms/file2.rpm
mkisofs -o /tmp/test.iso -A test-1.0 -copyright 'Test' -joliet-long -RU
 -uid 0 -gid 0 -iso-level 4 /path/where/rebuildIso

cp하지만 iso 크기 때문에 명령을 피하고 싶습니다 .

Red Hat Enterprise Linux AS 버전 3(Taroon 업데이트 2)에서 mkisofs 2.01(i686-pc-linux-gnu)을 사용하고 있습니다.

답변1

실제로 mkisofs 2.01은 genisoimage를 가리킵니다:

$ mkisofs --version
mkisofs 2.01 is not what you see here. This line is only a fake for too clever
GUIs and other frontend applications. In fact, this program is:
genisoimage 1.1.11 (Linux)

man genisoimage다음 옵션을 시도해 볼 수 있습니다 -m.

-m glob
          Exclude files matching glob, a shell wildcard pattern, from being written to CD-ROM.  glob may match either the filename component or the full pathname.  This option may be used multiple times.  For example:

               genisoimage -o rom -m '*.o' -m core -m foobar

          would exclude all files ending in `.o', or called core or foobar from the image.  Note that if you had a directory called foobar, it too (and of course all its descendants) would be excluded.

   -exclude-list file
          A file containing a list of shell wildcards to be excluded.  See -m.

답변2

find기억하기 더 쉬운 방법은 12 이후 버전에 있었던 내장 기능(libfind를 통해)을 사용하는 것입니다 mkisofs. 따라서 2006년 여름 이후에 OS 설치를 업데이트했다면 다음과 같이 사용할 수 있습니다.

mkisofs -o /tmp/test.iso -R -find  /mounted/path ! -name '*.rpm'  -chown root -chgrp root

여러 소스 경로를 병합하려면 거기에 더 많은 경로를 추가하기만 하면 됩니다 -find.

대상 경로를 사용하려면 -graft-points내장 경로에도 적용되는 옵션을 선택하세요.find

매뉴얼 페이지를 참조하십시오:http://schilytools.sourceforge.net/man/man8/mkisofs.8.html

관련 정보