我正在尝试将一个文件系统的内容复制到另一个文件系统,同时保留文件所有权和权限。我目前正在尝试
sudo cp -pR /media/myself/fs1/* /media/myself/fs2/
复制工作仍在进行中,但我看到目标上的第一个顶级目录属于根目录,而原始目录属于我的用户帐户。
(实际上fs1
是来自另一台计算机,但用户 ID 恰好匹配。)
fs1
是 ext4,而fs2
是 btrfs。两者都是外部硬盘,插入后 Ubuntu 会自动挂载。
如何确保所有数字所有者和组 ID(包括在用于复制作业的工作站上未找到的 ID)以及权限都得到保留?
答案1
作为一种解决方法,由于我在桌面系统上,我现在使用 Unison(带有 sudo)进行复制,并使用以下配置文件:
label = Disk content migration
root = /media/myself/fs1
root = /media/myself/fs2
owner = true
numericids = true
group = true
dontchmod = false
noupdate = /media/myself/fs1
perms = -1
times = true
owner
和group
分别是同步所有者和组的选项。numericids
告诉 Unison 使用数字 ID 而不是用户名。
dontchmod
并perms
指示 Unison 同步所有权限,包括 setuid/setgid(这是这里所需要的,因为我正在准备具有不同文件系统的替换磁盘)。
times
告诉 Unison 同步时间戳。
noupdate
与原始卷的路径一起可防止 Unison 意外修改原始文件系统。