あるコンピューターには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
-o resvport
すべて無駄に。
だから私の質問は:Mac側でls -l
したときに所有者/グループとして501/20を取得し、安全にcp -a
できるようにNFSを構成するにはどうすればよいですか?
または、ジョブに間違ったツールを使用していますか?より良い方法はありますか?他のUnixパーミッションを保持する必要があるので、SMBはオプションではないようです。また、OSXアカウントのUID/GIDを変更するリスクを冒したくありません。
ありがとう。
私は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>
スペースが好きではなかったようですが、何か間違ったことをしている可能性があります...