【星海出品】Linux大文件处理

在未生成大文件之前最好使用专门的日志管理工具(如logrotate)来管理日志文件的滚动和备份。这些工具通常具有更好的性能和更高的可靠性。

文件可以同时被写入和读取,在并发读写同一个文件时,可能会遇到性能瓶颈或竞争条件

用户 -> 内存 -> 缓存 -> 文件
用户态于内核态的转换可以参考:
https://blog.csdn.net/weixin_41997073/article/details/135266386


在大文件的处理前,最好先进行大的 I/O 处理。

测试写入性能:
time dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
测试读取性能:
time dd if=testfile of=/dev/null bs=1G count=1 iflag=direct

dd命令完成后会显示所用的时间和传输速率(如MB/s)。


dd 命令可以用来备份大的文件,但最好是没有程序在持续写入。

dd if=<source_file> of=<target_file>

如果没有空间的话,可以先通过 mount 挂载过来一个空间区域,进行备份。

dd命令理论上可以备份正在被写入的日志文件的前半部分
dd命令是一个底层工具,用于直接复制数据块。在备份正在被写入的文件时,由于文件内容的变化,dd命令可能需要多次尝试读取同一个数据块,这会降低备份的效率和性能。


然而如果想要只拷贝一半文件,需要进行前置操作比较多

1.首先查看磁盘的字节数

ls -l filename | awk '{print $5}'
du -b filename

注意:此处最好以 du 查看为准,因为 du 是以占据的 block 为基础进行计算的,和 dd 以 block 为单位备份一致。

total_bytes=1000000  # 文件的总字节数  
bytes_to_backup=500000  # 要备份的字节数  
block_size=4096  # 块大小,例如4k  
count=$((bytes_to_backup / block_size + (bytes_to_backup % block_size > 0 ? 1 : 0)))  
dd if=filename of=filename_half.backup bs=$block_size count=$count

备份后要使用 md5sum 进行验证

md5sum <file>head -c 500000 filename | md5sum  
md5sum filename_half.backup  

假设你有一个名为 logfile.log 的正在写入的日志文件,你想要备份它到另一个目录 /backup/:
可以使用另一个工具进行备份

rsync -avz /path/to/logfile.log /backup/

该工具的优点是支持增量备份。

rsync -avz --delete --ignore-errors /var/log/ /backup/

如果你想要定期运行备份,并且只备份自上次备份以来更改过的文件,你可以使用 --delete 选项(小心使用,因为它会删除目标目录中源目录中不存在的文件)和 --ignore-errors 选项(防止由于某些文件无法读取而导致的整个备份失败):


正在被写入的大文件可以使用 logrotate 进行处理
如果日志文件正在被写入,logrotate 会使用 copytruncate 选项(或类似的机制)来确保数据的一致性。
这通常意味着它会先复制日志文件到一个新的位置,然后清空原始文件以开始新的日志记录。由于复制和清空之间有一个时间差,可能会丢失部分日志数据,但通常这是一个可以接受的风险,因为 logrotate 设计的初衷就是为了管理大量的日志文件。

如果你不希望丢失任何数据,可以考虑使用 delaycompress 选项来延迟压缩操作,直到下一次轮转周期。

在配置文件中使用 postrotate 和 endscript 部分来定义在转储后需要执行的命令,比如重新加载应用程序或服务以使用新的日志文件。

/var/log/myapp.log {  daily  rotate 7  compress  delaycompress  missingok  notifempty  create 0640 www-data adm  sharedscripts  postrotate  /usr/bin/systemctl reload myapp.service > /dev/null  endscript  
}

大文件的读取
翻页读取而不一次全部加载到内存

def read_chunk(file_path, chunk_size=1024, start_pos=0):  with open(file_path, 'rb') as file:  file.seek(start_pos)  return file.read(chunk_size)  # 使用方法  
chunk = read_chunk('large_file.txt', chunk_size=1024 * 1024, start_pos=1024 * 1024 * 10)  # 读取第10MB之后的内容

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

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

相关文章

人工智能入门学习教程分享

目录 1.首先安装python,官网地址:Download Python | Python.org,进入网址,点击Windows链接 2.下载完成之后,进行傻瓜式安装,如果不选安装路径,默认会安装到C:\Users\Administrator\AppData\Local\Programs\Python\Python38目录下。 3.配置python环境变量,即把python的…

vue3打字机效果

简易明了&#xff0c;需要的小伙伴直接走起&#xff01; <template><div><div><p>{{ text }}</p></div></div> </template><script setup> import { onMounted, ref } from "vue";const shuzu ref("欢…

《思考总结》

思考总结 ==标题==:卷积操作的作用1. **特征提取**2. **参数共享**3. **降维和数据压缩**4. **提升计算效率**5. **平滑和去噪**卷积操作示例输入图像卷积核卷积过程总结==标题==:上卷积什么是上卷积(反卷积/转置卷积)上卷积的作用上卷积的实现1. **最近邻插值(Nearest Ne…

AI大模型时代:一线大厂为何竞相高薪招揽AI产品经理?

前言 在当今日新月异的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透至各行各业&#xff0c;成为推动社会进步的重要力量。在这样的背景下&#xff0c;AI产品经理这一新兴职位逐渐崭露头角&#xff0c;成为各大企业竞相争夺的稀缺人才。那么&#xf…

【SkyWalking】启用apm-trace-ignore-plugin追踪忽略插件

背景 使用Agent采集追踪数据的时候&#xff0c;想排除某些路径&#xff0c;比如健康检查等&#xff0c;这样可以减少上报的数据&#xff0c;也可以去除一些不必要的干扰数据。 加载插件 在agent/optional-plugins目录中有个apm-trace-ignore-plugin-${version}.jar插件&…

【电机控制】FOC算法验证步骤——PWM、ADC

【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…

HCIA 15 AC+FIT AP结构WLAN基础网络

本例配置AC+FIT,即瘦AP+AC组网。生活中家庭上网路由器是胖AP,相当于AC+FIT二合一集成到一个设备上。 1.实验介绍及拓扑 某企业网络需要用户通过 WLAN 接入网络,以满足移动办公的最基本需求。 1. AC 采用旁挂核心组网方式,AC 与AP 处于同一个二层网络。 2. AC 作为DHCP …

全局异常处理器

后端&#xff1a; 全局异常处理器的作用&#xff1a; 当我们在项目中碰到很多不同的异常情况时&#xff0c;我们需要去处理异常 不过我们不可能每个异常都用try/catch&#xff0c;那样很不优雅 所以我们可以用这个全局异常处理器&#xff0c;来优雅的处理异常 这个全局异常…

数组中的map方法

JavaScript中的map()方法详解 map()方法经常拿来遍历数组&#xff0c;但是不改变原数组&#xff0c;但是会返回一个新的数组&#xff0c;并且这个新的数组不会改变原数组的长度 注意&#xff1a;有时候会出现这种现象&#xff0c;出现几个undefined const array [1, 4,9, 16…

数字人系统源码开发攻略,小白也能轻松上手的部署方案来了!

随着数字人应用场景的不断拓展&#xff0c;数字人广阔的应用前景和庞大的市场需求逐渐展现在人们眼前。但是&#xff0c;由于专业背景的缺乏&#xff0c;许多想要开发数字人系统的创业者们都只能被迫成为旁观他人瓜分这块大蛋糕。在此背景下&#xff0c;各式各样的数字人系统源…

[论文笔记]Query Rewriting for Retrieval-Augmented Large Language Models

引言 今天带来论文Query Rewriting for Retrieval-Augmented Large Language Models的笔记。 本篇工作从查询重写的角度介绍了一种新的框架&#xff0c;即重写-检索-阅读&#xff0c;而不是以前的检索-阅读方式&#xff0c;用于检索增强的LLM。关注的是搜索查询本身的适应性&…

检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统

什么是 RAG LLM 会产生误导性的 “幻觉”&#xff0c;依赖的信息可能过时&#xff0c;处理特定知识时效率不高&#xff0c;缺乏专业领域的深度洞察&#xff0c;同时在推理能力上也有所欠缺。 正是在这样的背景下&#xff0c;检索增强生成技术&#xff08;Retrieval-Augmented…

[Python学习篇] Python循环语句

while 循环 语法&#xff1a; while 条件: 条件成立后会重复执行的代码 ...... 示例1&#xff1a;死循环 # 这是一个死循环示例 while True:print("我正在重复执行")示例2&#xff1a;循环指定次数 i 1 while i < 5:print(f"执行次数 {i}")…

学了这篇面试经,轻松收割网络安全的offer

网络安全面试库 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 0x1 应届生面试指南 网络安全面…

Sheila Teo分享GPT-4提示工程竞赛胜利经验,DynamiCrafter工具实现图转超逼真动态视频

一支烟花官网&#xff1a; https://agifun.love 智源社区 我是如何赢得GPT-4提示工程大赛冠军的 Datawhale干货作者&#xff1a;Sheila Teo&#xff0c;来源&#xff1a;机器之心去年 11 月 8 日&#xff0c;新加坡政府科技局&#xff08;GovTech&#xff09;组织举办了首届…

ISO七层模型 tcp/ip

OSI七层模型&#xff08;重点例子&#xff09; OSI&#xff08;Open Systems Interconnection&#xff09;模型&#xff0c;也称为开放系统互连模型&#xff0c;是一个理论模型&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;制定&#xff0c;用于描述和理解不同网络…

Web前端机试题深度剖析:挑战与策略

Web前端机试题深度剖析&#xff1a;挑战与策略 在数字时代的浪潮中&#xff0c;Web前端开发作为连接技术与用户的关键环节&#xff0c;其重要性不言而喻。在求职或技能考核中&#xff0c;机试题往往是检验前端开发者能力的重要手段。本文将围绕Web前端机试题&#xff0c;从四个…

bash脚本无法设置环境变量?你需要了解 source 和 sh 的区别

问题背景 有时需要通过脚本设置环境变量&#xff0c;但是发现脚本可以正常执行&#xff0c;但是环境变量没有任何更改。 假设有脚本内容如下&#xff1a; #!/bin/bashexport TEMP1尝试执行&#xff0c;可以发现&#xff1a; 以 sh 方式执行的时候&#xff0c;无法设置环境变…

如何利用智能家居打造一个“会呼吸的家”?一体化电动窗帘

如何利用智能家居打造一个“会呼吸的家”&#xff1f;一体化电动窗帘 史新华 隐藏式一体化智能电动窗帘与市面上其他窗帘不同的是&#xff0c;电机内置于轨道之中&#xff0c;一体化&#xff0c;美观、安静、滑动顺畅。 每次都会自动打开和关闭&#xff0c;相当漂亮。 众多家庭…

javaWeb项目-ssm+vue在线购物系统功能介绍

本项目源码&#xff1a;java-ssmvue在线购物系统的设计与实现源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;sprin…