GNU/Linux >> Belajar Linux >  >> Linux

Mempertahankan izin file dan folder dengan rsync

Bagaimana rsync mempertahankan kepemilikan file bergantung pada dua hal:

  • Apakah Anda pengguna super (root) di tujuan?
    Jika tidak, Anda tidak dapat membuat file dan direktori dengan pengguna lain selain milik Anda.

  • Bendera opsi mana yang Anda gunakan?

-a opsi termasuk -o, --owner , -g, --group pilihan yang dirancang untuk mempertahankan kepemilikan.

Pada tingkat sistem file, kepemilikan pengguna dan grup disimpan di UID resp. nomor GID. Ketika tidak ada pemetaan dari UID/GID ke nama pengguna dan nama grup, alat hanya akan menampilkan nomor tersebut.
Pengguna dan grup dengan nama yang sama dapat memiliki nomor UID/GID yang berbeda pada sistem yang berbeda.

Secara default rsync akan mencoba mencocokkan kepemilikan dengan nama pengguna resp. nama grup . Dengan kata lain saat pengguna vmail adalah pemilik file pada sumbernya, rsync akan membuat pengguna vmail juga pemilik di tempat tujuan (walaupun mereka memiliki nomor UID/GID yang berbeda).
Itu biasanya cukup tangguh dan paling dapat diprediksi oleh manusia karena kami biasanya tidak melihat kepemilikan dalam bentuk nomor UID/GID.

Saat tidak ada pengguna yang cocok vmail hadir di tujuan jarak jauh, maka skenario mundur akan terjadi. Rsync kemudian akan mempertahankan nomor UID/GID yang sebenarnya dan nomor UID dari vmail pengguna pada sumber akan digunakan untuk mengatur pemilik.

Itu harus mempertahankan kepemilikan yang benar saat Anda membalikkan arah rsync dan memulihkan cadangan.

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.

Apa rsync salinan adalah id pengguna numerik dari file, terlepas dari apakah itu ada di sistem target. Jika pengguna dengan id tersebut tidak ada, ls dll. hanya akan menampilkan nomor itu alih-alih nama. Jika id pengguna itu milik nama pengguna lain di sistem target, pengguna ini sekarang akan memiliki file tersebut.

Pencadangan dan pemulihan akan berfungsi tanpa masalah dalam skenario ini.


Dengan kasus Anda secara khusus, masalah sebenarnya muncul ketika tiba waktunya untuk memulihkan file. Kuncinya adalah menentukan pemilik/grup yang diinginkan saat Anda menarik kembali file. --chown=vmail:vmail

Dengan asumsi bahwa Anda telah membuat vmail pengguna di mesin baru yang akan Anda pulihkan, Anda akan mengeluarkan sesuatu seperti berikut:

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

Melakukannya dengan cara ini berarti tidak masalah siapa yang memiliki file di server cadangan selama Anda dapat melakukan rsync ke/dari pengguna tersebut (yang tersirat sudah benar dalam contoh Anda).


Linux
  1. Temukan File dengan Perintah Temukan dan Temukan di Linux

  2. Periksa izin file Linux dengan ls

  3. Pasang dengan sshfs dan tulis izin file

  1. Linux chmod and chown – Cara Mengubah Izin dan Kepemilikan File di Linux

  2. Izin File di Linux dengan Contoh

  3. Salin file dengan SCP dan Rsync

  1. Linux – Memahami Izin Unix Dan Jenis File?

  2. Diutamakan Pengguna Dan Pemilik Grup Dalam Izin File?

  3. Buat pengguna baru dan berikan izin di MySQL