GNU/Linux >> Linux の 問題 >  >> Linux

rsync を使用してファイルとフォルダーのアクセス許可を保持する

rsync がファイルの所有権を保持する方法は、次の 2 つの要素に依存します:

  • 宛先のスーパーユーザー (root) ですか?
    そうしないと、自分以外のユーザーでファイルやディレクトリを作成できません。

  • どのオプションフラグを使用していますか?

-a オプションには -o, --owner が含まれます 、 -g, --group 所有権を保持するように設計されたオプション。

ファイル システム レベルでは、ユーザーとグループの所有権はそれぞれ UID に格納されます。 GID 番号。 UID/GID からユーザー名およびグループ名へのマッピングがない場合、ツールは単にそれらの番号を代わりに表示します。
同じ名前のユーザーとグループは、異なるシステムでは異なる UID/GID 番号を持つことができます。

デフォルトでは、rsync はユーザー名 resp によって所有権を照合しようとします。グループ名 .つまり、ユーザーが vmail ソースのファイルの所有者である場合、rsync はユーザーを vmail にします また、宛先の所有者 (UID/GID 番号が異なる場合でも)。
通常、UID/GID 番号の形式で所有権を確認することはないため、これは通常、非常に回復力があり、人間にとって最も予測しやすいものです。

該当するユーザーがいない場合 vmail がリモート宛先に存在する場合、フォールバック シナリオが発生します。 Rsync は、実際の基になる UID/GID 番号と vmail の UID 番号を保持します。 ソースのユーザーが所有者の設定に使用されます。

これにより、rsync の方向を逆にしてバックアップを復元するときに、正しい所有権が維持されるはずです。

man rsync :

   -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).


   --numeric-ids
          With  this option rsync will transfer numeric group and user IDs rather than using user and group names
          and mapping them at both ends.

          By default rsync will use the username and groupname to determine what ownership  to  give  files.  The
          special  uid  0 and the special group 0 are never mapped via user/group names even if the --numeric-ids
          option is not specified.

          If a user or group has no name on the source system or it has no match on the destination system,  then
          the  numeric ID from the source system is used instead.  See also the comments on the "use chroot" set‐
          ting in the rsyncd.conf manpage for information on how the chroot setting affects  rsync’s  ability  to
          look up the names of the users and groups and what you can do about it.

rsync ターゲット システムにファイルが存在するかどうかに関係なく、copys はファイルの数値ユーザー ID です。その ID を持つユーザーが存在しない場合、ls などは、名前の代わりにその番号を表示するだけです。そのユーザー ID がターゲット システムの別のユーザー名に属している場合、このユーザーがファイルを所有します。

このシナリオでは、バックアップと復元は問題なく機能します。


具体的には、ファイルを復元するときに実際の問題が発生します。重要なのは、ファイルを引き戻すときに目的の所有者/グループを指定することです。 --chown=vmail:vmail

復元先の新しいマシンにユーザー vmail を既に作成していると仮定すると、次のようなコマンドを発行します:

sudo rsync -av --chown=vmail:vmail --force --delete --progress [email protected]_backup_server:/home/user/backups/vmail/ /vmail/

このようにするということは、バックアップ サーバー上のファイルの所有者が誰であっても、そのユーザーとの間で rsync できる限り問題にならないことを意味します (これは、この例では既に当てはまっていることが暗示されています)。


Linux
  1. Linuxのchmodとchown–Linuxでファイルのパーミッションと所有権を変更する方法

  2. ファイルのアクセス許可と保存?

  3. 別のユーザーおよびグループとしてファイルを作成しますか?

  1. Linuxでのファイルパーミッションと例

  2. SCPとRsyncでファイルをコピーする

  3. 新しいユーザーを作成し、MySQLで権限を付与します

  1. Linux – Unixのアクセス許可とファイルタイプを理解していますか?

  2. Linux でファイルとディレクトリのアクセス許可/所有権を管理する方法

  3. sshfs と書き込みファイル権限でマウントする