当前位置: 首页 > news >正文

在开发板tmp目录下传输文件很快的原因和注意事项:重启开发板会清空tmp文件夹,记得复制文件到其他地方命令如下(cp 文件所在路径 文件要复制到的路径—)

这种思路完全可行,尤其适合在开发板上传输较大文件时提升效率,具体操作逻辑如下:

操作流程

  1. 先将文件上传到 /tmp
    利用 /tmp 基于内存的高速特性,快速完成文件传输(避免直接传到物理存储设备的低速瓶颈)。

    • 例如:通过 scpftp 或串口工具将文件传到开发板的 /tmp 目录,传输速度会显著提升。
  2. 传输完成后,将文件从 /tmp 拷贝到目标目录
    待文件完整上传到 /tmp 后,再用 cp 或 mv 命令将其移动到最终存储位置(如 /home/mnt 等挂载物理存储的目录)。

    • 例如:cp /tmp/your_file /home/user/
    • 由于此时是内存到物理存储的本地拷贝,速度也会比直接远程传输到物理目录更快。

优势

  • 减少传输耗时:远程传输阶段利用内存速度,避免物理存储的 I/O 延迟,尤其适合网络不稳定或文件较大的场景。
  • 降低传输失败风险:若传输过程中断,只需重新传 /tmp 即可,无需担心物理存储上的不完整文件残留。

注意事项

  1. 文件大小限制
    /tmp 的空间受限于开发板内存(tmpfs 大小通常为内存的一半),若文件大小超过剩余内存,可能导致传输失败或系统内存不足(OOM)。

    • 建议先通过 df -h /tmp 查看 /tmp 的可用空间,确保文件能容纳。
  2. 及时转移文件
    传输完成后尽快将文件从 /tmp 移走,避免占用过多内存影响系统运行;且切勿在未转移前重启开发板(否则 /tmp 内容会丢失)。

  3. 权限问题
    确保 /tmp 有写入权限(通常默认开放),且目标目录有足够权限接收文件(可通过 chmod 调整)。

示例(以 scp 传输为例)

# 1. 本地电脑通过 scp 将文件传到开发板的 /tmp
scp local_large_file root@开发板IP:/tmp/# 2. 登录开发板,确认文件已传输完成
ssh root@开发板IP
ls -l /tmp/local_large_file# 3. 将文件从 /tmp 拷贝到目标目录(如 /home)
cp /tmp/local_large_file /home/

这种方法是开发板上传输文件的常用技巧,既能利用高速临时存储,又能保证文件最终持久化,兼顾效率和可靠性。


在 Linux 系统中,/tmp 文件夹上传文件速度快,主要与它的存储特性文件系统类型密切相关,具体原因如下:

1. /tmp 通常使用内存文件系统(tmpfs)

大多数 Linux 系统(包括开发板的嵌入式 Linux)会将 /tmp 挂载为 tmpfs(临时文件系统)。

  • tmpfs 是一种基于内存的文件系统,数据直接存储在 RAM(内存)或 swap 分区中,而非物理磁盘(如 eMMC、SD 卡、硬盘)。
  • 内存的读写速度(通常以 GB/s 为单位)远高于物理存储设备(如 eMMC 约 100-300 MB/s,SD 卡更低),因此在 /tmp 中读写文件时,速度会显著更快。

2. 减少物理存储的 I/O 开销

物理存储设备(如开发板的 eMMC 或 SD 卡)存在机械延迟(如磁盘寻道,尽管闪存没有机械部件,但仍有擦写块管理等开销)和文件系统日志(如 ext4 的 journal)等机制,这些都会增加读写耗时。
而 /tmp 作为内存文件系统,无需与物理设备交互,也无需处理复杂的磁盘管理逻辑,因此 I/O 操作更高效。

3. 临时文件的设计定位

/tmp 的设计初衷就是用于存储临时数据(程序运行中的缓存、临时日志、短期文件等),这些数据通常不需要长期保存,且对读写速度有较高要求。
系统将其优化为内存存储,正是为了匹配这种 “短期、高速” 的使用场景。

注意事项

  • 由于 tmpfs 依赖内存,/tmp 的存储空间受限于系统内存大小,若文件过大可能导致内存不足。
  • 重启后 /tmp 内容会丢失(如前所述),因此不适合存储需要持久化的数据。

综上,/tmp 的高速特性源于其内存存储的本质,非常适合临时文件的快速读写场景。


在大多数情况下,重启开发板会把/tmp文件夹下面的东西清空。

/tmp是 Linux 系统中的临时文件夹,用于存储临时文件和临时数据。许多程序和系统进程会将临时数据存储在这里。如果/tmp挂载为tmpfs(内存文件系统),重启后其内容会丢失。对于基于 Systemd 的系统(如常见的 Ubuntu 16.04 + 等),默认情况下依赖systemd - tmpfiles - clean.timer定时触发清理,通常每天运行一次,但也可通过配置tmp.mount或自定义脚本来实现在重启时清空。

http://www.dtcms.com/a/288065.html

相关文章:

  • GitLab 社区版 10.8.4 安装、汉化与使用教程
  • GPU集群如何规划
  • 子串算法题
  • Web攻防-身份验证篇JWT令牌空密钥未签名密钥爆破JWKJWUKID算法替换CVE报告复盘
  • 在Vscode中使用Kimi K2模型:实践指南,三分钟生成个小游戏
  • TypeScript 中的「类」:从语法到实战的完整指南
  • 论C/C++的条件编译#if、#ifdef、#ifndef、#undef
  • Promise入门
  • 三级知识点汇总(详解)【c++】——2
  • 我用Cursor,1周上线了一个虚拟资料流量主小程序技术选型
  • Linux“一切皆文件“设计哲学 与 Linux文件抽象层:struct file与file_operations的架构解析
  • 【ChatOpenAI】常用方法详解
  • HOT100——动态规划篇Leetcode221. 最大正方形
  • C++ std::thread线程类 相关问题、函数总结
  • 单调队列深度解析(下)
  • 如何解决 ‘NoneType‘ object has no attribute ‘get‘问题
  • GA-BP遗传算法优化BP神经网络数据生成,采用SVM分类模型评估
  • LM317 芯片推荐电路中保护二极管工作原理
  • 教育科技内容平台的用户定位与产品方案:从需求到解决方案的精准匹配
  • prometheus UI 和node_exporter节点图形化Grafana
  • GaussDB 数据库架构师修炼(六) 集群工具管理-1
  • 农经权二轮延包—批量出图片
  • 了解.NET Core状态管理:优化技巧与常见问题解决方案
  • 第4章 数据的排序、筛选和分类汇总
  • 金融系统AIGC能力中心赋能实战指南
  • 告别 T+1!解密金融级实时数据平台的构建与实践
  • RK3568 Linux驱动学习——SDK安装编译
  • 浅谈Rust语言特性
  • [C/C++安全编程]_[中级]_[如何避免出现野指针]
  • MySQL 写入性能优化全攻略(附 GitHub 面试题项目链接)