当前位置: 首页 > 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.lryc.cn/news/593654.html

相关文章:

  • 【Linux】重生之从零开始学习运维之Nginx之server小实践
  • 定时器中BDTR死区时间和刹车功能配置
  • AWS Partner: Accreditation (Technical)
  • Qt Graphs 模块拟取代 charts 和 data visualization还有很长的路要走
  • SPARKLE:深度剖析强化学习如何提升语言模型推理能力
  • stm32继电器使用方法
  • 【RK3576】【Android14】UART开发调试
  • 从零开始学Tailwind CSS : 颜色配置原理与实践
  • EasyExcel使用
  • 创建套接字并bind的详细过程
  • 深度学习-线性神经网络
  • 深度学习Depth Anything V2神经网络实现单目深度估计系统源码
  • 短视频矩阵的未来前景:机遇无限,挑战并存
  • Maven常用知识总结
  • 代码随想录算法训练营第二十天|回溯part02
  • 电阻耐压参数学习总结
  • 动态规划——数位DP经典题目
  • 【深度学习-Day 38】破解深度网络退化之谜:残差网络(ResNet)核心原理与实战
  • 从0到1搭建一个Rag引擎(ollama+Qwen3)
  • 实现el-select下拉框,下拉时加载数据
  • Docker容器原理和启动策略
  • EP01:【Python 第一弹】基础入门知识
  • aosp15实现SurfaceFlinger的dump输出带上Layer详细信息踩坑笔记
  • 生成式人工智能实战 | 自回归模型详解与实现
  • Linux中添加重定向(Redirection)功能到minishell
  • QGIS和QGC软件的区别
  • LVS部署模式NAT集群案例
  • buildroot运行qemu进行pcie设备模拟,开发驱动的方式
  • 【学习记录】智能客服小桃(进度更新ing)
  • 测试计划(抽奖系统)