我有一组文件,其中有一些指向某些文件的硬链接。例如:
/tmp/test/file1
/tmp/test/file1_Link
file1
是一个大小为 1 MB 的文件。 file1_Link
是指向file1
的硬链接
当我使用 unix tar
命令对这两个文件进行 tar 时,生成的存档大小为 1 MB (mytar.tar
(
tar -cvf ../mytar.tar .
-rw-r--r-- 1 bsarraf 189060905 1.0M Feb 11 22:06 mytar.tar
-rw-r--r-- 1 bsarraf 189060905 2.0M Feb 11 22:10 files.tar
但是,当我使用 apache 共享压缩并添加 tar 文件中的所有文件时,我得到一个大小为 2 MB ( files.tar
的 tar
这意味着在 tar 中,同一个文件被添加了两次。
如何将 tar 中的硬链接文件添加为另一个文件的硬链接?
对于可能遇到相同问题的其他人,我能够使用以下方法解决问题:1.确定文件是否为硬链接,有多种方法可以执行此操作。2. 识别出硬链接后,使用以下方法将硬线文件添加到 tar 中
private void addLinkFileToTar(TarArchiveOutputStream tar, File linkFile, File file, String base)
throws IOException {
String entryName = base + linkFile.getName();
TarArchiveEntry tarEntry = new TarArchiveEntry(entryName, TarConstants.LF_LINK);
tarEntry.setLinkName(base+file.getName());
tar.putArchiveEntry(tarEntry);
tar.closeArchiveEntry();
}
这里链接文件是硬链接文件,文件是目标文件。