java - 在 windows 中创建的 tar.gz 无法在 linux 下正确解压 - ArchiverFactory/org.rauschig.jarchivelib.Archiver

标签 java linux tar

我在我的工具中使用 (Java) ArchiverFactory/org.rauschig.jarchivelib.Archiver https://rauschig.org/jarchivelib/examples.html 在 windows 下创建 tar.gz 存档,在 linux 下必须解压缩,但是 filetree 有问题。

例如,我想压缩文件夹 test/其中包含 测试/a.txt 测试/b.txt

Archiver archiver = ArchiverFactory.createArchiver(ArchiveFormat.TAR,CompressionType.GZIP);
archiver.create("archive", new File(path/to/dir/test), new File(output/path));

所以我有 archive.tar.gz,它包含(在 Windows 上)一个目录 test,以及该目录中的 2 个文件(a.txt 和 b.txt):

/test/a.txt
/test/b.txt

但是在 linux 上解压缩相同的存档后 (tar -xvf archive.tar.gz) 我有一个空目录 (test) 和 2 个文件,它们的目录和文件名称带有斜杠“/”:

/test/
/test\a.txt
/test\b.txt

我在 Windows 下的所有路径中都使用“/”,也尝试过“\\”但没有成功。在 Linux 上解包看起来像这样:

ubuntu@ubuntu:~/Desktop/temp$ tar -xvf archive.tar.gz 
test/
test\\a.txt
test\\b.txt

这个斜杠/反斜杠有什么问题?

最佳答案

好的,这是库问题...我使用的是 0.7.1,但在最近更新的 0.8.0 中这个问题已得到解决;)所以,请始终使用最新版本!

关于java - 在 windows 中创建的 tar.gz 无法在 linux 下正确解压 - ArchiverFactory/org.rauschig.jarchivelib.Archiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51986761/

相关文章:

java - NoClassDefFoundError: ... 由 ClassNotFoundException 引起

java - 处理多个目录和调度 spring 集成

c - 如何知道两个 C 程序共享哪些输入文件?

perl - 在 perl 归档 tar 中将 CHOWN 设置为 0

java - 如何在java中连接字符?

java - 如何在play框架中将字段设置为UNIQUE?

linux - 我应该在提交之前停止容器吗?

linux - 如何在 Spark 中编写一个独立应用程序,以在充满提取推文的文本文件中查找 20 个最常提及的内容

c++ - 从 C++ 使用 tar 创建压缩文件

python - Python 中的 tar 函数