想要指定文件夹文件被删除后自动移动到备份文件夹的Windows软件

背景:群晖的其他功能都还好,有替代,但是共享文件时可以自动备份删除掉的文件这就很好,但是Windows平台找不到类似的软件能达到此功能,请问各位大佬有推荐的吗?
1.考虑到全盘文件太多没必要,希望可以只针对一些特定的文件夹。
2.不管是用户从共享文件夹还是本地删除这些个文件夹内的文件,将删除自动劫持改为“移动”到备份文件夹。
3.保留相对路径。
4.如果可能的话,备份文件夹有同名文件的时候,文件名带上文件时间。

群晖的逻辑:
\qunhui\abc\bcd\efg\aaa.txt
文件被删除后,劫持删除动作为移动文件到备份文件夹相对路径下:
\qunhui\abc#recycle\bcd\efg\aaa.txt
如果备份路径已经有同名文件,就加个鸡腿,哦不是,是加个文件时间。
\qunhui\abc#recycle\bcd\efg\aaa.txt-202205261449

微力同步

有回收站功能,默认不开启,被删除的文件(夹)会出现在同步方的电脑的回收站中,文件夹层级相同。

回收站逻辑:

A 电脑同步文件 a,B 电脑添加了 A 的同步文件 a。

A rm a/b/c.txt,那么 B 也会对应删除文件,但是 B 电脑的回收站中,会出现:a/.versync/Archive/a/b/c.txt

在 B 电脑上同步 A 电脑的文件夹 Nustore,就要在 B 电脑上设置回收站。

image

image

或许用 alias 也能解决:

alias del='move(){mkdir recovery; mv --verbose "$1" --backup=numbered recovery};move'

然后用 del 去删除文件,被删除的文件会自动创建并移动到 recovery 目录下。

1 Like

目测这个是Linux语句啊,我是Windows平台,理论上应该是要hook一切删除问卷的api就可以做到了……但是不知道有没有这样的工具……

1 Like

在Windows上安装,只有这台电脑,没有同步其他电脑,删除问卷的时候可以自动到回收站么 :stuck_out_tongue_closed_eyes:

1 Like

微力同步不能添加两份本地目录,rclone 的备份功能或许可以。

rclone sync -i /path/to/local remote:current --backup-dir remote:old

will sync /path/to/local to remote:current, but for any files which would have been updated or deleted will be stored in remote:old.

对 a 文件夹做一次拷贝,cp a a.bak

同样使用 alias,将 del 命令定义为先删除目标文件,再使用 rclone 的同步并备份功能同步到 a.bak 下。

# 逻辑大概是:
alias del='move(){ rm "$1"; \
rclone sync -i /path/to/a remote:current --backup-dir remote:a.bak}; \
move'

以上只是个想法,未测试。

在 windows 下使用类 linux 的 shell 终端去管理文件,我用的是 cygwin shell。

1 Like

自从装了这个软件,我的电脑旧没启用过回收站。

如果只是为了避免误删而不是数据丢失,可以考虑用硬链接,Windows 下用自带的 MKLINK /H 命令。

硬链接可以当作是“分身术”,比如为文件A 创建了 硬链接 A1、A2、A3,这四个“文件”实际上仅占用了一个文件的硬盘空间,同时文件本体不再固定,四个都是分身,也都是本体,无论删除A、A1、A2、A3中的任意1~3个,只要还存在一个分身,文件就没有被杀掉。

1 Like