LDAP: cadangan dengan slapcat vs ldapsearch

11

Bekas: openldap-servers-2.4.23-34.el6_5.1.x86_64

Tugas: membuat skrip untuk crontabmembuat backup terjadwal database terjadwal.

1) slapcat- buat file dalam format default, Berkeley DB.

2) slapcatdapat dilakukan saat slapdmenjalankan (jika bdb/hdbdatabase digunakan).

3) Untuk mengembalikan file setelah slapcat- harus digunakan slapadd(tidak ldapadd).

4) slapcat/addtidak memerlukan kata sandi.

5) slapadddapat dilakukan hanya ketika slapdberhenti.

Contoh:

 $ slapcat -f /etc/openldap/slapd.conf -b "dc=db_1" -l db_1_backup.ldif
 $ slapadd -l db_1_backup.ldif

Alih-alih slapcat/add- mari kita lihat ldapsearch/add:

1) ldapsearch- membuat file dengan informasi yang hampir sama dengan slapcat;

2) ldapadd- dapat menggunakan file dari ldapsearch, tidak perlu slapddihentikan;

3) ldapadd/search- memerlukan kata sandi.

Contoh:

 $ ldapsearch -D "cn=root,dc=db_1" -W -b "dc=db_1" "dc=db_1" -LLL > db_1_backup2.ldif
 $ ldapadd -x -D "cn=root,dc=db_1" -W -f db_1_backup2.ldif

Jadi - pertanyaannya adalah:

1) Apakah saya kehilangan sesuatu dalam deskripsi alat ini?

2) Apa lagi perbedaan antara ldapadd/slapadddan ladpsearch/slapcat?

Setevoy
sumber

Jawaban:

12

Ringkasan bagus, beberapa poin tambahan:

  • slapcatkesedihan dari apa pun backend penyimpanan langsung (lokal), tidak harus Berkeley (hdb atau bdb), ia juga bekerja dengan OLC ( cn=config). Itu kesedihan ke format LDIF . (Secara langsung yang saya maksud langsung dikelola oleh OpenLDAP, bukan untuk contohnya SQL backend, meskipun disimpan secara lokal.)
  • ldapaddmengharuskan slapd yang berjalan, slapaddmensyaratkan bahwa itu tidak berjalan
  • ldapsearchmensyaratkan bahwa slapd yang berjalan, slapcattidak peduli apakah itu berjalan dengan backend BDB, seperti yang Anda dicatat

Pendeknya:

  • slapcatadalah cara untuk mendapatkan cadangan yang baik yang dapat Anda pulihkan dengan cepat, meskipun dengan downtime pada master (Anda dapat mengatasi ini dengan berbagai jenis replikasi diatur). Inilah yang harus Anda gunakan untuk cadangan umum, dan cadangan pra-pemutakhiran.
  • ldapsearch(tanpa +) akan memberi Anda cadangan portabel Anda mungkin dapat memuat dengan sedikit kesulitan ke server direktori lain, tetapi itu hanya akan menjadi pemulihan yang layak dalam pengaturan OpenLDAP sederhana (tanpa replikasi, tidak ada overlay khusus, tanpa penulisan ulang), dan jika Anda tidak peduli tentang melestarikan UUID / membuat / memodifikasi meta-data. Anda juga memerlukan file skema tambahan yang sesuai dengan data Anda.
  • ldapadd(menggunakan identitas lainnya ldapmodify) dapat digunakan untuk dengan mudah menerapkan modifikasi LDAP (memodifikasi objek, menghapus dan mengganti nama) yang tidak layak atau tidak mungkin dengan slapadd/ slapcatsendiri

Untuk sebagian besar admin, pertimbangan utama muncul dari konten LDIF yang sedikit berbeda dalam setiap kasus, dan persyaratan untuk slapddapat berjalan (atau tidak). Perbedaan yang lebih penting adalah:

  1. slapcatlebih cepat karena hanya membuang basis data, melewatkan overhead protokol LDAP, otentikasi, kontrol akses, batas objek dan waktu, overlay; dan itu tidak mencari sesuai dengan hierarki LDAP.
  2. slapaddlebih cepat (sekali lagi, tidak ada overhead protokol LDAP), dan dalam hal Anda memulihkan cadangan yang dikenal baik Anda dapat berjalan dalam mode cepat ( -q) untuk mempercepat impor besar. Anda juga dapat menonaktifkan pemeriksaan skema ( -s), meskipun catatan daripada perubahan kecil dalam skema atau validasi data antara versi OpenLDAP tidak pernah terdengar sebelumnya.
  3. slapcatterbatas pada database lokal, itu tidak akan menyeberang ke direktori lain (misalnya dengan back-ldap, back-meta) seperti yang ldapsearchakan terjadi. Hal yang sama berlaku untuk slapadd/ ldapadd.
  4. ldapsearchakan mengembalikan atribut dinamis yang tidak disimpan di backend, misalnya hasSubordinatesatau yang dikelola oleh overlay (misalnya slapo-memberof). Anda akan mengalami masalah saat memuat ini dengan ldapadd(mis. Atribut operasional tanpa modifikasi pengguna). Menulis ulang (slapo-rwm) juga dapat mengubah ldapsearchpandangan isi direktori.
  5. slapcattermasuk atribut internal (operasional), jika Anda menggunakan replikasi, atribut ini sangat penting. Dengan replikasi maka Anda agak kurang bergantung pada cadangan, tetapi jika Anda menggunakan ldapadduntuk memuat ulang master Anda, setiap objek akan dibuat ulang dengan replikasi (diubah entryUUID entryCSN) Meskipun Anda dapat menyertakan atribut operasional dengan menggunakan atribut "+" khusus dengan ldapsearch(atau allopoverlay), ini bukan hal yang sama denganslapcat , lihat poin sebelumnya mengapa demikian. Atribut ini juga termasuk membuat / memodifikasi DN dan cap waktu, yang mungkin penting untuk beberapa aplikasi.
  6. karena slapcattidak mematuhi hirarki LDAP (pemesanan tersirat), tidak ada jaminan bahwa pemesanan datanya akan berjalan dengan baik ldapadd- yaitu bahkan jika Anda menghapus atribut operasional, ldapadddapat mengeluh karena sub-ordinat mungkin muncul di hadapan atasan mereka (orang tua) . Spesifikasi LDAP mengharuskan orang tua ada, tetapi juga membiarkan pemesanan hasil pencarian tidak ditentukan dalam hal ini. Lihat komentar Howard di bawah ini, OpenLDAP secara slapadddiam - diam mendukung data yang tidak terurut untuk beberapa backend. Dalam keadaan darurat, Anda mungkin dapat menggunakan berulang kali slapadddengan opsi melanjutkan kesalahan ( -c) sampai semua "rusak" orang tua dibuat, berhenti ketika Anda tidak lagi menerima kode kesalahan 32 (tidak ada objek seperti itu,
  7. ldapadd tunduk pada aturan dan hamparan LDAP, misalnya integritas referensial, ppolicy (kebijakan kata sandi)
  8. slapcatlebih suka menggunakan basis-64 nilai atribut yang dikodekan untuk setidaknya userPassword (ditunjukkan dengan ::setelah nama atribut)
  9. ldapsearchmemiliki lebih banyak opsi untuk pemformatan LDIF, dan menulis atribut besar untuk memisahkan file. Ini juga dapat menangani rujukan dan alias .
mr.spuratic
sumber
Urutan hasil LDAP tidak ditentukan. Slapcat dan ldapsearch dapat mengembalikan entri dalam urutan arbitrer, tidak ada output yang dijamin sesuai untuk digunakan dengan ldapadd. Driver bdb / hdb / mdb dari slapadd memiliki solusi khusus untuk memproses input dalam urutan acak, ldapadd tidak.
Tanggal
slapcatmengembalikan entri dalam urutan basis data (backend), yang mungkin atau mungkin tidak didefinisikan dengan baik. ldapsearchsecara default mengembalikan dalam urutan yang dibalas server, dengan OpenLDAP ada pilihan pengurutan sisi-klien (mis. -S "") atau kontrol pengurutan sisi-server (mis. -E sss, jika didukung, dan tunduk pada beberapa jebakan konfigurasi kecil & skema terkait yang menanggung jebakan). The spek mengatakan hasil pencarian mungkin dalam urutan apapun. Sebuah implementasi dapat menentukan urutan default, kebanyakan orang menganggap standarnya adalah "parent before child", hanya OpenDS yang mendokumentasikan ini, AFAIK.
mr.spuratic
2
Urutan hasil pencarian di OpenLDAP sengaja tidak didokumentasikan. Karena spek sudah mengatakan hasil mungkin dalam urutan apa pun, perangkat lunak klien tidak boleh bergantung pada urutan tertentu. Penyortiran hasil tentu saja dapat dilakukan tetapi membutuhkan lebih banyak sumber daya dan biasanya tidak menarik ketika melakukan pencadangan penuh. Urutan basis data relatif tidak berarti mengingat kemungkinan subtree renames memindahkan cabang ke lokasi DIT baru.
hyc
1

slapcattidak berfungsi jika Anda memiliki overlay, mis memberOf. Jadi, jika Anda melakukan slapcat/ slapaddsiklus overlay keanggotaan tidak akan berfungsi lagi.

Robert Munteanu
sumber