Linux功法之文件切割术

一、命令介绍

1.split命令

[root@iZbp187tvtln33l6u05tq6Z test]# split --help
Usage: split [OPTION]... [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is 'x'.  With no INPUT, or when INPUT
is -, read standard input.Mandatory arguments to long options are mandatory for short options too.-a, --suffix-length=N   generate suffixes of length N (default 2)--additional-suffix=SUFFIX  append an additional SUFFIX to file names-b, --bytes=SIZE        put SIZE bytes per output file-C, --line-bytes=SIZE   put at most SIZE bytes of lines per output file-d, --numeric-suffixes[=FROM]  use numeric suffixes instead of alphabetic;FROM changes the start value (default 0)-e, --elide-empty-files  do not generate empty output files with '-n'--filter=COMMAND    write to shell COMMAND; file name is $FILE-l, --lines=NUMBER      put NUMBER lines per output file-n, --number=CHUNKS     generate CHUNKS output files; see explanation below-u, --unbuffered        immediately copy input to output with '-n r/...'--verbose           print a diagnostic just before eachoutput file is opened--help     display this help and exit--version  output version information and exitSIZE is an integer and optional unit (example: 10M is 10*1024*1024).  Units
are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).CHUNKS may be:
N       split into N files based on size of input
K/N     output Kth of N to stdout
l/N     split into N files without splitting lines
l/K/N   output Kth of N to stdout without splitting lines
r/N     like 'l' but use round robin distribution
r/K/N   likewise but only output Kth of N to stdout

2.cat命令

Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s), or standard input, to standard output.-A, --show-all           equivalent to -vET-b, --number-nonblank    number nonempty output lines, overrides -n-e                       equivalent to -vE-E, --show-ends          display $ at end of each line-n, --number             number all output lines-s, --squeeze-blank      suppress repeated empty output lines-t                       equivalent to -vT-T, --show-tabs          display TAB characters as ^I-u                       (ignored)-v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB--help     display this help and exit--version  output version information and exitWith no FILE, or when FILE is -, read standard input.Examples:cat f - g  Output f's contents, then standard input, then g's contents.cat        Copy standard input to standard output.

二、演示

本次使用容器镜像文件演示,将完整镜像做成tar包,直接切割tar包后再合并,再加载镜像tar包到本地环境,用刚加载的镜像run一个容器,看能否正常工作

1.先找个镜像做成tar包

用nginx-1.16.1:v1镜像

[root@iZbp187tvtln33l6u05tq6Z experiment]# nerdctl image ls
REPOSITORY      TAG               IMAGE ID        CREATED           PLATFORM       SIZE         BLOB SIZE
centos7-base    v1                6f5f338e1361    7 months ago      linux/amd64    454.8 MiB    154.3 MiB
centos          centos7.9.2009    be65f488b776    7 months ago      linux/amd64    214.8 MiB    72.6 MiB
nginx-1.16.1    v1                12be16c071b2    55 minutes ago    linux/amd64    469.7 MiB    158.3 MiB
nginx-1.16.1    v2                7b30649ffc67    5 months ago      linux/amd64    469.7 MiB    158.3 MiB
nginx-1.16.3    v3                0abe1c1f1e0a    5 months ago      linux/amd64    469.7 MiB    158.3 MiB
nginx           latest            c26ae7472d62    8 months ago      linux/amd64    191.9 MiB    67.3 MiB
[root@iZbp187tvtln33l6u05tq6Z experiment]# nerdctl save -o nginx.tar nginx-1.16.1:v1
[root@iZbp187tvtln33l6u05tq6Z experiment]# ll
total 162160
-rw-r--r-- 1 root root 166050816 Oct 23 11:41 nginx.tar

2.删除本地已有的镜像

[root@iZbp187tvtln33l6u05tq6Z experiment]# nerdctl image rm nginx-1.16.1:v1
Untagged: docker.io/library/nginx-1.16.1:v1@sha256:12be16c071b25a5ac57e1dd60863796c1b6919b43c62658587947a2f2a708538
Deleted: sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02
Deleted: sha256:89f285956a59b0efb45e706472fe0501393c87d8dce10c369a80aaf02df4c1d4
Deleted: sha256:0af98a3443f019148394530ebb94746ec084a8cc1975f08d518d835c484f032f
Deleted: sha256:b13a4358ea58c3b17a66d8fd1c6934599aed3e8c6a5ee5172710adb44e067247
Deleted: sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef
Deleted: sha256:2c35b74746e200b87098082d66c3f30aad6ba9b8eee631439871cdaa9838a5da
[root@iZbp187tvtln33l6u05tq6Z experiment]# nerdctl image ls
REPOSITORY      TAG               IMAGE ID        CREATED         PLATFORM       SIZE         BLOB SIZE
centos7-base    v1                6f5f338e1361    7 months ago    linux/amd64    454.8 MiB    154.3 MiB
centos          centos7.9.2009    be65f488b776    7 months ago    linux/amd64    214.8 MiB    72.6 MiB
nginx-1.16.1    v2                7b30649ffc67    5 months ago    linux/amd64    469.7 MiB    158.3 MiB
nginx-1.16.3    v3                0abe1c1f1e0a    5 months ago    linux/amd64    469.7 MiB    158.3 MiB
nginx           latest            c26ae7472d62    8 months ago    linux/amd64    191.9 MiB    67.3 MiB
## 上面看到nginx-1.16.1:v1已经被删除了

3.切割tar包

[root@iZbp187tvtln33l6u05tq6Z experiment]# split -b 50MB nginx.tar ng- --additional-suffix=.tar
[root@iZbp187tvtln33l6u05tq6Z experiment]# ls
ng-aa.tar  ng-ab.tar  ng-ac.tar  ng-ad.tar  nginx.tar

命令解析:
-b:每个小文件的大小
ng-:添加文件前缀,这个可以自定义
–additional-suffix:添加文件后缀

[root@iZbp187tvtln33l6u05tq6Z experiment]# ll
total 324332
-rw-r--r-- 1 root root  50000000 Oct 23 11:50 ng-aa.tar
-rw-r--r-- 1 root root  50000000 Oct 23 11:50 ng-ab.tar
-rw-r--r-- 1 root root  50000000 Oct 23 11:50 ng-ac.tar
-rw-r--r-- 1 root root  16050816 Oct 23 11:50 ng-ad.tar
-rw-r--r-- 1 root root 166050816 Oct 23 11:41 nginx.tar
[root@iZbp187tvtln33l6u05tq6Z experiment]# md5sum *
2fea19a7325ff8feffde4a04e122700e  ng-aa.tar
e64eaa4230879a6a0525bb91548412f4  ng-ab.tar
eaa0e14e5d4ae31011b94b65fe42aa4d  ng-ac.tar
d47545545ee1dbb73f7f1b7eaa62de6a  ng-ad.tar
fb4f39eecba84a48b1d008b49f2881d5  nginx.tar
  • 切割完后能看到,前三个文件被均匀的分割成50MB,且每个文件MD5码均不相同
  • 这个时候根据实际场景,想发送的发送,想下载的下载
  • 奈何环境有限,这里我们假设已经发送到另外一台机器,然后再继续接下来的步骤

4.合并文件

[root@iZbp187tvtln33l6u05tq6Z experiment]# mv ng-* ../test/
[root@iZbp187tvtln33l6u05tq6Z experiment]# cd ../test
[root@iZbp187tvtln33l6u05tq6Z test]# ls
ng-aa.tar  ng-ab.tar  ng-ac.tar  ng-ad.tar
[root@iZbp187tvtln33l6u05tq6Z test]# cat ng-ab.tar >>ng-aa.tar
[root@iZbp187tvtln33l6u05tq6Z test]# cat ng-ac.tar >>ng-aa.tar
[root@iZbp187tvtln33l6u05tq6Z test]# cat ng-ad.tar >>ng-aa.tar
[root@iZbp187tvtln33l6u05tq6Z test]# ll
total 275500
-rw-r--r-- 1 root root 166050816 Oct 23 12:02 ng-aa.tar
-rw-r--r-- 1 root root  50000000 Oct 23 11:50 ng-ab.tar
-rw-r--r-- 1 root root  50000000 Oct 23 11:50 ng-ac.tar
-rw-r--r-- 1 root root  16050816 Oct 23 11:50 ng-ad.tar
  • 刚开始我以为有其他命令将文件合并,毕竟是tar包,没想到cat直接追加也好使,有点暴力
  • 实际上vi也能打开tar,只不过里面是加密过得内容,能用vi打开那就把tar包当做特殊的文本文件来看,这么来看cat直接追加也能说得通

5.比较新tar包和老tar包的MD5

[root@iZbp187tvtln33l6u05tq6Z test]# md5sum ng-aa.tar ../experiment/nginx.tar
fb4f39eecba84a48b1d008b49f2881d5  ng-aa.tar
fb4f39eecba84a48b1d008b49f2881d5  ../experiment/nginx.tar

MD5码一样

6.加载本地镜像

[root@iZbp187tvtln33l6u05tq6Z test]# nerdctl load -i ng-aa.tar
unpacking docker.io/library/nginx-1.16.1:v1 (sha256:12be16c071b25a5ac57e1dd60863796c1b6919b43c62658587947a2f2a708538)...
Loaded image: nginx-1.16.1:v1
[root@iZbp187tvtln33l6u05tq6Z test]# nerdctl image ls
REPOSITORY      TAG               IMAGE ID        CREATED           PLATFORM       SIZE         BLOB SIZE
centos7-base    v1                6f5f338e1361    7 months ago      linux/amd64    454.8 MiB    154.3 MiB
centos          centos7.9.2009    be65f488b776    7 months ago      linux/amd64    214.8 MiB    72.6 MiB
nginx-1.16.1    v1                12be16c071b2    12 seconds ago    linux/amd64    469.7 MiB    158.3 MiB
nginx-1.16.1    v2                7b30649ffc67    5 months ago      linux/amd64    469.7 MiB    158.3 MiB
nginx-1.16.3    v3                0abe1c1f1e0a    5 months ago      linux/amd64    469.7 MiB    158.3 MiB
nginx           latest            c26ae7472d62    8 months ago      linux/amd64    191.9 MiB    67.3 MiB
##能看到这个nginx-1.16.1:v1创建时间是12秒前,说明是刚加载的镜像

7.run一个容器

[root@iZbp187tvtln33l6u05tq6Z test]# nerdctl run -d --name split-test -p 8080:80 nginx-1.16.1:v1
56338b68619bde51d140590c8de3c80f48b74dd6a800fe8f7461dc8d4774167d
[root@iZbp187tvtln33l6u05tq6Z test]# nerdctl ps -a
CONTAINER ID    IMAGE                                COMMAND                   CREATED          STATUS     PORTS                   NAMES
2ba700e7f5a3    docker.io/library/nginx-1.16.3:v3    "/bin/sh -c echo `if…"    5 months ago     Created    0.0.0.0:80->80/tcp      nginx
56338b68619b    docker.io/library/nginx-1.16.1:v1    "/bin/sh -c echo `if…"    6 seconds ago    Up         0.0.0.0:8080->80/tcp    split-test
## split-test容器已经启动了

curl一下看看

[root@iZbp187tvtln33l6u05tq6Z experiment]# curl 127.0.0.1:8080
10.4.0.11
[root@iZbp187tvtln33l6u05tq6Z test]# nerdctl inspect 56338b68619b | jq -r .[0].NetworkSettings.Networks[].IPAddress
10.4.0.11
##IP一样,测试成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457424.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins发布vue项目,版本不一致导致build错误

问题一 yarn.lock文件的存在导致在自动化的时候,频频失败问题二 仓库下载的资源与项目资源版本不一致 本地跑好久的一个项目,现在需要部署在Jenkins上面进行自动化打包部署;想着部署后今后可以省下好多时间,遂兴高采烈地去部署&am…

c++:string类

想要深刻理解string类最好自己实现一个,可以看我的这篇文章:c:模拟实现string类-CSDN博客想要学好库中的string最好自己实现一个出来,能够加深对string的理解。蟹蟹观看!关注!评论!一键三连!htt…

模型 支付矩阵

系列文章 分享 模型,了解更多👉 模型_思维模型目录。策略选择的收益分析工具。 1 支付矩阵的应用 1.1 支付矩阵在市场竞争策略分析中的应用 支付矩阵是一种强大的决策工具,它在多个领域的应用中都发挥着重要作用。以下是一个具体的应用案例…

WebView渲染异常导致闪退解决方案

背景: App主页面使用了大量WebView容器(10个以上)显示图表信息,最新发现bugly上面出现一些关于浏览器Native Crash,如下: 经排查,是WebView渲染失败导致Crash,可以通过webView.loadUrl("chrome://cra…

《Windows PE》7.4 资源表应用

本节我们将通过两个示例程序,演示对PE文件内图标资源的置换与提取。 本节必须掌握的知识点: 更改图标 提取图标资源 7.4.1 更改图标 让我们来做一个实验,替换PE文件中现有的图标。如果手工替换,一定是先找到资源表,…

Linux -- 共享内存(2)

目录 命令 ipcs -m : 命令 ipcrm -m shmid: 共享内存的通信: 为什么共享内存更高效? 代码: ShmClient.cc: ShmServer.cc: 结果: 如何让共享内存实现同步? 代码&a…

基于SSM的BBS社区论坛系统源码

运行环境:ideamysql5.7jdk8maven 使用技术:ssmmysqlshirolayui 功能模块:用户管理、模板管理、帖子管理、公告管理、权限管理等

echarts:导入excel生成桑葚图

前言 前两天帮别人实现了一个小功能&#xff0c;主要是选择excel文件&#xff0c;读取里面的数据&#xff0c;将数据生成桑葚图 echarts官方桑葚图案例 实现 因为就是一个单纯的html文件&#xff0c;用到的库都是通过CDN的方式加载的&#xff0c;会有一些慢 <!DOCTYPE …

IPC 进程间通信 信号量集合 Linux环境 C语言实现

只用于多进程间的并发控制 一个信息量集合(信号量集 或 信息量数组)中顺序存储着多个信号量 相关接口函数&#xff1a; 实际项目&#xff0c;直接调用semop函数来作为某个或某几个信号量的PV操作函数会很不方便&#xff0c;因此会对信号量集合的接口进行二次封装&#xff0c;封…

AI实操Excel:在Excel中学习人工智能基础算法

人工智能&#xff08;AI&#xff09;已经成为当今科技领域最热门的话题之一&#xff0c;但对于初学者来说&#xff0c;直接上手复杂的编程和算法可能会感到有些困难。今天&#xff0c;我要向大家介绍一个非常实用的工具——AI实操Excel&#xff0c;这是一个通过Excel实现人工智…

「二叉树进阶题解:构建、遍历与结构转化全解析」

文章目录 根据二叉树创建字符串思路代码 二叉树的层序遍历思路代码 二叉树的最近公共祖先思路代码 二叉搜索树与双向链表思路代码 从前序与中序遍历序列构造二叉树思路代码 总结 根据二叉树创建字符串 题目&#xff1a; 样例&#xff1a; 可以看见&#xff0c;唯一特殊的就…

影刀RPA实战:常见实用功能指令

1. 电脑锁屏与解屏 在实际工作中&#xff0c;我们为了自身工作电脑数据文件的安全&#xff0c;都会为电脑设置密码&#xff0c;当我们离开电脑时&#xff0c;直接锁屏&#xff0c;即使不手动锁屏&#xff0c;也会在一定时间内自动锁屏。 如果你的工作是影刀RPA帮你自动化处理…

Spring Boot驱动的厨艺社交平台设计与实现

5 系统实现 5.1食材分类管理 管理员管理食材分类&#xff0c;可以添加&#xff0c;修改&#xff0c;删除食材分类信息。下图就是食材分类管理页面。 图5.1 食材分类管理页面 5.2 用户信息管理 管理员管理用户信息&#xff0c;可以添加&#xff0c;修改&#xff0c;删除用户信…

kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 分布式&#xff08;不是单机&#xff09;的情况下&#xff0c;如何保证消息的顺序消费?】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 分布式&#xff08;不是单机&#xff09;的情况下&#xff0c;如何保证消息的…

量子变分算法 (python qiskit)

背景 变分量子算法是用于观察嘈杂的近期设备上的量子计算效用的有前途的候选混合算法。变分算法的特点是使用经典优化算法迭代更新参数化试验解决方案或“拟设”。这些方法中最重要的是变分量子特征求解器 (VQE)&#xff0c;它旨在求解给定汉密尔顿量的基态&#xff0c;该汉密尔…

mac 上使用 cmake 构建包含 OpenMP 的项目

安装依赖 # clang 默认不支持 -fopenmp&#xff0c;因为它没有内置 OpenMP 支持。 # 为了解决这个问题&#xff0c;需要安装 libomp 并配置 clang 使用 libomp brew install libomp# macOS 自带的 clang 编译器被修改过&#xff0c;默认禁用了 OpenMP&#xff0c; # 而不支持 …

【K8S系列】Kubernetes Service 基础知识 详细介绍

在 Kubernetes 中&#xff0c;Service 是一种抽象的资源&#xff0c;用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口&#xff0c;解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。 1.…

class 36 二叉树高频题目 - 上 (不含有树形dp)

1. BFS 的两种方式 如下图, 是一个二叉树. 我们需要按照层的方式来遍历这棵树. 1.1 使用 JDK 自带的类实现(链表实现, 经典 BFS) 首先我们实现一个队列, 这个队列从头进, 从尾出.然后将根节点放入其中, 然后将放入的节点弹出,然后继续验证弹出的节点有没有左孩子, 若是有, 将…

【HTML】之form表单元素详解

HTML表单是网页与用户交互的关键组成部分&#xff0c;它允许用户输入数据并将数据提交到服务器进行处理。本文将全面详细地介绍HTML表单的各个方面&#xff0c;从基础元素到高级用法&#xff0c;并提供丰富的代码示例和中文注释&#xff0c;帮助你彻底掌握表单的使用。 1. 表单…

强大!Spring Boot 3.3 集成 PDFBox 轻松实现电子签章功能!

强大&#xff01;Spring Boot 3.3 集成 PDFBox 轻松实现电子签章功能&#xff01; 随着数字化办公和电子合同的普及&#xff0c;PDF 文档已经成为很多业务场景中的标准文件格式。为了确保文档的安全性和法律效力&#xff0c;电子签章技术应运而生。电子签章不仅可以证明文件的…