符号链接和 7zip

符号链接和 7zip

我正在尝试将文件夹压缩为 .7z 存档。此文件夹包含指向文件夹外其他内容(目录和文件)的符号链接。

显然 7zip 只是存档链接本身,这不是我想要的。有没有办法告诉 7zip 我希望它存档它链接到的内容,而不是链接本身?(也就是说,如果有一个foo指向的符号链接名称C:\stuff\foo,我希望它将目录包含C:\stuff\foo在存档中以代替 foo,而不是 0 字节符号链接。))

除了添加相关文件和文件夹外,还有其他合理的解决方法吗?大约有 10,000 个文件通过符号链接引用,因此单独添加它们将花费数小时……也许有一个程序可以创建一个包含真实文件的暂存文件夹,然后将其传递给 7zip。或者只是一个可以更好地处理符号链接的归档程序。

我运行的是 Windows Vista。所有链接都是符号链接(例如使用 和 创建的mklink link targetmklink /D link target

编辑:

dir较小测试目录的命令输出:

C:\...>dir
 Volume in drive C is OS
 Volume Serial Number is 0A3D-CD6E

 Directory of C:\...

09/04/2010  18:12    <DIR>          .
09/04/2010  18:12    <DIR>          ..
09/04/2010  18:10               975 real file.txt
09/04/2010  18:11    <SYMLINK>      test file.txt [..\test file.txt]
               2 File(s)            975 bytes
               4 Dir(s)   5,214,355,456 bytes free

使用 7zip 创建 7z 存档会导致real file.txt被包含,但test file.txt被添加为 0 字节文件,尽管链接到的文件确实存在并且为 50KB。

答案1

显然 7zip 只是存档了链接本身,这不是我想要的。有没有办法告诉 7zip,我希望它存档它链接的内容,而不是链接本身

不,显然不是(不幸的是)。实际上,7zip 上有一个错误报告要求这样做: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481 但是它于 2009 年 8 月开业,之后就再也没有动过 :-/。

如果失败,除了添加相关文件和文件夹外,还有其他合理的解决方法吗?包括通过符号链接的内容在内,大约有 10,000 个文件,其中大部分是通过符号链接添加的,因此单独添加它们将花费数小时……

好吧,如果你有足够的空间(和时间),你可以复制该文件夹,用它们的目标替换符号链接。例如,你可以使用Robocopy及其开关/sl

/sl 复制符号链接而不是目标


笔记: 为了避免混淆,请注意 Linux 版本的p7zip(7zip 的一个移植版本)也有一个二进制7z文件,支持归档符号链接指向的文件(开关-l)。但是 Windows 上的 7zip 没有此开关。

答案2

截至 2019 年,7-Zip 已在 Windows 中解决了此问题。最新版本有一个复选框,用于在 TAR 和 WIM 存档中包含符号链接,效果非常好!

在 TAR 中存储符号链接

在 WIM 中存储符号链接

答案3

如果你使用的是 Vista 及以上版本,请删除符号链接并将其替换为 mklinks

mklink /D Directory FullPathToRealDirectory

请注意,mklink 非常强大,可以包含网络共享等的链接。

由于这方面似乎存在一些混淆,请允许我澄清一下。我假设原帖实际上谈论的是这里所示的 Junctionshttp://en.wikipedia.org/wiki/NTFS_junction_point. Mklink 确实不做交叉路口。它创建了真正的符号链接,我亲自尝试过,7zip 完全遵守了它们。此外,您需要成为管理员才能创建 mklink 符号链接。

 Directory of C:\temp\t

04/08/2010  04:50 PM    <DIR>          .
04/08/2010  04:50 PM    <DIR>          ..
04/08/2010  04:31 PM    <SYMLINKD>     GB [c:\users\testuser]    <-- created by mklink
04/08/2010  04:50 PM    <JUNCTION>     GB2 [\??\c:\users\testuser] <-- created by junction
04/08/2010  04:29 PM                 8 test.txt

7zip 可以存档 GB,但不能存档 GB2。编辑:实际上,进一步的测试表明,使用 4.65 版的 7zip 可以存档这两个目录。所以我不知道问题出在哪里。

相关内容