2017年8月

介绍

数据包过滤可让你专注于你感兴趣的确定数据集。如你所见,Wireshark 默认会抓取所有数据包。这可能会妨碍你寻找具体的数据。 Wireshark 提供了两个功能强大的过滤工​​具,让你简单而无痛地获得精确的数据。

Wireshark 可以通过两种方式过滤数据包。它可以通过只收集某些数据包来过滤,或者在抓取数据包后进行过滤。当然,这些可以彼此结合使用,并且它们各自的用处取决于收集的数据和信息的多少。

布尔表达式和比较运算符

Wireshark 有很多很棒的内置过滤器。当开始输入任何一个过滤器字段时,你将看到它们会自动补完。这些过滤器大多数对应于用户对数据包的常见分组方式,比如仅过滤 HTTP 请求就是一个很好的例子。

对于其他的,Wireshark 使用布尔表达式和/或比较运算符。如果你曾经做过任何编程,你应该熟悉布尔表达式。他们是使用 andornot 来验证声明或表达式的真假。比较运算符要简单得多,它们只是确定两件或更多件事情是否彼此相等、大于或小于。

过滤抓包

在深入自定义抓包过滤器之前,请先查看 Wireshark 已经内置的内容。单击顶部菜单上的 “Capture” 选项卡,然后点击 “Options”。可用接口下面是可以编写抓包过滤器的行。直接移到左边一个标有 “Capture Filter” 的按钮上。点击它,你将看到一个新的对话框,其中包含内置的抓包过滤器列表。看看里面有些什么。

Wireshark dialog for creating a capture filter

在对话框的底部,有一个用于创建并保存抓包过滤器的表单。按左边的 “New” 按钮。它将创建一个填充有默认数据的新的抓包过滤器。要保存新的过滤器,只需将实际需要的名称和表达式替换原来的默认值,然后单击“Ok”。过滤器将被保存并应用。使用此工具,你可以编写并保存多个不同的过滤器,以便它们将来可以再次使用。

抓包有自己的过滤语法。对于比较,它不使用等于号,并使用 >< 来用于大于或小于。对于布尔值来说,它使用 andornot

例如,如果你只想监听 80 端口的流量,你可以使用这样的表达式:port 80。如果你只想从特定的 IP 监听端口 80,你可以使用 port 80 and host 192.168.1.20。如你所见,抓包过滤器有特定的关键字。这些关键字用于告诉 Wireshark 如何监控数据包以及哪一个数据是要找的。例如,host 用于查看来自 IP 的所有流量。src 用于查看源自该 IP 的流量。与之相反,dst 只监听目标到这个 IP 的流量。要查看一组 IP 或网络上的流量,请使用 net

过滤结果

界面的底部菜单栏是专门用于过滤结果的菜单栏。此过滤器不会更改 Wireshark 收集的数据,它只允许你更轻松地对其进行排序。有一个文本字段用于输入新的过滤器表达式,并带有一个下拉箭头以查看以前输入的过滤器。旁边是一个标为 “Expression” 的按钮,另外还有一些用于清除和保存当前表达式的按钮。

点击 “Expression” 按钮。你将看到一个小窗口,其中包含多个选项。左边一栏有大量的条目,每个都有附加的折叠子列表。你可以用这些来过滤所有不同的协议、字段和信息。你不可能看完所有,所以最好是大概看下。你应该注意到了一些熟悉的选项,如 HTTP、SSL 和 TCP。

Wireshark dailog for creating a results filter

子列表包含可以过滤的不同部分和请求方法。你可以看到通过 GET 和 POST 请求过滤 HTTP 请求。

你还可以在中间看到运算符列表。通过从每列中选择条目,你可以使用此窗口创建过滤器,而不用记住 Wireshark 可以过滤的每个条目。对于过滤结果,比较运算符使用一组特定的符号。 == 用于确定是否相等。> 用于确定一件东西是否大于另一个东西,< 找出是否小一些。 >=<= 分别用于大于等于和小于等于。它们可用于确定数据包是否包含正确的值或按大小过滤。使用 == 仅过滤 HTTP GET 请求的示例如下:http.request.method == "GET"

布尔运算符基于多个条件将小的表达式串到一起。不像是抓包所使用的单词,它使用三个基本的符号来做到这一点。&& 代表 “与”。当使用时,&& 两边的两个语句都必须为真值才行,以便 Wireshark 来过滤这些包。|| 表示 “或”。只要两个表达式任何一个为真值,它就会被过滤。如果你正在查找所有的 GET 和 POST 请求,你可以这样使用 ||(http.request.method == "GET") || (http.request.method == "POST")! 是 “非” 运算符。它会寻找除了指定的东西之外的所有东西。例如,!http 将展示除了 HTTP 请求之外的所有东西。

总结思考

过滤 Wireshark 可以让你有效监控网络流量。熟悉可以使用的选项并习惯你可以创建过滤器的强大表达式需要一些时间。然而一旦你学会了,你将能够快速收集和查找你要的网络数据,而无需梳理长长的数据包或进行大量的工作。


via: https://linuxconfig.org/filtering-packets-in-wireshark-on-kali-linux

作者:Nick Congleton 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这会是一个有点奇怪的教程。背景故事如下。最近,我创作了一堆 Risitas y las paelleras 素材中sweet parody 的片段,以主角 Risitas 疯狂的笑声而闻名。和往常一样,我把它们上传到了 Youtube,但是从当我决定使用字幕起,到最终在网上可以观看时,我经历了一个漫长而曲折的历程。

在本指南中,我想介绍几个你可能会在创作自己的媒体时会遇到的典型问题,主要是使用字幕方面,然后上传到媒体共享门户网站,特别是 Youtube 中,以及如何解决这些问题。跟我来。

背景故事

我选择的视频编辑软件是 Kdenlive,当我创建那愚蠢的 Frankenstein 片段时开始使用这个软件,从那以后它一直是我的忠实伙伴。通常,我将文件交给带有 VP8 视频编解码器和 Vorbis 音频编解码器的 WebM 容器来渲染,因为这是 Google 所喜欢的格式。事实上,我在过去七年里上传的大约 40 个不同的片段中都没有问题。

Kdenlive, create project

Kdenlive, render

但是,在完成了我的 Risitas&Linux 项目之后,我遇到了一个困难。视频文件和字幕文件仍然是两个独立的实体,我需要以某种方式将它们放在一起。我最初关于字幕的文章提到了 Avidemux 和 Handbrake,这两个都是有效的选项。

但是,我对它们任何一个的输出都并不满意,而且由于种种原因,有些东西有所偏移。 Avidemux 不能很好处理视频编码,而 Handbrake 在最终输出中省略了几行字幕,而且字体是丑陋的。这个可以解决,但这不是今天的话题。

因此,我决定使用 VideoLAN(VLC) 将字幕嵌入视频。有几种方法可以做到这一点。你可以使用 “Media > Convert/Save” 选项,但这不能达到我们需要的。相反,你应该使用 “Media > Stream”,它带有一个更完整的向导,它还提供了一个我们需要的可编辑的代码转换选项 - 请参阅我的教程关于字幕的部分。

错误!

嵌入字幕的过程并没那么简单的。你有可能遇到几个问题。本指南应该能帮助你解决这些问题,所以你可以专注于你的工作,而不是浪费时间调试怪异的软件错误。无论如何,在使用 VLC 中的字幕时,你将会遇到一小部分可能会遇到的问题。尝试以及出错,还有书呆子的设计。

没有可播放的流

你可能选择了奇怪的输出设置。你要仔细检查你是否选择了正确的视频和音频编解码器。另外,请记住,一些媒体播放器可能没有所有的编解码器。此外,确保在所有要播放的系统中都测试过了。

No playable streams

字幕叠加两次

如果在第一步的流媒体向导中选择了 “Use a subtitle file”,则可能会发生这种情况。只需选择所需的文件,然后单击 “Stream”。取消选中该框。

Select file

字幕没有输出

这可能是两个主要原因。一、你选择了错误的封装格式。在进行编辑之前,请确保在配置文件页面上正确标记了字幕。如果格式不支持字幕,它可能无法正常工作。

Encapsulation

二、你可能已经在最终输出中启用了字幕编解码器渲染功能。你不需要这个。你只需要将字幕叠加到视频片段上。在单击 “Stream” 按钮之前,请检查生成的流输出字符串并删除 “scodec=” 的选项。

Remove text from output string

缺少编解码器的解决方法

这是一个常见的 bug,取决于编码器的实现的实验性,如果你选择以下配置文件,你将很有可能会看到它:“Video - H.264 + AAC (MP4)”。该文件将被渲染,如果你选择了字幕,它们也会被叠加上,但没有任何音频。但是,我们可以用技巧来解决这个问题。

AAC codec

MP4A error

一个可能的技巧是从命令行使用 “--sout-ffmpeg-strict=-2” 选项(可能有用)启动 VLC。另一个更安全的解决方法是采用无音频视频,但是带有字幕叠加,并将不带字幕的原始项目作为音频源用 Kdenlive 渲染。听上去很复杂,下面是详细步骤:

  • 将现有片段(包含音频)从视频移动到音频。删除其余的。
  • 或者,使用渲染过的 WebM 文件作为你的音频源。
  • 添加新的片段 - 带有字幕,并且没有音频。
  • 将片段放置为新视频。
  • 再次渲染为 WebM。

Repeat render

使用其他类型的音频编解码器将很有可能可用(例如 MP3),你将拥有一个包含视频、音频和字幕的完整项目。如果你很高兴没有遗漏,你可以现在上传到 Youtube 上。但是之后 ...

Youtube 视频管理器和未知格式

如果你尝试上传非 WebM 片段(例如 MP4),则可能会收到未指定的错误,你的片段不符合媒体格式要求。我不知道为什么 VLC 会生成一个不符合 YouTube 规定的文件。但是,修复很容易。使用 Kdenlive 重新创建视频,将会生成带有所有正确的元字段和 Youtube 喜欢的文件。回到我原来的故事,我有 40 多个片段使用 Kdenlive 以这种方式创建。

P.S. 如果你的片段有有效的音频,则只需通过 Kdenlive 重新运行它。如果没有,重做视频/音频。根据需要将片段静音。最终,这就像叠加一样,除了你使用的视频来自于一个片段,而音频来自于另一个片段。工作完成。

更多阅读

我不想用链接重复自己或垃圾信息。在“软件与安全”部分,我有 VLC 上的片段,因此你可能需要咨询。前面提到的关于 VLC 和字幕的文章已经链接到大约六个相关教程,涵盖了其他主题,如流媒体、日志记录、视频旋转、远程文件访问等等。我相信你可以像专业人员一样使用搜索引擎。

总结

我希望你觉得本指南有帮助。它涵盖了很多,我试图使其直接而简单,并解决流媒体爱好者和字幕爱好者在使用 VLC 时可能遇到的许多陷阱。这都与容器和编解码器相关,而且媒体世界几乎没有标准的事实,当你从一种格式转换到另一种格式时,有时你可能会遇到边际情况。

如果你遇到了一些错误,这里的提示和技巧应该可以至少帮助你解决一些,包括无法播放的流、丢失或重复的字幕、缺少编解码器和 Kdenlive 解决方法、YouTube 上传错误、隐藏的 VLC 命令行选项,还有一些其他东西。是的,这些对于一段文字来说是很多的。幸运的是,这些都是好东西。保重,互联网的孩子们。如果你有任何其他要求,我将来的 VLC 文章应该会涵盖,请随意给我发邮件。

干杯。


via: http://www.dedoimedo.com/computers/vlc-subtitles-errors.html

作者:Dedoimedo 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

应用程序的性能决定了软件能多快完成预期任务。这回答有关应用程序的几个问题,例如:

  • 峰值负载下的响应时间
  • 与替代方案相比,它易于使用,受支持的功能和用例
  • 运营成本(CPU 使用率、内存需求、数据吞吐量、带宽等)

该性能分析的价值超出了服务负载所需的计算资源或满足峰值需求所需的应用实例数量的估计。性能显然与成功企业的基本要素挂钩。它揭示了用户的总体体验,包括确定什么会拖慢客户预期的响应时间,通过设计满足带宽要求的内容交付来提高客户粘性,选择最佳设备,最终帮助企业发展业务。

问题

当然,这是对业务服务的性能工程价值的过度简化。为了理解在完成我刚刚所描述事情背后的挑战,让我们把它放到一个真实的稍微有点复杂的场景中。

现实世界的应用程序可能托管在云端。应用程序可以利用非常大(或概念上是无穷大)的计算资源。在硬件和软件方面的需求将通过云来满足。从事开发工作的开发人员将使用云交付功能来实现更快的编码和部署。云托管不是免费的,但成本开销与应用程序的资源需求成正比。

除了 搜索即服务 Search as a Service (SaaS)、 平台即服务 Platform as a Service (PaaS)、 基础设施即服务 Infrastructure as a Service (IaaS)以及 负载平衡即服务 Load Balancing as a Service (LBaaS)之外,当云端管理托管程序的流量时,开发人员可能还会使用这些快速增长的云服务中的一个或多个:

  • 安全即服务 Security as a Service (SECaaS),可满足软件和用户的安全需求
  • 数据即服务 Data as a Service (DaaS),为应用提供了用户需求的数据
  • 登录即服务 Logging as a Service (LaaS),DaaS 的近亲,提供了日志传递和使用的分析指标
  • 搜索即服务 Search as a Service (SaaS),用于应用程序的分析和大数据需求
  • 网络即服务 Network as a Service (NaaS),用于通过公共网络发送和接收数据

云服务也呈指数级增长,因为它们使得开发人员更容易编写复杂的应用程序。除了软件复杂性之外,所有这些分布式组件的相互作用变得越来越多。用户群变得更加多元化。该软件的需求列表变得更长。对其他服务的依赖性变大。由于这些因素,这个生态系统的缺陷会引发性能问题的多米诺效应。

例如,假设你有一个精心编写的应用程序,它遵循安全编码实践,旨在满足不同的负载要求,并经过彻底测试。另外假设你已经将基础架构和分析工作结合起来,以支持基本的性能要求。在系统的实现、设计和架构中建立性能标准需要做些什么?软件如何跟上不断变化的市场需求和新兴技术?如何测量关键参数以调整系统以获得最佳性能?如何使系统具有弹性和自我恢复能力?你如何更快地识别任何潜在的性能问题,并尽早解决?

进入容器

软件容器微服务设计或面向服务的架构(SoA)的优点为基础,提高了性能,因为包含更小的、自足的代码块的系统更容易编码,对其它系统组件有更清晰、定义良好的依赖。测试更容易,包括围绕资源利用和内存过度消耗的问题比在宏架构中更容易确定。

当扩容系统以增加负载能力时,容器应用程序的复制快速而简单。安全漏洞能更好地隔离。补丁可以独立版本化并快速部署。性能监控更有针对性,测量更可靠。你还可以重写和“改版”资源密集型代码,以满足不断变化的性能要求。

容器启动快速,停止也快速。它比虚拟机(VM)有更高效资源利用和更好的进程隔离。容器没有空闲内存和 CPU 闲置。它们允许多个应用程序共享机器,而不会丢失数据或性能。容器使应用程序可移植,因此开发人员可以构建并将应用程序发送到任何支持容器技术的 Linux 服务器上,而不必担心性能损失。容器生存在其内,并遵守其集群管理器(如 Cloud Foundry 的 Diego、Kubernetes、Apache Mesos 和 Docker Swarm)所规定的配额(比如包括存储、计算和对象计数配额)。

容器在性能方面表现出色,而即将到来的 “serverless” 计算(也称为 功能即服务 Function as a Service (FaaS))的浪潮将扩大容器的优势。在 FaaS 时代,这些临时性或短期的容器将带来超越应用程序性能的优势,直接转化为在云中托管的间接成本的节省。如果容器的工作更快,那么它的寿命就会更短,而且计算量负载纯粹是按需的。


作者简介:

Garima 是 Red Hat 的工程经理,专注于 OpenShift 容器平台。在加入 Red Hat 之前,Garima 帮助 Akamai Technologies&MathWorks Inc. 开创了创新。


via: https://opensource.com/article/17/2/performance-container-world

作者:Garima 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Fedora 项目 7 月份宣布推出 Fedora 26, 它是全面开放源代码的 Fedora 操作系统的最新版本。

Fedora Linux 是 Red Hat Enterprise Linux(RHEL)的社区版本。Fedora 26 包含一组基础包,形成针对不同用户的三个不同版本的基础。

Fedora 原子主机版 Atomic Host Edition 是用于运行基于容器的工作的操作系统。Fedora 服务器版 Server 将 Fedora Server OS 安装在硬盘驱动器上。Fedora 工作站版 Workstation 是一款用于笔记本电脑和台式机的用户友好操作系统,它适用于广泛的用户 - 从业余爱好者和学生到企业环境中的专业人士。

所有这三个版本都有共同的基础和一些共同的优点。所有 Fedora 版本每年发行两次。

Fedora 项目是创新和新功能的测试基地。Fedora 项目负责人 Matthew Miller 说,有些特性将在即将发布的 RHEL 版本中实现。

他告诉 LinuxInsider:“Fedora 并没有直接参与这些产品化决策。Fedora 提供了许多想法和技术,它是 Red Hat Enterprise Linux 客户参与并提供反馈的好地方。”

强力的软件包

Fedora 开发人员更新和改进了所有三个版本的软件包。他们在 Fedora 26 中进行了许多错误修复和性能调整,以便在 Fedora 的用例中提供更好的用户体验。

这些安装包包括以下改进:

  • 更新的编译器和语言,包括 GCC 7、Go 1.8、Python 3.6 和 Ruby 2.4;
  • DNF 2.0 是 Fedora 下一代包管理系统的最新版本,它与 Yum 的向后兼容性得到改善;
  • Anaconda 安装程序新的存储配置界面,可从设备和分区进行自下而上的配置;
  • Fedora Media Writer 更新,使用户可以为基于 ARM 的设备(如 Raspberry Pi)创建可启动 SD 卡。

Endpoint Technologies Associates 的总裁 Roger L. Kay 指出,云工具对于使用云的用户必不可少,尤其是程序员。

他对 LinuxInsider 表示:“Kubernetes 对于在混合云中编程感兴趣的程序员来说是至关重要的,这可能是目前业界更重要的发展之一。云,无论是公有云、私有云还是混合云 - 都是企业计算未来的关键。”

Fedora 26 原子主机亮相

Linux 容器和容器编排引擎一直在普及。Fedora 26 原子主机提供了一个最小占用的操作系统,专门用于在裸机到云端的环境中运行基于容器的工作任务。

Fedora 26 原子主机更新大概每两周发布一次,这个时间表可以让用户及时跟上游创新。

Fedora 26 原子主机可用于 Amazon EC2 。OpenStack、Vagrant 镜像和标准安装程序 ISO 镜像可在 Fedora 项目网站上找到。

最小化的 Fedora 原子的容器镜像也在 Fedora 26 上首次亮相。

云托管

最新版本为 Fedora 26 原子主机提供了新功能和特性:

  • 容器化的 Kubernetes 作为内置的 Kubernetes 二进制文件的替代品,使用户更容易地运行不同版本的容器编排引擎;
  • 最新版本的 rpm-ostree,其中包括支持直接 RPM 安装,重新加载命令和清理命令;
  • 系统容器,它提供了一种在容器中的 Fedora 原子主机上安装系统基础设施软件(如网络或 Kubernetes)的方法;
  • 更新版本的 Docker、Atomic和 Cockpit,用于增强容器构建,系统支持和负载监控。

根据 Fedora 项目的 Miller 所言,容器化的 Kubernetes 对于 Fedora 原子主机来说是重要的,有两个重要原因。

他解释说:“首先,它可以让我们从基础镜像中删除它,减小大小和复杂度。第二,在容器中提供它可以轻松地在不同版本中切换,而不会破环基础,或者为尚未准备好进行改变的人造成麻烦。”

服务器端服务

Fedora 26 服务器版为数据中心运营提供了一个灵活的多角色平台。它还允许用户自定义此版本的 Fedora 操作系统以满足其独特需求。

Fedora 26 服务器版的新功能包括 FreeIPA 4.5,它可以改进容器中运行的安全信息管理解决方案,以及 SSSD 文件缓存,以加快用户和组查询的速度。

Fedora 26 服务器版月底将增加称为 “Boltron” 的 Fedora 模块化技术预览。作为模块化操作系统,Boltron 使不同版本的不同应用程序能够在同一个系统上运行,这实质上允许将前沿运行时与稳定的数据库配合使用。

打磨工作站版

对于一般用户的新工具和功能之一是更新的 GNOME 桌面功能。开发将获得增强的生产力工具。

Fedora 26 工作站版附带 GNOME 3.24 和众多更新的功能调整。夜光根据时间细微地改变屏幕颜色,以减少对睡眠模式的影响。LibreOffice 5.3 是开源办公生产力套件的最新更新。

GNOME 3.24 提供了 Builder 和 Flatpak 的成熟版本,它为开发人员提供了更好的应用程序开发工具,它可以方便地访问各种系统,包括 Rust 和 Meson。

不只是为了开发

根据 Azul Systems 的首席执行官 Scott Sellers 的说法,更新的云工具将纳入针对企业用户的 Linux 发行版中。

他告诉 LinuxInsider:“云是新兴公司以及地球上一些最大的企业的主要开发和生产平台。”

Sellers说:“鉴于 Fedora 社区的前沿性质,我们预计在任何 Fedora 版本中都会强烈关注云技术,Fedora 26 不会不令人失望。”

他指出,Fedora 开发人员和用户社区的另一个特点就是 Fedora 团队在模块化方面所做的工作。

Sellers 说:“我们将密切关注这些实验功能。”

支持的升级方式

Sellers 说 Fedora 的用户超过其他 Linux 发行版的用户,很多都有兴趣升级到 Fedora 26,即使他们不是重度云端用户。

他说:“这个发行版的主要优点之一就是能提前看到先进的生产级别技术,这些最终将被整合到 RHEL 中。Fedora 26 的早期评论表明它非常稳定,修复了许多错误以及提升了性能。”

Fedora 的 Miller 指出,有兴趣从早期 Fedora 版本升级的用户可能比擦除现有系统安装 Fedora 26 更容易。Fedora 一次维护两个版本,中间还有一个月的重叠。

他说:“所以,如果你在用 Fedora 24,你应该在下个月升级。幸运的 Fedora 25 用户可以随时升级,这是 Fedora 快速滚动版本的优势之一。”

更快的发布

用户可以安排自己升级,而不是在发行版制作出来时进行升级。

也就是说,Fedora 23 或更早版本的用户应该尽快升级。社区不再为这些版本发布安全更新


作者简介:

Jack M. Germain 自 2003 年以来一直是 ECT 新闻网记者。他的主要重点领域是企业IT、Linux、和开源技术。他撰写了许多关于 Linux 发行版和其他开源软件的评论。发邮件联系 Jack


via: http://www.linuxinsider.com/story/84674.html

作者:Jack M. Germain 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

7z 无疑是一个功能强大的强大的归档工具(声称提供最高的压缩比)。在 HowtoForge 中,我们已经已经讨论过如何安装和使用它。但讨论仅限于你可以使用该工具提供的“功能字母”来使用基本功能。

在本教程中,我们将扩展对这个工具的说明,我们会讨论一些 7z 提供的“开关”。 但在继续之前,需要说明的是,本教程中提到的所有说明和命令都已在 Ubuntu 16.04 LTS 上进行了测试。

注意:我们将使用以下截图中显示的文件来执行使用 7zip 的各种操作。

ls from test directory

包含文件

7z 工具允许你有选择地将文件包含在归档中。可以使用 -i 开关来使用此功能。

语法:

-i[r[-|0]]{@listfile|!wildcard}

比如,如果你想在归档中只包含 “.txt” 文件,你可以使用下面的命令:

$ 7z a ‘-i!*.txt’ include.7z

这是输出:

add files to 7zip

现在,检查新创建的归档是否只包含 “.txt” 文件,你可以使用下面的命令:

$ 7z l include.7z

这是输出:

Result

在上面的截图中,你可以看到 “testfile.txt” 已经包含到归档中了。

排除文件

如果你想要,你可以排除不想要的文件。可以使用 -x 开关做到。

语法:

-x[r[-|0]]]{@listfile|!wildcard}

比如,如果你想在要创建的归档中排除 “abc.7z” ,你可以使用下面的命令:

$ 7z a ‘-x!abc.7z’ exclude.7z

这是输出:

exclude files from 7zip

要检查最后的归档是否排除了 “abc.7z”, 你可以使用下面的命令:

$ 7z l exclude.7z

这是输出:

result of file exclusion

上面的截图中,你可以看到 “abc.7z” 已经从新的归档中排除了。

专业提示:假设任务是排除以 “t” 开头的所有 .7z 文件,并且包含以字母 “a” 开头的所有 .7z 文件。这可以通过以下方式组合 -i-x 开关来实现:

$ 7z a '-x!t*.7z' '-i!a*.7z' combination.7z

设置归档密码

7z 同样也支持用密码保护你的归档文件。这个功能可以使用 -p 开关来实现。

$ 7z a [archive-filename] -p[your-password] -mhe=[on/off]

注意-mhe 选项用来启用或者禁用归档头加密(默认是“off”)。

例子:

$ 7z a password.7z -pHTF -mhe=on

无需多说,当你解压密码保护的归档时,工具会向你询问密码。要解压一个密码保护的文件,使用 e 功能字母。下面是例子:

$ 7z e password.7z

protect 7zip archive with a password

设置输出目录

工具同样支持解压文件到你选择的目录中。这可以使用 -o 开关。无需多说,这个开关只在含有 e 或者 x 功能字母的时候有用。

$ 7z [e/x] [existing-archive-filename] -o[path-of-directory]

比如,假设下面命令工作在当前的工作目录中:

$ 7z e output.7z -ohow/to/forge

-o 开关的值所指的那样,它的目标是解压文件到 ./how/to/forge 中。

这是输出:

7zip output directory

在上面的截图中,你可以看到归档文件的所有内容都已经解压了。但是在哪里?要检查文件是否被解压到 ./how/to/forge,我们可以使用 ls -R 命令。

result

在上面的截图中,我们可以看到 .7z 中的内容都被解压到 ./how/to/forge 中。

创建多个卷

借助 7z 工具,你可以为归档创建多个卷(较小的子档案)。当通过网络或 USB 传输大文件时,这是非常有用的。可以使用 -v 开关使用此功能。这个开关需要指定子档案的大小。

我们可以以字节(b)、千字节(k)、兆字节(m)和千兆字节(g)指定子档案大小。

$ 7z a [archive-filename] [files-to-archive] -v[size-of-sub-archive1] -v[size-of-sub-archive2] ....

让我们用一个例子来理解这个。请注意,我们将使用一个新的目录来执行 -v 开关的操作。

这是目录内容的截图:

7zip volumes

现在,我们运行下面的命令来为一个归档文件创建多个卷(每个大小 100b):

7z a volume.7z * -v100b

这是截图:

compressing volumes

现在,要查看创建的子归档,使用 ls 命令。

list of archives

如下截图所示,一共创建四个卷 - volume.7z.001、volume.7z.002、volume.7z.003 和 volume.7z.004

注意:你可以使用 .7z.001 归档文件来解压。但是,要这么做,其他所有的卷都应该在同一个目录内。

设置归档的压缩级别

7z 允许你设置归档的压缩级别。这个功能可以使用 -m 开关。7z 中有不同的压缩级别,比如:-mx0-mx1-mx3-mx5-mx7-mx9

这是这些压缩级别的简要说明:

  • mx0 = 完全不压缩 - 只是复制文件到归档中。
  • mx1 = 消耗最少时间,但是压缩最小。
  • mx3 = 比 -mx1 好。
  • mx5 = 这是默认级别 (常规压缩)。
  • mx7 = 最大化压缩。
  • mx9 = 极端压缩。

注意:关于这些压缩级别的更多信息,阅读这里

$ 7z a [archive-filename] [files-to-archive] -mx=[0,1,3,5,7,9]

例如,我们在目录中有一堆文件和文件夹,我们每次尝试使用不同的压缩级别进行压缩。作为一个例子,这是当使用压缩级别 “0” 时创建存档时使用的命令。

$ 7z a compression(-mx0).7z * -mx=0

相似地,其他命令也这样执行。

以下是输出档案(使用 “ls” 命令生成)的列表,其名称表示其创建中使用的压缩级别,输出中的第五列显示压缩级别对其大小的影响。

7zip compression level

显示归档的技术信息

如果需要,7z 还可以在标准输出中显示归档的技术信息 - 类型、物理大小、头大小等。可以使用 -slt 开关使用此功能。 此开关仅适用于带有 l 功能字母的情况下。

$ 7z l -slt [archive-filename]

比如:

$ 7z l -slt abc.7z

这是输出:

指定创建归档的类型

如果你想要创建一个非 7z 的归档文件(这是默认的创建类型),你可以使用 -t 开关来指定。

$ 7z a -t[specify-type-of-archive] [archive-filename] [file-to-archive]

下面的例子展示创建了一个 .zip 文件:

7z a -tzip howtoforge *

输出的文件是 “howtoforge.zip”。要交叉验证它的类型,使用 file 命令:

因此,howtoforge.zip 的确是一个 ZIP 文件。相似地,你可以创建其他 7z 支持的归档。

总结

你将会认识到, 7z 的 “功能字母” 以及 “开关” 的知识可以让你充分利用这个工具。我们还没有完成开关的部分 - 其余部分将在第 2 部分中讨论。


via: https://www.howtoforge.com/tutorial/understanding-7z-command-switches/

作者:Himanshu Arora 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出