在挂载外置硬盘后,银河麒麟会默认将硬盘挂载至/media/username/下面,看起来很方便,但是使用起来发现有一个小问题,就是你所挂载的硬盘中的数据删除后就真的没了,而不是先被放入到回收站中,这个问题看起来不重要,毕竟你都准备删除它了,一般情况下是不会再去将它找回来的,但是不怕一万只怕万一,总要有后悔药才行。
因此,如何将挂载的硬盘数据删除后不是直接被彻底删除,而是先放入回收站?
这个问题,利用百度,AI大模型,咨询了很多,也尝试了很多方法,但是都以失败告终,最终,万万没想到,我还是把问题解决了,一个灵光乍现的想法。
一、思路分析
在linux中的回收站功能,实际上是依托一个叫做.Trash-1000的隐藏文件,删除到回收站,就是移动到这个隐藏文件夹中,这个文件夹的结构如下
bash
.Trash-1000/
├──expunged/
├──files/ #删除的文件会放到这个文件夹下
├──info/
因此可以简单的考虑到,是不是在硬盘的根目录下创建这样一个文件夹目录就可以了。
二、处置过程
问题当然没有这么简单就解决了,发现创建了这些的文件夹目录后,删除到回收站的功能并没有实现。
就在一筹莫展之际,突然想到,尝试了将硬盘挂载到/mnt或者/media下,即便在硬盘第一个目录下创建了.Trash-1000文件夹及子目录,也是无法删除到回收站的,但是在/data文件夹下的内容都是可以正常进行删除至回收站的。
在银河麒麟中,可以看到/data文件夹是这样一个目录
bash
data/
├──......
├──home/
├──root/
├──.Trash-1000/
突然意识到,其实银河麒麟的文件系统,其实他的回收站功能是依托/data文件夹下的.Trash-1000来实现,包括home目录下的删除至回收站功能,也是因此实现的。因此一个念头就突然产生,我是不是可以将外置硬盘也挂载到/data文件夹下?
用过银河麒麟的同志都知道,麒麟系统在根目录下设置了一个data文件夹,我理解是为了区分开系统盘和数据盘的(通常都在一个硬盘下,这里所述的系统盘和数据盘,可以简单的理解成windows下的C盘和别的盘)。
三、解决方法
1.格式化硬盘
这一步非必须,看个人需求。格式化的命令如下。
bash
sudo mkfs.ext4 /dev/sdb1
2.查看硬盘UUID值
利用下列命令查看UUID值
bash
sudo lsblk -f
假设获取到的UUID值为UUID_value1
3.创建挂载的文件夹
在data文件夹下创建预期挂载的文件夹,我创建的文件夹名为mydisk,并设置改文件夹的权限为755,归属人为本机用户,如本机用户为user1。
bash
sudo mkdir -p /data/mydisk
sudo chown -R user1:user1 /data/mydisk
sudo chmod -R 755 /data/mydisk
4.修改fstab文件
利用pluma命令修改
bash
sudo pluma /etc/fstab
增加一行内容
bash
UUID=UUID_value1 /data/mydisk ext4 defaults 0 2
5.挂载硬盘
修改完fstab后,直接运行如下命令即可挂载。
bash
sudo mount -a
6.创建.Trash-1000目录
在挂载成功后,在mydisk文件夹下创建.Trash-1000目录。
bash
sudo mkdir -p /data/mydisk/.Trash-1000/{expunged,files,info}
sudo chmod -R 700 /media/mydisk/.Trash-1000
四、写在最后
通过AI等工具试了很多方法,最后还是靠基于经验和实践分析的灵光乍现才解决了问题,突然就觉得其实AI真的不是万能的,人类仍旧有着无可替代性,想起了那句经典的广告词"人类失去联想,世界将会怎样?"。