dbz*_*zix 10 mount trash bind-mount
我正在尝试为两个 Linux 安装设置共享主目录,因此我正在使用绑定安装。我的用户被命名dbz
,他的主目录是/home/dbz
. 我还有共享目录/home/shared
,用于存储我的共享文件(该文件夹也归用户所有dbz
)。
我使用绑定将此共享目录中的另一个目录挂载到我的主目录中:
mount -B /home/shared/work /home/dbz/work
Run Code Online (Sandbox Code Playgroud)
此解决方案解决了我的需求,我遇到但不知道如何解决的唯一问题是 - 当我尝试从挂载目录中删除文件或目录时,我无法将其删除到垃圾箱,只能永久删除。例如:
/home/shared/work/test.txt
:好的,因为从文件test.txt
所在的目录中删除;/home/dbz/work/test.txt
:不能,因为...顺便说一下,因为什么?绑定挂载对文件删除有一些限制吗?这是一个linux内核问题。它不是在查看源文件系统和目标文件系统的真正超级块:
17926 rename("d1/foo", "d2/foo") = -1 EXDEV (Invalid cross-device link)
Run Code Online (Sandbox Code Playgroud)
看起来问题出在do_rename()
( fs/namei.c
) 中:
error = -EXDEV;
if (oldnd.mnt != newnd.mnt)
goto exit2;
Run Code Online (Sandbox Code Playgroud)
*叹*
为了创建垃圾目录,您需要能够.Trash_<uid>
在挂载点创建(至少在 Ubuntu 上从 nautilus 删除时,您的发行版可能会使用另一个目录)。如果由于父目录不可写而无法创建该目录dbz
,则您将无法备份。
不必让父目录可写,只需以.Trash_<uid>
root身份创建,然后将chown
其创建为dbz
.
我发现使用该gvfs-trash
实用程序测试有关垃圾文件创建的内容更容易一些,如果文件不能被删除,它实际上会给出一个错误。使用类似的东西:
touch /home/dbz/work/test.txt
strace gvfs-trash /home/dbz/work/test.txt 2>&1 | grep .Trash | grep mkdir
Run Code Online (Sandbox Code Playgroud)
查看它实际尝试创建的目录。
归档时间: |
|
查看次数: |
3455 次 |
最近记录: |