![tmpfs-写入文件时自动创建完整路径](https://linux22.com/image/635985/tmpfs-%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6%E6%97%B6%E8%87%AA%E5%8A%A8%E5%88%9B%E5%BB%BA%E5%AE%8C%E6%95%B4%E8%B7%AF%E5%BE%84.png)
我已经安装临时文件。例如
/tmspfs/cache
正如我们所料,重启后服务器内存为空,挂载的所有内容都消失了。没问题。但我的系统中有一些完整路径,例如 /tmpfs/cache/user1/file - 错误是 /tmpfs/cache/user1/ 不存在。
我无法向软件添加一些检查和 rmdir。
所以问题是 - 这里是否有某种方法可以在创建文件之前自动创建完整路径?
谢谢。
答案1
可能与 LD_PRELOAD 和一些库有关,具体取决于软件。最简单的方法可能是在 rc.local 中放入一些内容,这些内容将在启动过程的最后一步创建目录。
如果您想确保目录持续存在,您可以运行一个 cron 作业来创建目录(可能使用 mkdir -p)。
答案2
如果您使用/etc/fstab
来定义此挂载,那么您只需添加mkdir /tmpfs/cache/user1
到/etc/rc.d/rc.local
,这样它将在启动时被创建。
答案3
如果您需要在重启后保持结构,则可以通过在 中执行一项任务来root
实现crontab
:
*/5 * * * * /usr/bin/ionice -c3 -n7 /bin/nice -n 19 \
/usr/bin/rsync -ah --stats --delete /path/to/persistent/backup /tmpfs/
然后/etc/rc.local
确保结构在启动时恢复到位:
ionice -c3 -n7 nice -n 19 rsync -ahv --stats --delete /path/to/persistent/backup \
/tmpfs/ 1>/dev/null
当然,您需要调整命令rsync
来满足您的特定需求。