语法
mkisofs [-o 镜像文件名] [-Jrv] [-V vol] [-m file] 等备份文件... -graft-point isodir=systemdir ...
作用
制作光盘镜像文件。
参数
- -a或–all mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中。
- -A<应用程序ID>或-appid<应用程序ID> 指定光盘的应用程序ID。
- -abstract<摘要文件> 指定摘要文件的文件名。
- -b<开机映像文件>或-eltorito-boot<开机映像文件> 指定在制作可开机光盘时所需的开机映像文件。
- -biblio<ISBN文件> 指定ISBN文件的文件名,ISBN文件位于光盘根目录下,记录光盘的ISBN。
- -c<开机文件名称> 制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog<开机文件名称>全部内容作成一个文件。
- -C<盘区编号,盘区编号> 将许多节区合成一个映像文件时,必须使用此参数。
- -copyright<版权信息文件> 指定版权信息文件的文件名。
- -d或-omit-period 省略文件后的句号。
- -D或-disable-deep-relocation ISO 9660最多只能处理8层的目录,超过8层的部分,RRIP会自动将它们设置成ISO 9660兼容的格式。使用-D参数可关闭此功能。
- -f或-follow-links 忽略符号连接。
- -h 显示帮助。
- -hide<目录或文件名> 使指定的目录或文件在ISO 9660或Rock RidgeExtensions的系统中隐藏。
- -hide-joliet<目录或文件名> 使指定的目录或文件在Joliet系统中隐藏。
- -J或-joliet 使用Joliet格式的目录与文件名称。
- -l或-full-iso9660-filenames 使用ISO 9660 32字符长度的文件名。
- -L或-allow-leading-dots 允许文件名的第一个字符为句号。
- -log-file<记录文件> 在执行过程中若有错误信息,预设会显示在屏幕上。
- -m<目录或文件名>或-exclude<目录或文件名> 指定的目录或文件名将不会房入映像文件中。
- -M<映像文件>或-prev-session<映像文件> 与指定的映像文件合并。
- -N或-omit-version-number 省略ISO 9660文件中的版本信息。
- -o<映像文件>或-output<映像文件> 指定映像文件的名称。
- -p<数据处理人>或-preparer<数据处理人> 记录光盘的数据处理人。
- -print-size 显示预估的文件系统大小。
- -quiet 执行时不显示任何信息。
- -r或-rational-rock 使用Rock Ridge Extensions,并开放全部文件的读取权限,可以记录较多的信息(如UID,GID等)。
- -R或-rock 使用Rock Ridge Extensions。
- -sysid<系统ID> 指定光盘的系统ID。
- -T或-translation-table 建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上。
- -v或-verbose 执行时显示详细的信息。
- -V<光盘ID>或-volid<光盘ID> 指定光盘的卷册集ID。
- -volset-size<光盘总数> 指定卷册集所包含的光盘张数。
- -volset-seqno<卷册序号> 指定光盘片在卷册集中的编号。
- -x<目录> 指定的目录将不会放入映像文件中。
- -z 建立通透性压缩文件的SUSP记录,此记录目前只在Alpha机器上的Linux有效。
使用实例
创建普通镜像备份文件
[root@192 share]# mkisofs -r -v -o /share/system.img /root /home /etc
#前面的文件就不列出了,列出后面的一些信息
Writing: Initial Padblock Start Block 0
Done with: Initial Padblock Block(s) 16
Writing: Primary Volume Descriptor Start Block 16
Done with: Primary Volume Descriptor Block(s) 1
Writing: End Volume Descriptor Start Block 17
Done with: End Volume Descriptor Block(s) 1
Writing: Version block Start Block 18
Done with: Version block Block(s) 1
Writing: Path table Start Block 19
Done with: Path table Block(s) 16
Writing: Directory tree Start Block 35
Done with: Directory tree Block(s) 1004
Writing: Directory tree cleanup Start Block 1039
Done with: Directory tree cleanup Block(s) 0
Writing: Extension record Start Block 1039
Done with: Extension record Block(s) 1
Writing: The File(s) Start Block 1040
21.15% done, estimate finish Sat Mar 7 10:24:41 2020
42.24% done, estimate finish Sat Mar 7 10:24:41 2020
63.37% done, estimate finish Sat Mar 7 10:24:41 2020
84.49% done, estimate finish Sat Mar 7 10:24:41 2020
Total translation table size: 0
Total rockridge attributes bytes: 447731
Total directory bytes: 1992704
Path table size(bytes): 13084
Done with: The File(s) Block(s) 22483
Writing: Ending Padblock Start Block 23523
Done with: Ending Padblock Block(s) 150
Max brk space used 41f000
23673 extents written (46 MB)
下面将这个镜像文件挂载,可以发现所有的内容都乱了,并不是想的那样。
这是因为所有要被加载到镜像文件中的文件都会被放置到镜像文件中的根目录中。
简单来说,根据提供的文件夹,将文件夹中的内容放置到镜像文件的根目录下。
[root@192 share]# mount -o loop system.img systemimgdir
[root@192 share]# ls systemimgdir/
abrt dleyna-server-service.conf ipsec.d oddjobd.conf security
adjtime dnsmasq.conf ipsec.secrets oddjobd.conf.d selinux
admin dnsmasq.d iscsi openldap services
aliases dracut.conf issue opt sestatus.conf
aliases.db dracut.conf.d issue.net os-release setroubleshoot
alsa e2fsck.conf java PackageKit setuptool.d
alternatives egl
#....省略
可以使用“-graft-point”来将顶层的目录(/root,./etc,/home)名也包含进来,”-graft-point”后面接的就是需要备份的文件。
[root@192 share]# mkisofs -r -V 'Linux_file' -o system.img -graft-point /root=/root /home=/home /etc=/etc
[root@192 share]# mount system.img systemimgdir/
mount: /dev/loop0 is write-protected, mounting read-only
[root@192 share]# ll systemimgdir/
total 44
dr-xr-xr-x. 145 root root 38912 Mar 7 10:23 etc
dr-xr-xr-x. 3 root root 2048 Mar 3 16:55 home
dr-xr-xr-x. 6 root root 2048 Mar 6 12:00 root
dr-xr-xr-x. 7 root root 2048 Mar 7 10:40 rr_moved