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

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

操作流程

  1. 先将文件上传到 /tmp

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

    • 例如:通过 scpftp 或串口工具将文件传到开发板的 /tmp 目录,传输速度会显著提升。
  2. 传输完成后,将文件从 /tmp 拷贝到目标目录

    待文件完整上传到 /tmp 后,再用 cpmv 命令将其移动到最终存储位置(如 /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或自定义脚本来实现在重启时清空。

相关推荐
会编程的小孩2 小时前
stm32继电器使用方法
stm32·单片机·嵌入式硬件
玉~你还好吗7 小时前
【嵌入式电机控制#16】电流环(三):过采样提高采集精度&看门狗监测总线电压
单片机·嵌入式硬件
网易独家音乐人Mike Zhou10 小时前
【Linux应用】在PC的Linux环境下通过chroot运行ARM虚拟机镜像img文件(需要依赖qemu-aarch64、不需要重新安装iso)
linux·c语言·stm32·mcu·物联网·嵌入式·iot
GC_June0710 小时前
STM32 + 移远EC800 4G通信模块数传
arm开发·stm32·嵌入式硬件
通信射频老兵11 小时前
如何优化transceiver芯片的供电
经验分享·单片机·嵌入式硬件·5g·信号处理·射频工程
小嵌同学11 小时前
Linux 内存管理(2):了解内存回收机制
linux·运维·arm开发·驱动开发·嵌入式
酷飞飞11 小时前
模电基础-电阻和功率
单片机·嵌入式硬件
如愿小李16 小时前
STM32之L298N电机驱动模块
stm32·单片机·嵌入式硬件
CC呢18 小时前
基于单片机宠物喂食器/智能宠物窝/智能饲养
单片机·嵌入式硬件·物联网·宠物喂食