You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过可移动设备(SD卡)实现系统目录的文件存储重定向

如何通过可移动设备(SD卡)实现系统目录的文件存储重定向

兄弟,你想的方向完全没错——用符号链接就能完美实现这个需求,而且只要按步骤来,绝对不会搞崩你的系统。我自己在Ubuntu 22.04和其他Linux发行版上都这么操作过,下面给你一步步拆解,逻辑对所有类Unix系统通用:

  • 第一步:先把SD卡稳定挂载到系统(关键!)
    首先得确认SD卡的设备路径,打开终端输入lsblk,你会看到类似/dev/mmcblk0p1的设备名(就是你的SD卡分区)。

    1. 创建一个固定的挂载点:sudo mkdir /mnt/sdcard
    2. 临时挂载SD卡:sudo mount /dev/mmcblk0p1 /mnt/sdcard
    3. 设置开机自动挂载(避免重启后失效):
      • 先查SD卡分区的UUID:blkid /dev/mmcblk0p1,复制输出里的UUID字段(比如UUID=XXXX-XXXX
      • 编辑fstab文件:sudo nano /etc/fstab,在末尾添加一行:
        UUID=XXXX-XXXX /mnt/sdcard ext4 defaults 0 2
        
        注意:如果你的SD卡用的是FAT32格式,把ext4改成vfat;写完按Ctrl+O保存,Ctrl+X退出。
      • 验证挂载是否正常:sudo mount -a,如果没报错就说明没问题。
  • 第二步:迁移原目录内容并创建符号链接
    这里要注意:对于正在被系统使用的目录(比如/var/log),最好先停止相关服务,避免文件读写冲突:

    1. 处理/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
    2. 处理/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
        
    3. 处理/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

火山引擎 最新活动