Linux
如何讓 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 -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。
謝謝。
我決定只使用 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>
似乎不喜歡空格,但我可能做錯了什麼……