我在一台电脑上安装了 Ubuntu GNOME 15.10,在另一台电脑上安装了 OS X 10.11.2。我想将文件从 Ubuntu 安装迁移到 OS X 安装,但保留权限。
目前我尝试的策略是通过 NFS 导出我的主目录,从 Mac 挂载它,然后cp -a
从挂载中取出文件。我知道 OS X 上的 UID 和 GID 的分配方式与 Linux 不同。在 Linux 上我的 UID/GID 是 1000/1000,在 OS X 上我的 UID/GID 是 501/20。
据我所知,有了这个/etc/exports
就足以让我的 Linux 文件在 Mac 上显示为 501/20:
/home/pietro/ <Mac's IP>(rw,sync,all_squash,no_subtree_check,insecure,anonuid=501,anongid=20)
并在 Mac 上安装
mkdir /tmp/q
sudo mount -t nfs <Linux's IP>:/home/pietro /tmp/q
但是,当我以这种方式安装时,ls -l
Mac 告诉我文件权限仍然是 1000/1000。
我也尝试过:
no_root_squash
anonuid=1000,anongid=1000
- 移除
no_subtree_check
- 移除
sync
echo N | sudo tee /sys/module/nfs/parameters/nfs4_disable_idmapping
其次是sudo nfsidmap -c
NEED_IDMAPD=yes
在/etc/default/nfs-common
-o resvport
在 Mac 上
一切都无济于事。
所以我的问题是:如何配置 NFS,以便当我ls -l
在 Mac 端时,我获得 501/20 作为所有者/组,这样我就可以安全地cp -a
?
或者,我是否使用了错误的工具来完成这项工作,是否有更好的方法?我需要保留其他 Unix 权限,因此 SMB 似乎不是一个选项。我也不愿意冒险更改 OS X 帐户的 UID/GID。
谢谢。
答案1
我决定只使用 rsync,它从 3.1.0 版本开始,有我想要做的选项我需要获取最新的 rsync,因为 Apple 仍然在 OS X 中提供旧版本,但之后只需执行
rsync3 --usermap 1000:501 --groupmap 1000:20 -a -v pietro@<Linux's IP>:/home/pietro/<path> <dest>
不管怎么说,还是要谢谢你!
更新(为了 Google 员工的利益)反之亦然,同样适用于 Mac!
rsync3 --usermap 501:1000 --groupmap 20:1000 -a -v <src> pietro@<Linux's IP>:/home/pietro/<path>
<path>
似乎不喜欢空格,但我可能做错了什么......