我在一台计算机上安装了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
但是,当我这样安装时,Mac上的ls -l告诉我文件权限仍然是1000/1000。
我也试过了:
no_root_squash anonuid=1000,anongid=1000 no_subtree_check sync echo N | sudo tee /sys/module/nfs/parameters/nfs4_disable_idmapping echo N | sudo tee /sys/module/nfs/parameters/nfs4_disable_idmapping其次是sudo nfsidmap -c NEED_IDMAPD=yes在/etc/default/nfs-common -o resvport在Mac上-o resvport 一切都无济于事。
所以我的问题是:如何configurationNFS,以便当我在ls -l的Mac端获得501/20作为所有者/组,所以我可以安全地使用cp -a ?
或者,我是否使用了错误的工具来完成这项工作,还有更好的方法吗? 我需要保留其他Unix权限,所以SMB似乎不是一个选项。 我也不愿冒险改变OS X帐户的UID / GID。
谢谢。
我决定只使用rsync, 从版本3.1.0有做我想要的选项 。 我需要获得最新的rsync,因为苹果公司仍然用OS X发布一个古老的版本,但之后,这只是一个问题
rsync3 --usermap 1000:501 --groupmap 1000:20 -a -v pietro@<Linux's IP>:/home/pietro/<path> <dest>
不pipe怎么说,还是要谢谢你!
更新 (为Google员工的利益)反之亦然,也从Mac的工作!
rsync3 --usermap 501:1000 --groupmap 20:1000 -a -v <src> pietro@<Linux's IP>:/home/pietro/<path>
<path>似乎不喜欢空格,但我可能会做错误的…