我如何让 Linux 上的 NFS 使用 OS X 的用户 ID 将文件夹导出到 OS X,以便我可以将 cp -a 从 Linux 复制到 OS X?

我如何让 Linux 上的 NFS 使用 OS X 的用户 ID 将文件夹导出到 OS X,以便我可以将 cp -a 从 Linux 复制到 OS X?

我在一台电脑上安装了 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 -lMac 告诉我文件权限仍然是 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>似乎不喜欢空格,但我可能做错了什么......

相关内容