ソース(ローカル)マシンのユーザーXとグループYに属するすべてのファイルが宛先(リモート)マシンのユーザーWとグループZにマップされるように、ディレクトリをリモートサーバーにrsyncする必要があります。トランスポートとしてsshを使用して可能であれば、rsyncデーモンを使用する必要がある場合も問題ありません。
それを行う方法はありますか?次のような任意のユーザー/グループマップを確立する方法を探しています
local user X => remote user W
local group Y => remote group Z
... and as many of these as needed.
これはかなり一般的なユースケースになるはずですよね?例えば。ユーザー名がXであるローカルコンピューターにファイルがあり、それらをWebサーバーにアップロードする必要があります。ファイルは、私のユーザーと同じ名前または同じUIDを持たない特定のユーザーに属する必要があります。パソコン。
Rsyncのmanページでそれを見つけることができません...
ローカルマシンとリモートマシンの両方でLINUX(Ubuntuローカル、centOSリモート)
私が試したコマンド:rsync -avz/path/to/local [email protected]:/ path/to/remote
Rsyncの最新バージョン(少なくとも3.1.1)では、「リモート所有権」を指定できます。
--usermap=tom:www-data
トムの所有権をwww-data(別名PHP/Nginx)に変更します。 Macをクライアントとして使用している場合は、brewを使用して最新バージョンにアップグレードします。そして、サーバー上でアーカイブソースをダウンロードし、「作成」してください。
ファイルの所有権を任意のユーザーに変更する場合は、最初に宛先ボックスのrootになる必要があります。
Rsyncに統合されたそのような機能はないと思いますが、rsyncを実行した後にfind
を実行することで実現できます。
たぶん、このようなコマンドでうまくいくでしょう:たとえば、UID 1000 => 505およびUID 1001 => 700から変換します:
find /your/rsynced/path -user 1000 -exec chown 505 {} \;
find /your/rsynced/path -user 1001 -exec chown 700 {} \;
多くのユーザーがいる場合は、好みの言語でマッピング付きのループを使用することを検討してください。
楽しんで。