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