我想创建一些目录的压缩镜像,以便可以从原始目标和远程目标再次同步。
我可以通过两步低效地完成:
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 进行版本控制,并通过更稳定的互联网连接上传到另一台远程服务器。
更新/想法:
gzip < source/path/file > mirror/path/file.gz
。这似乎是迄今为止最有效的解决方案。我已尝试多次调用 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
。
我应该使用什么调用,也许通过管道传输tar
到lzma
脚本中,或者在脚本中执行“tar czf foo.tgz foo”的工作,但使用lzma
而不是gzip
用于压缩?
根据https://btrfs.wiki.kernel.org/index.php/Compression#How_do_I_enable_compression.3F 存在一个“ NOCOMPRESS ”标志,我如何在文件上设置 NOCOMPRESS 标志?
我一直在玩 Btrfs。我能够实现的最大压缩比是 30:1,文件如下:
yes foo | head -c 10G > file
Run Code Online (Sandbox Code Playgroud)
命令行zstd
将以10000:1的比例压缩文件,所以我对30:1有点失望。
显然,如果手动完成,文件会压缩很多,但是 Btrfs 可以做到的最大压缩比是多少?使用哪种 Btrfs 压缩算法以及压缩效果如此良好的文件是什么样的?
(速度不是问题)。
我刚刚安装了 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
式设置(“压缩”)标志的文件和目录。
我有一个用PDF Sandwich创建的 PDF 。PDF 的每一页都包含一个背景图像和一些前景文本。
\n我想减小背景图像的文件大小(而不是分辨率) - 并保留可选择的文本。
\nconvert
减小尺寸,但会删除文本。ps2pdf
不会显着减小文件大小。gs -sDEVICE=pdfwrite -dPDFSETTINGS=/screen \xe2\x80\xa6
降低分辨率,但似乎没有重新压缩图像。qpdf --compress-streams=y --recompress-flate --optimize-images in.pdf out.pdf
只会产生微小的差异。如果我提取背景图像并使用pngquant
或类似的图像,文件大小会大大减小。但我无法使用新图像来替换旧图像。
有什么方法可以压缩 PDF 中的图像,同时保持文本完整吗?
\n正如评论中所建议的,运行pdfimages -list output.pdf
给出:
\npage 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) 我有一个 6GB 的文件,需要在 DVD 上传输。我有一个Linux系统,而收件人有一个Windows系统。有什么方法可以让我制作一个多部分存档来将文件分布在 Windows 用户可以打开的两张 DVD 上吗?
我有一个压缩的 SSH 隧道,其中有一个隧道和多个连接。隧道化的每个连接中的数据相当均匀,但压缩交错流显然会使压缩更糟。SSH 如何通过多个连接压缩数据:
实现是OpenSSH。
可能的重复:
将文件添加/更新到现有的 tar.gz 存档?
我有一些我希望每天更新的游戏文件,他们创建了该文件夹的 tar.gz,但不是每天重新制作所有文件的完整 tar.gz,我试图找到一种方法来检查它更改/添加/删除文件的目录并更新存档以节省时间和 CPU,而不是每天从头开始重新创建存档。我怎样才能做到这一点?
到目前为止,我一直在尝试使用 --listed-incremented ,但没有运气。
我有一个 FAT32 格式的闪存驱动器。我想在文件中的驱动器上放置一个 linux 文件系统。我知道我可以通过创建一个文件并使用 ext3(或任何其他文件系统)格式化然后使用 -o 循环选项安装它来做到这一点。我想要的是压缩上述文件系统。本质上类似于读写squashfs。
有什么可以使用的东西吗?如果文件可以稀疏存储,即在写入或删除数据时重新调整文件大小,则有额外的好处。