在 Linux 中使用 mv 命令移动文件或目录时,文件或目录的权限(包括所有者、权限位等)通常会被保留,但有一些特殊情况需要注意。
▪ 一般情况下:权限保留
当你在 同一个文件系统(即同一个磁盘分区)内使用 mv 命令移动文件或目录时:
文件权限(如 rwx 权限位)会被保留
文件的所有者(owner)也会保留
目录结构的权限也会保留
例如:
mv file.txt /home/user/documents/
这个命令将 file.txt 移动到 /home/user/documents/ 目录中,file.txt 的权限和所有者不会改变。
▪ 特殊情况:跨文件系统移动
如果你使用 mv 命令将文件从一个文件系统移动到另一个文件系统(例如从 /home 移动到 /mnt/external),mv 实际上会执行 复制 + 删除 的操作:
mv file.txt /mnt/external/
在这种情况下:
文件内容会被复制到目标位置
源文件会被删除
目标文件的权限可能会发生变化,具体取决于目标文件系统的挂载选项和用户权限
▪ 保留权限的额外方法
如果你需要确保权限在跨文件系统移动时也保留,可以使用以下方法:
1. 使用 rsync 保留权限
rsync -a --remove-source-files file.txt /mnt/external/
-a:归档模式,保留所有属性(包括权限、时间戳、所有者等)
--remove-source-files:删除源文件,模拟 mv 的效果
2. 使用 cp + rm
cp -a file.txt /mnt/external/
rm file.txt
-a:归档模式,保留所有属性
rm:删除源文件
▪ 总结
场景 是否保留权限 说明
同一文件系统内移动 ✅ 保留 mv 直接修改 inode,不改变权限
跨文件系统移动 ❌ 不一定保留 实际是复制 + 删除,目标系统挂载选项影响结果
使用 rsync -a 或 cp -a ✅ 保留 显式保留所有属性
▪ 验证方法
你可以使用以下命令查看文件的权限和所有者信息:
ls -l file.txt
输出示例:
-rw-r--r-- 1 user group 1234 Jan 1 12:34 file.txt
如果你需要确保在任何情况下都保留文件权限,请优先使用 rsync -a 或 cp -a + rm 的组合
184

被折叠的 条评论
为什么被折叠?



