我正在尝试将文件夹压缩为 .7z 存档。此文件夹包含指向文件夹外其他内容(目录和文件)的符号链接。
显然 7zip 只是存档链接本身,这不是我想要的。有没有办法告诉 7zip 我希望它存档它链接到的内容,而不是链接本身?(也就是说,如果有一个foo
指向的符号链接名称C:\stuff\foo
,我希望它将目录包含C:\stuff\foo
在存档中以代替 foo,而不是 0 字节符号链接。))
除了添加相关文件和文件夹外,还有其他合理的解决方法吗?大约有 10,000 个文件通过符号链接引用,因此单独添加它们将花费数小时……也许有一个程序可以创建一个包含真实文件的暂存文件夹,然后将其传递给 7zip。或者只是一个可以更好地处理符号链接的归档程序。
我运行的是 Windows Vista。所有链接都是符号链接(例如使用 和 创建的mklink link target
)mklink /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
答案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 可以存档这两个目录。所以我不知道问题出在哪里。