标签: compression

创建压缩的、可同步的目录镜像的正确方法?

我想创建一些目录的压缩镜像,以便可以从原始目标和远程目标再次同步。

我可以通过两步低效地完成:

rsync -a /source/ /compressed-mirror/
gzip --recursive --rsyncable --force /compressed-mirror/
# later: rsync -a /compressed-mirror/ remote:/another-compressed-mirror/
Run Code Online (Sandbox Code Playgroud)

问题是,如果我重新运行第一个 rsync 来更新镜像,它需要重新复制和 gzip 所有源文件,即使只有其中几个发生了更改。

问题:是否有其他方法可以最大限度地减少每次更新所需的数据传输量和硬盘使用量?

笔记:

  • 我并没有坚持使用 gzip 进行压缩 - 我选择它只是因为它允许重新同步压缩文件。

  • 本地压缩镜像的目的是最大限度地减少与远程镜像进行 rsync 所需的“网络运行”时间,因为源计算机(笔记本电脑)的互联网连接和电源状态都不可靠。本地镜像的某些部分在 rsync 到远程镜像之前会被加密。然后,远程镜像会使用 rsnapshot 进行版本控制,并通过更稳定的互联网连接上传到另一台远程服务器。

更新/想法:

  • 使用文件系统压缩(请参阅 cas 的评论) - 但这会强制 rsync 在将文件传输到远程服务器时重新压缩文件,这似乎是多余的。
  • 保持 rsync 目录未压缩。每次 rsync 更新它时,记录更改的文件。对于每个更改的文件,在压缩镜像中单独创建一个压缩副本(或删除它)。但下一个想法可以更有效地完成同样的事情:
  • 在源中保留文件路径和文件大小(或校验和)的列表。每次更新时,创建一个新列表并将其与旧列表进行比较。对于每个更改的文件,使用 . 在第一个压缩镜像中单独创建一个 gzip 压缩副本(或删除它)gzip < source/path/file > mirror/path/file.gz。这似乎是迄今为止最有效的解决方案。

backup compression gzip rsync

5
推荐指数
1
解决办法
2万
查看次数

在我的 Mac (OSX 10.12.x) 上,什么调用将使用 LZMA 压缩 tar 输出?

我已尝试多次调用 OEM tar 来创建 LZMA 压缩的 tarball。更具体地说,我尝试过:

tar -c -f --lzma Windows\ 7.vmwarevm.tar.lzma Windows\ 7.vmwarevm
Run Code Online (Sandbox Code Playgroud)

我的努力创建了一个带有 filename 的存档--lzma,而 tar 抱怨Windows 7.vmwarevm.tar.lzma: Cannot stat: No such file or directory,可能出于同样的原因:--lzma被视为要创建的存档的文件名,因此实际预期的存档名称被视为参数列表中的第一个包含在存档中。

经过一番搜索后,我认为 MacOS 没有将其包含在提供的选项中,因此从头开始构建了 GNU tar,并将其以另一个名称存储在/usr/local/bin. 然而,我将上述调用与重命名和新建一起使用的努力tar产生了相同的效果:我正在以--lzma.

我的电脑似乎可以正常工作/usr/local/bin/lzma

我应该使用什么调用,也许通过管道传输tarlzma脚本中,或者在脚本中执行“tar czf foo.tgz foo”的工作,但使用lzma而不是gzip用于压缩?

tar compression lzma

5
推荐指数
1
解决办法
1万
查看次数

5
推荐指数
1
解决办法
995
查看次数

Btrfs 可实现最大压缩

我一直在玩 Btrfs。我能够实现的最大压缩比是 30:1,文件如下:

yes foo | head -c 10G > file
Run Code Online (Sandbox Code Playgroud)

命令行zstd将以10000:1的比例压缩文件,所以我对30:1有点失望。

显然,如果手动完成,文件会压缩很多,但是 Btrfs 可以做到的最大压缩比是多少?使用哪种 Btrfs 压缩算法以及压缩效果如此良好的文件是什么样的?

(速度不是问题)。

compression btrfs

5
推荐指数
1
解决办法
977
查看次数

如何防止 btrfs 压缩 /var

我刚刚安装了 Fedora 33 的新实例,并通过compress=zstd:3挂载选项为我的根卷启用了压缩。我启用了 的/usr压缩chattr +x /usr

我想禁用/var目录压缩,根据https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs(5)#FILE_ATTRIBUTES我应该能够使用chattr +X /var,但 F33 的工具不理解这一点选项。在https://btrfs.wiki.kernel.org/index.php/Compression中有一个命令btrfs property set /var compression "",但我无法判断这是否有效。我的文件系统上的任何文件都没有设置“压缩”属性,这没有意义。

我假设 btrfs 在使用compress选项安装时默认自动压缩所有文件,但默认情况下它看起来只压缩显+c式设置(“压缩”)标志的文件和目录。

compression btrfs

5
推荐指数
1
解决办法
2117
查看次数

减小带有文本的 PDF 文件大小?

我有一个用PDF Sandwich创建的 PDF 。PDF 的每一页都包含一个背景图像和一些前景文本。

\n

我想减小背景图像的文件大小(而不是分辨率) - 并保留可选择的文本。

\n
    \n
  • 使用 ImageMagick 可以convert减小尺寸,但会删除文本。
  • \n
  • ps2pdf不会显着减小文件大小。
  • \n
  • gs -sDEVICE=pdfwrite -dPDFSETTINGS=/screen \xe2\x80\xa6降低分辨率,但似乎没有重新压缩图像。
  • \n
  • qpdf --compress-streams=y --recompress-flate --optimize-images in.pdf out.pdf只会产生微小的差异。
  • \n
\n

如果我提取背景图像并使用pngquant或类似的图像,文件大小会大大减小。但我无法使用新图像来替换旧图像。

\n

有什么方法可以压缩 PDF 中的图像,同时保持文本完整吗?

\n
\n

正如评论中所建议的,运行pdfimages -list output.pdf

\n

给出:

\n
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio\n--------------------------------------------------------------------------------------------\n   1     0 image    3483  4800  rgb     3   8  jpeg   no        11 …
Run Code Online (Sandbox Code Playgroud)

compression pdf

5
推荐指数
1
解决办法
1040
查看次数

什么 Linux 实用程序可以将大文件拆分为可以在 Windows 上打开的多文件存档?

我有一个 6GB 的文件,需要在 DVD 上传输。我有一个Linux系统,而收件人有一个Windows系统。有什么方法可以让我制作一个多部分存档来将文件分布在 Windows 用户可以打开的两张 DVD 上吗?

software-rec compression

4
推荐指数
1
解决办法
3423
查看次数

ssh 是否单独压缩隧道中的连接?

我有一个压缩的 SSH 隧道,其中一个隧道和多个连接。隧道化的每个连接中的数据相当均匀,但压缩交错流显然会使压缩更糟。SSH 如何通过多个连接压缩数据:

  1. 在 TCP 连接级别(即一个压缩流,一个 zlib 压缩状态)?
  2. 还是在逻辑隧道内连接级别(一个 TCP 连接上的多个逻辑流,每个流的 zlib 状态)?

实现是OpenSSH。

ssh compression

4
推荐指数
1
解决办法
3032
查看次数

每天只用更改的文件更新 tar.gz

可能的重复:
将文件添加/更新到现有的 tar.gz 存档?

我有一些我希望每天更新的游戏文件,他们创建了该文件夹的 tar.gz,但不是每天重新制作所有文件的完整 tar.gz,我试图找到一种方法来检查它更改/添加/删除文件的目录并更新存档以节省时间和 CPU,而不是每天从头开始重新创建存档。我怎样才能做到这一点?

到目前为止,我一直在尝试使用 --listed-incremented ,但没有运气。

linux tar archive compression

4
推荐指数
1
解决办法
1万
查看次数

Linux中文件内的压缩文件系统

我有一个 FAT32 格式的闪存驱动器。我想在文件中的驱动器上放置一个 linux 文件系统。我知道我可以通过创建一个文件并使用 ext3(或任何其他文件系统)格式化然后使用 -o 循环选项安装它来做到这一点。我想要的是压缩上述文件系统。本质上类似于读写squashfs。

有什么可以使用的东西吗?如果文件可以稀疏存储,即在写入或删除数据时重新调整文件大小,则有额外的好处。

compression

4
推荐指数
1
解决办法
2001
查看次数

标签 统计

compression ×10

btrfs ×3

tar ×2

archive ×1

backup ×1

gzip ×1

linux ×1

lzma ×1

pdf ×1

rsync ×1

software-rec ×1

ssh ×1