如何自动将垃圾从一个磁盘移动到另一个磁盘?

如何自动将垃圾从一个磁盘移动到另一个磁盘?

我有两个磁盘,磁盘 1 和磁盘 2

磁盘 1 是安装在/home

磁盘 2 较小,作为/home( /home/Username/blah) 的子文件夹安装,并且活动较多

目前,当我从磁盘 2 中删除文件时,它会将其存储在磁盘 2 内名为.Trash-1004( /home/Username/blah/.Trash-1004) 的文件夹中。这会相对较快地填满磁盘。

我想让已删除的文件进入正常的垃圾文件夹/home/Username/.local/share/Trash

我有什么选择?我可以编写一个自动移动文件的脚本吗?或者有没有更自然的方法来实现这一点?

任何帮助将不胜感激 :)

答案1

当您“删除”文件时,它会被复制到垃圾目录中。这一点很明显,但可能不太明显的是,这是一个非常快速的操作,因为文件保留在同一磁盘和同一分区上。

如果删除文件并将其移动到另一个磁盘,这将增加删除该文件所需的时间。

如果删除的文件占用了太多磁盘空间,您可以直接删除这些文件。Shift删除文件时按住 键即可删除它们,跳过废纸篓。您还可以使用 等工具定期清理autotrash废纸篓cron

我不想阻止你探索并让你的系统正是你想要的,但是当您删除文件时,将文件移动到不同的磁盘时可能会遇到奇怪的问题,我认为通过正确清理垃圾箱可以最好地解决您的问题。

答案2

我编写了一个简单的脚本来执行此操作。

它回复inotify,使用安装sudo apt install inotify-tools

trash_path="/home/Kenivia/gdrive/.Trash-1004/"
move_path="/home/Kenivia/.local/share/Trash"
inotifywait -m "$trash_path"files -e create -e moved_to |
    while read path action file; do
        mv "$trash_path"files/"$file" $move_path'/files'
    mv "$trash_path"info/"$file"'.trashinfo' $move_path'/info'
    done

相应地改变你的路径。

要在启动时静默运行此程序,请将上述代码保存在 shell 脚本中,并将此命令添加到启动应用程序中:

nohup bash /PATH/TO/SHELL/SCRIPT/Move_trash.sh >/dev/null 2>&1 &

我对 shell 脚本还很陌生,如果有任何错误请指出,但它似乎在我的计算机上运行良好。就性能影响而言,即使在移动文件时,它也始终使用 0% 的 CPU,这真是一个惊喜。

相关内容