在开发板tmp目录下传输文件很快的原因和注意事项:重启开发板会清空tmp文件夹,记得复制文件到其他地方命令如下(cp 文件所在路径 文件要复制到的路径—)
这种思路完全可行,尤其适合在开发板上传输较大文件时提升效率,具体操作逻辑如下:
操作流程
先将文件上传到
/tmp
利用/tmp
基于内存的高速特性,快速完成文件传输(避免直接传到物理存储设备的低速瓶颈)。- 例如:通过
scp
、ftp
或串口工具将文件传到开发板的/tmp
目录,传输速度会显著提升。
- 例如:通过
传输完成后,将文件从
/tmp
拷贝到目标目录
待文件完整上传到/tmp
后,再用cp
或mv
命令将其移动到最终存储位置(如/home
、/mnt
等挂载物理存储的目录)。- 例如:
cp /tmp/your_file /home/user/
- 由于此时是内存到物理存储的本地拷贝,速度也会比直接远程传输到物理目录更快。
- 例如:
优势
- 减少传输耗时:远程传输阶段利用内存速度,避免物理存储的 I/O 延迟,尤其适合网络不稳定或文件较大的场景。
- 降低传输失败风险:若传输过程中断,只需重新传
/tmp
即可,无需担心物理存储上的不完整文件残留。
注意事项
文件大小限制:
/tmp
的空间受限于开发板内存(tmpfs 大小通常为内存的一半),若文件大小超过剩余内存,可能导致传输失败或系统内存不足(OOM)。- 建议先通过
df -h /tmp
查看/tmp
的可用空间,确保文件能容纳。
- 建议先通过
及时转移文件:
传输完成后尽快将文件从/tmp
移走,避免占用过多内存影响系统运行;且切勿在未转移前重启开发板(否则/tmp
内容会丢失)。权限问题:
确保/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
或自定义脚本来实现在重启时清空。