当前位置: 首页 > 知识库问答 >
问题:

Apache Commons Compress无法在tar中添加硬链接

苏富
2023-03-14

我有一组文件,其中有一些硬链接指向一些文件。例如:

/tmp/test/file1
/tmp/test/file1_Link
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

这意味着在tar中,同一个文件被添加了两次。

我如何在tar中添加硬链接文件作为另一个文件的硬链接?

共有1个答案

子车高歌
2023-03-14

对于其他可能有相同问题的人,我能够用以下方法解决问题: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();
}

这里,linkFile是硬链接文件,file是目标文件。

 类似资料:
  • 在我的android{}部分,我试图为五月免费和付费应用程序放置两种不同的构建类型。 这是我的控制台日志: 正在执行任务:[:Transport:CompileDebugJava] 按需配置是一个正在酝酿的特性。下载http://repo1.maven.org/maven2/com/android/tools/build/gradle/0.8.3/gradle-0.8.3.pom下载http://

  • 也许这个问题看起来更适合这个问题: 链接1 链接2

  • 我正在使用改装库,我想从OpenWeatherPi获取天气预报。 我有这个。

  • Hello每当我运行以下命令时 它会导致以下错误: 未处理的promise拒绝警告:未处理的promise拒绝。这个错误要么是由于在一个异步函数中抛出一个没有接球块的东西,要么是由于拒绝了一个没有用.的()处理的promise。(拒绝id: 1)(节点: 304)[DEP] 0018禁止警告:不建议使用未处理的promise拒绝。将来,未处理的promise拒绝将以非零退出代码终止Node.js进

  • 我想在IntelliJ中运行我的第一个程序,但我不能在添加配置部分截图中添加我的主类 确定按钮不起作用

  • 我想从JSON响应中添加链接:https://xxx.xxx/posters/poster.jpg,这里是我的代码: 下面是JSON响应: 如何让它变成这样: