Ubuntu Linux:あるコンピュータから別のコンピュータにファイル/フォルダ権限をコピーする

Ubuntu Linux:あるコンピュータから別のコンピュータにファイル/フォルダ権限をコピーする

私は大容量(数千のファイル)Magentoのインストールを別のサーバーに転送する任務を担当しています。 Windowsに組み込まれているので、ファイルをマイコンピュータにダウンロードしてからFTPに戻すだけです。

しかし、今では権限がすべて正しくなく、単に各ファイルに対してこれを行うことができないことに気づきました。

ファイル権限を同期/コピーする方法はありますか?ユーザー/グループを同じにする必要があるかどうかはわかりません。ビューには正しいデジタル権限が必要なようです。

これらは完全に別々のサーバーであり、ファイル/フォルダは同じです。 Ubuntu 12.04は「新しい」サーバーのオペレーティングシステムです。

答え1

Linuxでは、次のコマンドを使用して所有権と権限(アクセス制御リストは含まれていますがSELinuxコンテキストは含まれていません)をバックアップおよび復元できます。ACLツール。走るgetfacl -R>権限.txt正しい権限を持つコンピュータの最上位ディレクトリにあります。出力ファイルをターゲットコンピュータにコピーして実行します。setfacl --restore=permissions.txt最上位のターゲットディレクトリにあります。

所有権と権限をコピーする必要がある場合は、回復部分をrootとして実行する必要があります。

答え2

を使用したい場合がありますrsync。動作させるには、次の場所にインストールする必要があります。両方(まだインストールされていない場合)その後、(rootとして)実行します。

rsync -avrHP root@source-host:/path/to/source-directory/ /path/to/destination

これは次のことを前提としています。

  • ターゲットホストでコマンドを実行します。ソースホストで実行するには、root@source-host:最初のパラメータからその部分を削除し、root@destination-host:2番目のパラメータにパラメータを追加します。注:rsyncを実行できません。二つリモートホスト一方の端だけが「リモート」端になることができます。
  • SSH経由でrootとしてログインすることは完全に可能です。セキュリティ上の理由から、このようなアクセスを無効にすることが一般的な慣行です。ただし、rsyncが実際に権限を複製するには、両端でrootとして実行する必要があります。無効になっている場合は確認して/etc/ssh/sshd_config参照してくださいPermitRootLogin。に設定されている場合は、に切り替えてnoyes起動してくださいsshd。ファイルをコピーして再度無効にすることを忘れないでください。
  • ソースホストのファイルを所有しているユーザーがターゲットホストに存在します。そうしないと、一部の許可ビットが誤ってコピーされる可能性があります。

お願いします。いいえコピーしたファイルを最初に削除する必要があります。 rsyncはファイルが存在しますが、同期権限を検出します。一部のファイルがコピーされ変更された場合、rsyncはその内容も同期します。

答え3

root で実行rsync -ogたぶんこれがあなたが探しているものかもしれません。

マンページから:

-o, --owner
              This option causes rsync to set the owner of the destination file to be the same as the source file, but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super options).  Without this option,  the  owner  of
              new and/or transferred files are set to the invoking user on the receiving side.

              The preservation of ownership will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).

       -g, --group
              This option causes rsync to set the group of the destination file to be the same as the source file.  If the receiving program is not running as the super-user (or if --no-super was specified), only groups that the invoking user on the receiving side
              is a member of will be preserved.  Without this option, the group is set to the default group of the invoking user on the receiving side.

              The preservation of group information will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).

関連情報