从 ROOT 目录移动文件导致数据丢失

从 ROOT 目录移动文件导致数据丢失

搬家之前,我检查了目录,里面有所有的内容。然后我使用以下命令将其移动到 C 驱动器中的目录(我正在使用 WSL): sudo mv c_dir/ mnt/c/Users/L570/Documents/to_be_compiled/

当我cd进入时to_be_compiled,它确实在那里。但它是空的。

我在另一个问题上找到了这个命令: chown erebus /mnt/c/Users/L570/Documents/to_be_compiled/c_dir/ 但这也没有改变任何东西。

我试过了ls -a,但是里面确实没有文件。

问:我是否丢失了所有文件,或者是权限问题?

答案1

我认为从评论中可以肯定地说,根据当前信息,我们都对本案到底发生了什么感到困惑。如果有帮助的话,我无法在 WSL 上的 Ubuntu 中使用以下场景重现您的问题:

cd /
sudo mkdir c_dir
cd c_dir
sudo touch abc 1 2 3
cd /
sudo mv c_dir/ mnt/c/Users/ntd/Documents/to_be_compiled

该目录/c_dir已重命名(移动)到to_be_compiled正确位置的目录,并且所有文件都存在。

也就是说,最佳实践肯定是使用完全限定的目录名称(以 开头/)而不是您使用的相对形式。我想知道当您运行命令时,这些文件是否位于基于您的工作目录的其他位置mv

注意实际的所有权和权限将要根据您是否更改了 中的自动挂载设置而有所不同/etc/wsl.conf

使用默认的 WSL 安装,这些文件将归您所有用户一旦它们被移动到Windows驱动器,具有777权限。

我的稍微改变了一下,内容如下/etc/wsl.conf

[automount]
options = "metadata,umask=22,fmask=11"

完成此操作后,WSL 尝试模仿实际的 Linux 所有权和权限,因此文件由 拥有root(因为它们是通过 移动的sudo),权限为 644。

相关内容