我想一次压缩多个文件(一个命令),但我不想将它们放入同一目录或同一文件中。我是怎么做到的?
我有大量 .Z 压缩文件分散在各个目录中,需要查看其中文件的大小。我不打算解压缩所有 .Z 文件。有没有办法查看内容(通常是 1 个文件)的大小?我只知道 zcat,它只对文件进行分类。谢谢!史蒂夫
使用 tar v1.26 时无法选择压缩程序。
虽然这有效
tar -c -I 'xz' -f foo.tar.xz *
这不起作用:
tar -c -I 'xz -T0' -f foo.tar.xz *
tar (child): xz -T0: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
你有什么想法?
手册页说 7z 工具支持7z、LZMA2、XZ、ZIP、Zip64、CAB、RAR、ARJ、GZIP、BZIP2、TAR、CPIO、RPM、ISO、大多数文件系统映像和DEB格式。
它说我们可以将类型传递为-t{Type}
. 下面的命令是成功的。
7z a -tzip archive.zip dir1 dir2 file1 file2
但是我无法.xz
使用以下命令将文件存档。
7z a -txz archive.zip dir1 dir2 file1 file2
$ 7z a -txz archive.xz dir1 dir2 file1 file2
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (806E9),ASM,AES-NI)
Scanning the drive:
2 folders, 7 files, 196192711 bytes (188 MiB)
Creating archive: archive.xz
Items to compress: 9
System ERROR:
E_INVALIDARG
我在这里做错什么了吗?如何使用命令创建.xz
文件?7z
编辑: 以下命令成功。
7z a -txz archive archive.tar
这是否意味着我们可以使用-txz
或-tbzip2
仅存档文件,因为我们不能在不先存档文件的情况下直接对文件使用压缩?
gzip -d
我想知道使用and解压缩时有什么区别zcat
。
有时当我尝试时gzip -d
,它会说未知后缀——忽略。但是,zcat
完美运行。
我正在寻找具有任意大字典(和“块大小”)的压缩工具。让我通过例子来解释。
首先让我们创建 32MB 的随机数据,然后将其连接到自身以生成长度为 64MB 的两倍长度的文件。
head -c32M /dev/urandom > test32.bin
cat test32.bin test32.bin > test64.bin
当然test32.bin
不可压缩,因为它是随机的,但前半部分与后半部分test64.bin
相同,所以它应该可以压缩大约 50%。
首先让我们尝试一些标准工具。test64.bin 的大小正好是 67108864。
- 压缩包-9。压缩后的大小为 67119133。
- bzip2 -9。压缩后的大小为 67409123。(一个非常大的开销!)
- xz -7。压缩后的大小为 67112252。
- xz -8。压缩大小 33561724。
- zstd——超-22。压缩后的大小为 33558039。
我们从中了解到 gzip 和 bzip2 永远无法压缩此文件。但是,使用足够大的字典 xz 和 zstd 可以压缩文件,在这种情况下 zstd 做得最好。
但是,现在尝试:
head -c150M /dev/urandom > test150.bin
cat test150.bin test150.bin > test300.bin
test300.bin 的大小正好是 314572800。让我们在最高设置下再次尝试最好的压缩算法。
- xz -9。压缩大小 314588440
- zstd——超-22。压缩后尺寸 314580017
在这种情况下,这两种工具都无法压缩文件。
是否有一个工具具有任意大的字典大小以便它可以压缩诸如 test300.bin 之类的文件?
感谢评论和回答,事实证明 zstd 和 xz 都可以做到。但是,您需要 zstd 版本 1.4.x。
- zstd --long=28。压缩大小 157306814
- xz -9 --lzma2=dict=150MiB。压缩后的大小为 157317764。
我正在使用cat largeFile.iso | lz4 -10 -
它,它的速度很慢(30mb/s?)。
使用htop
我看到它只使用一个核心来100%
?我需要指定任何其他参数吗?我似乎在lz4 --help
.
我希望它使用多个内核,从而更快地压缩此文件。
我有一个很大的bzip2
压缩文件,我需要检查它的解压缩大小而不实际解压缩它(类似于gzip -l file.gz
or xz -l file.xz
)。如何做到这一点bzip2
?
因此,今天,我正在尝试压缩要备份的旧照片的多个文件夹。
我发现这篇文章,说方法 PPMd 和压缩级别 Ultra,对于图像压缩要好得多。
我正在执行的命令是:
7z a ./output.7z /path/to/dir1/ /path/to/dir2/ -m=PPMd -mx=9
并且输出有错误E_INVALIDARG
:
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz (306D4),ASM,AES-NI)
Scanning the drive:
2 folders, 318 files, 1421027053 bytes (1356 MiB)
Creating archive: ./output.7z
Items to compress: 320
System ERROR:
E_INVALIDARG
我不明白的是,由于手册页有-m | METHOD
参数和-mx | Compression Level
参数,它仍然会引发错误。
任何帮助是极大的赞赏。谢谢你,达米安 G。
* 注意:我的操作系统是 Ubuntu 19.04 x86_64*
* Bash 版本是 5.0.3(1)-release *
我刚刚遇到了一个严重的问题
我需要用固定分区大小更新离线 CentOS 机器。当更新过程因错误而终止时,/boot 需要 32mb 以上才能更新。它的尺寸为 512mb。更新后有 171mb 在使用中。因此,更新似乎将临时文件和文件夹放在 /boot 中,这些文件和文件夹在完成时会被删除。
我无法更改 /boot 的大小,因为该字段中有一些框。 更新过程尚未定义,但可能包括通过映像进行的更新。但这将是将来的一些时候……也许吧。
是否可以更改 /boot 的临时路径?我还想知道是否可以通过附加 ramdisk 来临时扩展 /boot 的大小。但是我如何能够控制该过程以确保数据仅在 /boot 上?通过管道输入压缩/ boot上的临时数据,然后在使用时通过管道输出?
仔细了解更新如何在文件中移动会有所帮助。
有没有人有另一个想法必须在不触及 /boot 大小的情况下实现更新?