我需要将包含大量文件和符号链接的目录备份到 DVD 上。我没有该目录的写权限。
我已经使用以下命令从 GNU/Linux 创建了启用 rock-ridge 和 joliet 扩展的 DVD 映像:
genisoimage -r -J -joliet-long -T -o mess.iso mess/
结果还不错。
现在我需要从 Windows XP 访问 DVD,但所有符号链接似乎都悬空(它们显示为 0 大小文件)。据我了解,这是因为符号链接由 rockridge 扩展处理,而 Windows XP 无法使用它。
是否可以安装一些东西来正确访问该 DVD?自定义文件管理器也是一个选项。如果有帮助的话,我还可以使用不同的选项重新制作图像。
答案1
尤里卡!我已经能够完成所要求的事情了。
首先,我将所有符号链接转换为硬链接。我创建了一个类似以下的脚本:
#!/bin/sh
link="$1"
error() {
echo "Error: $1." 1>&2
exit 1
}
[ -h "$link" ] || error "'$link' is not a symbolic link"
linkdir=`dirname "$link"`
linkname=`basename "$link"`
target=`cd "$linkdir" 2> /dev/null && readlink -qfn "$linkname"`
[ $? = 0 ] || error "unable to readlink '$link'"
[ -f "$target" ] || error "'$link' target is not a regular file"
ln -f "$target" "$link" || error "hard-link failed on '$link'"
并在目录下执行mess
:
find . -type l -print0 | xargs -0n1 soft2hard.sh
之后,我以与以前相同的方式创建了 ISO 映像,但确保--cache-inode
已使用(我还省略了-T
以减少混乱):
genisoimage -r -J -joliet-long --cache-inodes -o mess.iso mess/
瞧:一切都可以通过 Windows XP 完美访问,并且适合低密度 DVD。
答案2
符号链接在 iso 中显示为指向 Windows 无法处理的外部文件系统的链接。
对于更独立于操作系统的 CD 格式,您应该使用genisoimage
参数-f
来取消引用符号链接或跟随它们,而不是使用 Rock Ridge 输入它们。
这样,您就将符号链接的目标添加到 ISO 映像,而不是符号链接本身。文件将出现在目录结构中,代替符号链接。
文章CD 刻录方法对问题有很好的解释,尽管它使用的mkisofs
是 而不是genisoimage
。
[编辑]
如果您的目标是 Vista/7/8 而不是 XP,则可以不使用符号链接进行备份并在 NTFS 上恢复。然后在 Linux 上创建一个 Windows 批处理脚本,该脚本将创建等效的NTFS 符号链接。
但是XP只支持文件夹的链接,而不支持文件的链接。
有关详细信息,请参阅NTFS 重新解析点一个有用的 Windows 实用程序是连接点。
无论如何,Windows 中的 DVD 不能有符号链接,因此您需要在 NTFS 上进行恢复。