如何通过可移动设备(SD卡)实现系统目录的文件存储重定向
如何通过可移动设备(SD卡)实现系统目录的文件存储重定向
兄弟,你想的方向完全没错——用符号链接就能完美实现这个需求,而且只要按步骤来,绝对不会搞崩你的系统。我自己在Ubuntu 22.04和其他Linux发行版上都这么操作过,下面给你一步步拆解,逻辑对所有类Unix系统通用:
第一步:先把SD卡稳定挂载到系统(关键!)
首先得确认SD卡的设备路径,打开终端输入lsblk,你会看到类似/dev/mmcblk0p1的设备名(就是你的SD卡分区)。- 创建一个固定的挂载点:
sudo mkdir /mnt/sdcard - 临时挂载SD卡:
sudo mount /dev/mmcblk0p1 /mnt/sdcard - 设置开机自动挂载(避免重启后失效):
- 先查SD卡分区的UUID:
blkid /dev/mmcblk0p1,复制输出里的UUID字段(比如UUID=XXXX-XXXX) - 编辑fstab文件:
sudo nano /etc/fstab,在末尾添加一行:
注意:如果你的SD卡用的是FAT32格式,把UUID=XXXX-XXXX /mnt/sdcard ext4 defaults 0 2ext4改成vfat;写完按Ctrl+O保存,Ctrl+X退出。 - 验证挂载是否正常:
sudo mount -a,如果没报错就说明没问题。
- 先查SD卡分区的UUID:
- 创建一个固定的挂载点:
第二步:迁移原目录内容并创建符号链接
这里要注意:对于正在被系统使用的目录(比如/var/log),最好先停止相关服务,避免文件读写冲突:- 处理
/var/log:- 停止日志服务:
sudo systemctl stop rsyslog - 把原日志目录的内容移到SD卡:
sudo mv /var/log/* /mnt/sdcard/log(如果SD卡还没建log目录,先sudo mkdir /mnt/sdcard/log) - 删除空的原目录:
sudo rm -rf /var/log - 创建符号链接:
sudo ln -s /mnt/sdcard/log /var/log - 重启日志服务:
sudo systemctl start rsyslog
- 停止日志服务:
- 处理
/var/db:- 同理,先停止可能用到这个目录的服务(比如数据库服务,具体看你系统里的程序),然后:
sudo mkdir /mnt/sdcard/dbs sudo mv /var/db/* /mnt/sdcard/dbs sudo rm -rf /var/db sudo ln -s /mnt/sdcard/dbs /var/db
- 同理,先停止可能用到这个目录的服务(比如数据库服务,具体看你系统里的程序),然后:
- 处理
/home/desktop:- 这个是用户目录,直接操作就行:
sudo mkdir /mnt/sdcard/desktop sudo mv /home/desktop/* /mnt/sdcard/desktop sudo rm -rf /home/desktop sudo ln -s /mnt/sdcard/desktop /home/desktop - 最后修复权限(确保你能正常访问):
sudo chown -R $USER:$USER /mnt/sdcard/desktop
- 这个是用户目录,直接操作就行:
- 处理
第三步:验证效果
重启系统后,打开终端输入df -h确认SD卡已经自动挂载;然后在/var/log里新建一个测试文件:touch /var/log/test.log,再去SD卡的log目录里看看,要是能看到这个文件,就说明重定向成功了!
一些要注意的坑:
- 尽量用高速SD卡(Class10以上),不然像
/var/log这种频繁写入的目录会拖慢系统; - SD卡有写入寿命,频繁读写的目录(比如日志)长期用SD卡存可能会缩短卡的寿命,这点要心里有数;
- 绝对不要在SD卡挂载状态下直接拔卡!要先卸载:
sudo umount /mnt/sdcard,不然会导致文件损坏。
备注:内容来源于stack exchange,提问作者Luis Fernando Landaeta Vargas




