这是个 feature 还是 bug ?
现在各大网盘,基本都会做一个定时的回收站,30 天以内可恢复,过期彻底删除。
哪种方式更合理些?

我就记得是有的,
网盘得回收站也不是文件系统提供得把。。。有了解 NTFS 得大神嘛。。。windows 下面得回收站是文件系统层做的还是应用侧完成得。

github.com/andreafrancia/trash-cli

回收站是桌面环境提供的功能,跟文件系统无关,NTFS 也没有回收站功能

回收站关文件系统什么事?不都是应用层的吗?

这种回收站你自己实现起来也很容易。把 rm alias 到 trash 上。然后开个定时任务定期清理就好了。

alias: rm $1 -> mv $1 ~/.trash/

这功能过于上层,根本不需要系统来提供啊你建个目录,写个 .timer 文件让 systemd 30 天清一次,再在 .bashrc 里写个 function ,譬如 junk() {mv "$1" "/trash/path/$1.trash"}就搞定了

不是,我寻思 Windows 命令行里也没有回收站这功能啊?为什么觉得 Linux 命令行就要有回收站了回收站不过是桌面提供的功能罢了

Linux 你想要还不简单啊,rm 命令替换一下不就行了。

  1. 没有 “Linux 文件系统” 这种文件系统,有 ext3 ext4 xfs zfs btrfs2. windows mac 的回收站功能也不是文件系统支持的3. linux 的桌面环境的文件管理器,比如 KDE 的 Dolphin 是带回收站功能的

过去 Windows 有时候会告诉你,要删除的文件太大放不进回收站,是否直接删除,我就怀疑它是不是在硬盘哪个角落偷偷藏了一部分空间

比 mv /trash 复杂一点,C:\ 删除一个文件会:- 在 C:$Recycle.Bin\S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-1XXX\ ( SID )基于文件哈希值创建一个 $RXXXXXX.<file_ext> 的硬链接(数据文件);- 创建名为 $IXXXXXX.<file_ext> 的文件(信息文件),存储该文件的元数据(删除日期、原始位置)- 删除该文件还原逆向操作系统实现的。

linux 下一就是一,二就是二,符合计算机的操作直觉。回收站算是弥补人类缺陷的一种方式。

这个问题就不属实。Linux 系统有很多支持 CoW 的文件系统,btrfs 、zfs 、bcachefs 等,随时 snapshot 恢复。

硬链接指向那呢

不用怀疑, 就是
这个还得看桌面环境,回收站都是应用侧功能

cat /usr/lib/tmpfiles.d/tmp.conf>>================================q /tmp 1777 root root 10dq /var/tmp 1777 root root 30d>>================================redhat 系的/tmp 目录就会删除超过 10 天的文件,这个时间你可以改

别把你 windows 思维带到 linux

现代文件系统有个东西叫做快照

别来坑人行不跨分区删个大文件卡十几秒回收站都要建立在当前分区的,这玩意不是 gui 不好做

windows 上说白了也就是个 mv ,Linux 上把 rm 改成 mv 也是一样的

$ which rmrm: aliased to trash

你可能需要这个install trash-clialias rm=trash-put回收站也不是什么特别的功能,属于应用层了,不怎么需要操作系统特别支持

window 每个分区根目录都有一个隐藏文件夹,所谓的回收站就是把非 Shift+Del 删除的文件移动到回收站文件夹中。

想起来 NTFS 里删除正在被打开文件也是“移动”到$Extend$Deleted\<FILEID>

看不懂配置么?你要当前分区,加一句配置就行了,很麻烦么?

#12 挂载点$Recycle.Bin\SID

#16 指向原文件啊

你怎么做到删任意文件直接进当前分区回收站呢 ,把 rm 改脚本你知道可能导致多少问题么

桌面版有至于命令行,我不希望有,懒着清空回收站。如果有要求,重置 rm mv 呗。

linux 需要挂载的,如果不挂载,删除就是灭有了。。

你看看楼主需求:一个定时的回收站,30 天以内可恢复,过期彻底删除这个用 tmpfiles.d 完全可以实现,rm 文件?干嘛要 rm ?回收站也只是一个 mv 啊!!假设 /dev/sdb2 挂载到 /data2/usr/lib/tmpfiles.d/tmp.conf 加上:q /data2/tmp 1777 root root 30d你要删一个文件,直接执行 mv file /data2/tmp/ ,过了 30 天会自动删除事实上,在服务器上,为了安全都是禁用 rm 命令的,大家删文件,都是直接 mv 到 /tmp 下等自动删除

请教一下,/tmp 下的东西,是 OS 在系统关机的时候删,还是下次启动的时候删?如果要跨 boot ,是不是得放到 /var/tmp 下?

系统运行的时候删,本质就是一个定时任务,/tmp 是默认的,你可以自定义在哪个目录,但注意,这个是 Redhat 系的 linux 发行版才默认有的,Debian 系的我记得好像没有,你需要自己装

你自己创建一个回收站文件夹不就行了