我正在租用 Linux 服务器上的一个节点。
uname -a
Linux 5.15.112-gentoo #2 SMP x86_64 AMD 64-Core Processor Authentic AMD GNU/Linux
作为租户,我本质上无法成为超级用户,甚至无法使用sudo
.我需要读取/挂载以 .ISO 格式存储的 UDF 文件系统。
我将fuseISO作为命令的一个选项进行了研究
fuseiso ~/files/iso.iso ~/mountpoint
但它似乎只处理ISO9660
格式而不是 UDF。所以我在尝试使用时收到一堆错误消息fuseiso
。
我还想也许存在一个工具可以读取 UDF.iso
并导出内容而无需安装它。
我的研究陷入困境,如果有的话,有人有任何建议吗?
答案1
有一套名为udfclient
(缺少联机帮助页)的实用程序,例如可在德班,架构Linux或者自由BSD主页和来源位于https://www.13thmonkey.org/udfclient/。无论是否为 Gentoo 打包,作为没有系统访问权限的简单用户,无论如何都必须对其进行编译或复制其二进制文件。
$ udfclient
Usage: udfclient [options] devicename [devicename]*)
-u level UDF system verbose level
-r range use only selected sessions like -3,5,7 or 6-
-W allow writing (temporary flag)
-F force mount writable when marked dirty (use with cause)
-b blocksize use alternative sectorsize; use only on files/discs
-D debug/verbose SCSI command errors
-s byteswap read sectors (for PVRs)
虽然没有明确写明,udfclient
接受 UDF 文件系统映像作为设备名称,而不仅仅是一个实际的 DVD 设备。从头开始的完整示例:
$ truncate -s $((32 * 2**20)) /tmp/udf.img
$ newfs_udf -L myudf /tmp/udf.img
Opening device /tmp/udf.img
UDF device /tmp/udf.img is a regular file
bufcache thread initialising
Disc info for disc in device /tmp/udf.img
MMC profile : Unknown[0] profile
sequential : no
recordable : yes
erasable : no
blankable : no
formattable : no
rewritable : yes
mount raineer : no
[...]
Closing logical volume `64f5db204864e7f7`:`0019a2bf`:`myudf`
wait for syncing disc to idle
stopping bufcache thread
bufcache thread joining
signal disc its finished with writing
wait for final disc idling
close device
Disc access statistics
sector reads 1 (0 Kbyte)
sector written 91 (45 Kbyte)
switches 3
$ cd /tmp
$ udfclient udf.img
bufcache thread initialising
Opening device udf.img
UDF device udf.img is a regular file
UDF Dump of disc in device udf.img
UDF sessions : Yes
Start mounting
retrieving volume space
[...]
Directory listing of /
drwxrwxrwx -1 -1 40 64f5db204864e7f7:0019a2bf:myudf:fileset
UDF working directory is /
Current FS working directory /tmp
UDF>
请注意,udfclient
不会在交互模式下将 UDF 文件系统的根映射为/
.必须cd
先做到这一点。例子:
UDF> help
Selected commands available (use " pair for filenames with spaces) :
ls [file | dir] lists the UDF directory
cd [dir] change current UDF directory
lcd [dir] change current directory
lls lists current directory
pwd display current directories
free display free space on disc
get source [dest] retrieve a file / directory from disc
mget (file | dir)* retrieve set of files / directories
put source [dest] write a file / directory to disc
mput (file | dir)* write a set of files / directories
trunc file length trunc file to length
mkdir dir create directory
rm (file | dir)* delete set of files / directories
mv source dest rename a file (limited)
sync sync filingsystem
quit exits program
exit alias for quit
UDF> ls
Directory listing of /
drwxrwxrwx -1 -1 84 64f5db204864e7f7:0019a2bf:myudf:fileset
UDF> free
Can only report free space in UDF mountpoints
UDF> cd 64f5db204864e7f7:0019a2bf:myudf:fileset
UDF working directory is /64f5db204864e7f7:0019a2bf:myudf:fileset
Current FS working directory /tmp
UDF> free
Logical volume `myudf`
physical partition 0
9934 K (19869 pages) size
9930 K (19861 pages) unallocated
0 K (0 pages) freed
Confirmed free space 9930 Kb ( 99 %) ( 9.70 Mb) ( 0.01 Gb)
Awaiting allocation 0 Kb ( 0 %) ( 0.00 Mb) ( 0.00 Gb)
Estimated free space 9930 Kb ( 99 %) ( 9.70 Mb) ( 0.01 Gb)
Estimated total used 4 Kb ( 0 %) ( 0.00 Mb) ( 0.00 Gb)
Total size 9934 Kb (100 %) ( 9.70 Mb) ( 0.01 Gb)
UDF>
除了udfclient
命令之外,套件还提供了一些其他工具,例如newfs_udf
在上面的示例中创建 UDF 文件系统。虽然命令可以通过管道传输到udfclient
,但良好的可脚本性似乎并不容易,因为无法删除每个命令后提供的所有额外信息。因此,人们必须提前知道要做什么。
在写入测试期间(使用(选项-W
)并通过使用内核的 UDF 文件系统实现安装 UDF 映像来以 root 身份检查,检测到损坏。因此,虽然从 UDF 映像读取没问题,但我不建议使用此工具来写到图像。文件系统最初创建的方式(具有各种可用选项)可能对此很重要。
另一间套房名为udftools
mkudffs
提供创建 UDF 文件系统的备用命令。它还提供了一个wrudf
应该提供与udfclient
s 等效功能的命令,但我没有设法让它与 UDF 一起使用图片:看来它想看看实际的硬件。
答案2
您可以用来7zip
提取 UDF iso 映像。
这与安装不完全相同,但根据您的用例,将图像内容转储到文件夹并从那里读取可能就足够了。
您甚至可以应用修改并用于genisoimage
重新创建包含所有更改的原始 UDF iso。