web-dev-qa-db-ja.com

Linux上のNFSにOSXのユーザーIDを使用してフォルダをOSXにエクスポートさせ、LinuxからOS Xにcp -aを実行するにはどうすればよいですか?

あるコンピューターにはUbuntuGNOME 15.10があり、別のコンピューターにはOS X10.11.2があります。 UbuntuインストールからOSXインストールにファイルを移行したいが、権限は保持したい。

現在私が試みている戦略は、NFS経由でホームディレクトリをエクスポートし、Macからマウントし、マウントからファイルをcp -aすることです。 OS Xでは、UIDとGIDはLinuxとは異なる方法で割り当てられます。 Linuxでは私のUID/GIDは1000/1000であり、OSXでは私のUID/GIDは501/20です。

私が収集できることから、これを/etc/exportsに含めることで、MacでLinuxファイルを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の後にSudo nfsidmap -cが続きます
  • NEED_IDMAPD=yes in /etc/default/nfs-common
  • Macの場合は-o resvport

すべて無駄に。

だから私の質問は:Mac側でls -lしたときに所有者/グループとして501/20を取得し、安全にcp -aできるようにNFSを構成するにはどうすればよいですか?

または、ジョブに間違ったツールを使用していますか?より良い方法はありますか?他のUnixパーミッションを保持する必要があるので、SMBはオプションではないようです。また、OSXアカウントのUID/GIDを変更するリスクを冒したくありません。

ありがとう。

1
andlabs

私はrsyncを使用することにしました。これは バージョン3.1.0の時点で、私がやりたいことを実行するためのオプションがあります 。 Appleには古いバージョンのOS Xがまだ付属しているので、最新のrsyncを取得する必要がありましたが、その後はそれを行うだけの問題でした

rsync3 --usermap 1000:501 --groupmap 1000:20 -a -v pietro@<Linux's IP>:/home/pietro/<path> <dest>

とにかくありがとう!

[〜#〜] update [〜#〜](Google社員の利益のために)その逆もMacからも機能します!

rsync3 --usermap 501:1000 --groupmap 20:1000 -a -v <src> pietro@<Linux's IP>:/home/pietro/<path>

<path>スペースが好きではなかったようですが、何か間違ったことをしている可能性があります...

1
andlabs