这是个 feature 还是 bug ? 现在各大网盘,基本都会做一个定时的回收站,30 天以内可恢复,过期彻底删除。 哪种方式更合理些?
![]() | 1 AoEiuV020JP 2024-05-27 09:56:42 +08:00 |
2 ghostwwg 2024-05-27 09:57:40 +08:00 网盘得回收站也不是文件系统提供得把。。。有了解 NTFS 得大神嘛。。。windows 下面得回收站是文件系统层做的还是应用侧完成得。 |
![]() | 3 b821025551b 2024-05-27 09:58:11 +08:00 ![]() |
4 vituralfuture 2024-05-27 10:02:48 +08:00 via Android ![]() 回收站是桌面环境提供的功能,跟文件系统无关,NTFS 也没有回收站功能 |
![]() | 5 yolee599 2024-05-27 10:02:50 +08:00 回收站关文件系统什么事?不都是应用层的吗? |
![]() | 6 InkStone 2024-05-27 10:08:10 +08:00 这种回收站你自己实现起来也很容易。 把 rm alias 到 trash 上。然后开个定时任务定期清理就好了。 |
![]() | 7 inhzus 2024-05-27 10:08:29 +08:00 ![]() alias: rm $1 -> mv $1 ~/.trash/ |
8 NessajCN 2024-05-27 10:08:40 +08:00 ![]() 这功能过于上层,根本不需要系统来提供啊 你建个目录,写个 .timer 文件让 systemd 30 天清一次,再在 .bashrc 里写个 function ,譬如 junk() { mv "$1" "/trash/path/$1.trash" } 就搞定了 |
![]() | 9 BeautifulSoap 2024-05-27 10:11:45 +08:00 via Android ![]() 不是,我寻思 Windows 命令行里也没有回收站这功能啊? 为什么觉得 Linux 命令行就要有回收站了 回收站不过是桌面提供的功能罢了 |
![]() | 10 xiangbohua 2024-05-27 10:16:55 +08:00 Linux 你想要还不简单啊,rm 命令替换一下不就行了。 |
11 littlewing 2024-05-27 10:27:35 +08:00 1. 没有 “Linux 文件系统” 这种文件系统,有 ext3 ext4 xfs zfs btrfs 2. windows mac 的回收站功能也不是文件系统支持的 3. linux 的桌面环境的文件管理器,比如 KDE 的 Dolphin 是带回收站功能的 |
12 ShinichiYao 2024-05-27 10:36:49 +08:00 过去 Windows 有时候会告诉你,要删除的文件太大放不进回收站,是否直接删除,我就怀疑它是不是在硬盘哪个角落偷偷藏了一部分空间 |
![]() | 13 mirtle 2024-05-27 10:39:31 +08:00 ![]() 比 mv /trash 复杂一点,C:\ 删除一个文件会: - 在 C:\$Recycle.Bin\S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-1XXX\ ( SID )基于文件哈希值创建一个 $RXXXXXX.<file_ext> 的硬链接(数据文件); - 创建名为 $IXXXXXX.<file_ext> 的文件(信文件),存储该文件的元数据(删除日期、原始位置) - 删除该文件 还原逆向操作 系统实现的。 |
![]() | 14 cwcc 2024-05-27 10:43:02 +08:00 linux 下一就是一,二就是二,符合计算机的操作直觉。回收站算是弥补人类缺陷的一种方式。 |
15 enihcam 2024-05-27 10:45:34 +08:00 这个问题就不属实。Linux 系统有很多支持 CoW 的文件系统,btrfs 、zfs 、bcachefs 等,随时 snapshot 恢复。 |
![]() | 16 proxytoworld 2024-05-27 10:50:20 +08:00 @mirtle 硬链接指向那呢 |
![]() | 17 FengMubai 2024-05-27 10:53:49 +08:00 @ShinichiYao 不用怀疑, 就是 ![]() |
![]() | 18 rlds 2024-05-27 11:11:06 +08:00 这个还得看桌面环境,回收站都是应用侧功能 |
19 dmanbu 2024-05-27 11:14:03 +08:00 cat /usr/lib/tmpfiles.d/tmp.conf >>================================ q /tmp 1777 root root 10d q /var/tmp 1777 root root 30d >>================================ redhat 系的/tmp 目录就会删除超过 10 天的文件,这个时间你可以改 |
![]() | 20 highFreqSurfer 2024-05-27 11:24:02 +08:00 别把你 windows 思维带到 linux |
![]() | 21 LokiSharp 2024-05-27 11:27:44 +08:00 现代文件系统有个东西叫做快照 |
22 lolizeppelin 2024-05-27 11:36:06 +08:00 |
![]() | 23 LuJason 2024-05-27 11:38:22 +08:00 windows 上说白了也就是个 mv ,Linux 上把 rm 改成 mv 也是一样的 |
![]() | 24 my3157 2024-05-27 12:04:51 +08:00 $ which rm rm: aliased to trash |
![]() | 25 lecia 2024-05-27 13:03:28 +08:00 via iPhone 你可能需要这个 install trash-cli alias rm=trash-put 回收站也不是什么特别的功能,属于应用层了,不怎么需要操作系统特别支持 |
![]() | 26 geekvcn 2024-05-27 13:25:13 +08:00 window 每个分区根目录都有一个隐藏文件夹,所谓的回收站就是把非 Shift+Del 删除的文件移动到回收站文件夹中。 |
![]() | 27 codehz 2024-05-27 13:26:41 +08:00 @mirtle 想起来 NTFS 里删除正在被打开文件也是“移动”到\$Extend\$Deleted\<FILEID><RANDOM> 里 |
28 dmanbu 2024-05-27 13:59:12 +08:00 @lolizeppelin 看不懂配置么?你要当前分区,加一句配置就行了,很麻烦么? |
29 kenvix 2024-05-27 14:05:13 +08:00 @ShinichiYao #12 挂载点\$Recycle.Bin\SID |
30 kenvix 2024-05-27 14:06:17 +08:00 @proxytoworld #16 指向原文件啊 |
31 lolizeppelin 2024-05-27 14:13:44 +08:00 @dmanbu 你怎么做到删任意文件直接进当前分区回收站呢 ,把 rm 改脚本你知道可能导致多少问题么 |
![]() | 32 lyxxxh2 2024-05-27 14:35:39 +08:00 桌面版有 至于命令行,我不希望有,懒着清空回收站。 如果有要求,重置 rm mv 呗。 |
33 ronyin 2024-05-27 16:09:37 +08:00 linux 需要挂载的,如果不挂载,删除就是灭有了。。 |
34 dmanbu 2024-05-27 16:13:12 +08:00 ![]() @lolizeppelin 你看看楼主需求:一个定时的回收站,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 下等自动删除 |
![]() | 35 Unlikely OP @dmanbu 请教一下,/tmp 下的东西,是 OS 在系统关机的时候删,还是下次启动的时候删?如果要跨 boot ,是不是得放到 /var/tmp 下? |
37 Ericcccccccc 2024-05-27 17:15:37 +08:00 你自己创建一个回收站文件夹不就行了 |
38 dayeye2006199 2024-05-28 08:11:45 +08:00 alias 一下 rm |
![]() | 40 cnt2ex 2024-05-30 00:18:19 +08:00 gio 就有回收站的功能 gio trash --list gio trash --restore gio trash --empty 这个回收站是 glib2 通用的,gnome 桌面环境就提供设置 30 天自动清除垃圾。 |