> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> جدول نظامي يحتوي على سجلات تتضمن معلومات عن عمليتَي `BACKUP` و`RESTORE`.

# system.backups

<div id="description">
  ## الوصف
</div>

يتضمن قائمة بجميع عمليات `BACKUP` أو `RESTORE` مع حالاتها الحالية وخصائصها الأخرى. لاحظ أن هذا الجدول غير دائم، ولا يعرض إلا العمليات التي نُفِّذت بعد آخر إعادة تشغيل للخادم.

<div id="columns">
  ## الأعمدة
</div>

* `id` ([String](/docs/ar/reference/data-types/index)) — معرّف العملية، ويمكن تمريره عبر `SETTINGS id=...` أو إنشاؤه عشوائيًا كـ UUID.
* `name` ([String](/docs/ar/reference/data-types/index)) — اسم العملية، وهو سلسلة مثل `Disk('backups', 'my_backup')`
* `base_backup_name` ([String](/docs/ar/reference/data-types/index)) — اسم عملية النسخة الاحتياطية الأساسية، وهو سلسلة مثل `Disk('backups', 'my_base_backup')`
* `query_id` ([String](/docs/ar/reference/data-types/index)) — معرّف الاستعلام الذي بدأ النسخ الاحتياطي.
* `status` ([Enum8('CREATING\_BACKUP' = 0, 'BACKUP\_CREATED' = 1, 'BACKUP\_FAILED' = 2, 'RESTORING' = 3, 'RESTORED' = 4, 'RESTORE\_FAILED' = 5, 'BACKUP\_CANCELLED' = 6, 'RESTORE\_CANCELLED' = 7)](/docs/ar/reference/data-types/index)) — حالة عملية النسخ الاحتياطي أو الاستعادة.
* `error` ([String](/docs/ar/reference/data-types/index)) — رسالة الخطأ، إن وجدت.
* `start_time` ([DateTime64(6)](/docs/ar/reference/data-types/index)) — الوقت الذي بدأت فيه العملية.
* `end_time` ([DateTime64(6)](/docs/ar/reference/data-types/index)) — الوقت الذي انتهت فيه العملية.
* `num_files` ([UInt64](/docs/ar/reference/data-types/index)) — عدد الملفات المخزّنة في النسخة الاحتياطية.
* `total_size` ([UInt64](/docs/ar/reference/data-types/index)) — الحجم الإجمالي للملفات المخزّنة في النسخة الاحتياطية.
* `num_entries` ([UInt64](/docs/ar/reference/data-types/index)) — عدد العناصر في النسخة الاحتياطية، أي عدد الملفات داخل المجلد إذا كانت النسخة الاحتياطية مخزّنة كمجلد.
* `uncompressed_size` ([UInt64](/docs/ar/reference/data-types/index)) — الحجم غير المضغوط للنسخة الاحتياطية.
* `compressed_size` ([UInt64](/docs/ar/reference/data-types/index)) — الحجم المضغوط للنسخة الاحتياطية.
* `files_read` ([UInt64](/docs/ar/reference/data-types/index)) — يعرض عدد الملفات التي تمت قراءتها أثناء RESTORE من هذه النسخة الاحتياطية.
* `bytes_read` ([UInt64](/docs/ar/reference/data-types/index)) — يعرض الحجم الإجمالي للملفات التي تمت قراءتها أثناء RESTORE من هذه النسخة الاحتياطية.
* `ProfileEvents` ([Map(LowCardinality(String), UInt64)](/docs/ar/reference/data-types/index)) — جميع أحداث profile التي جرى التقاطها أثناء هذه العملية.
* `settings` ([Map(LowCardinality(String), String)](/docs/ar/reference/data-types/index)) — الإعدادات الخاصة بالنسخ الاحتياطي/الاستعادة المستخدمة فعليًا لهذه العملية (من عبارة `SETTINGS`، بما في ذلك القيم الافتراضية). لا يتم إظهار الإعدادات الحساسة.
* `engine_settings` ([Map(LowCardinality(String), String)](/docs/ar/reference/data-types/index)) — الإعدادات التي يستخدمها فعليًا قارئ/كاتب engine النسخ الاحتياطي (مثل `allow_native_copy` في S3). تكون فارغة عندما تتضمن العملية أكثر من engine واحد، بحيث يتعذر تمثيلها بخريطة مسطّحة: incremental backups وعمليات الاستعادة، وعمليات استعادة snapshot خفيفة الوزن، وعمليات `ON CLUSTER` غير الداخلية.

<div id="restore-atomicity">
  ## ذرّية الاستعادة
</div>

`RESTORE` ليست عمليةً معاملية، ولا تتراجع عند الفشل. بالنسبة إلى كل جدول، تُنسخ جميع الأجزاء المحددة قبل إرفاق أيٍّ منها، لكن مرحلة الإرفاق نفسها ليست معاملية — إذ تصبح الأجزاء مرئية جزءًا تلو الآخر. وتُعالَج الجداول بشكل مستقل.

**الجداول مستقلة.** فالجدول الذي تكتمل استعادته يبقى كما هو حتى إذا فشل جدول آخر في الأمر نفسه لاحقًا:

```sql theme={null}
RESTORE TABLE db.t0, TABLE db.t1
FROM S3('<endpoint>', '<access_key>', '<secret_key>')
SETTINGS
    allow_non_empty_tables = true;
```

إذا فشل هذا الأمر بعد استعادة `db.t0` بالكامل، ولكن قبل اكتمال استعادة `db.t1`، فسيبقى `db.t0` مستعادًا.

**العبارة `PARTITIONS` ليست حدًا فاصلًا لعملية commit.** فهي تحدد فقط أي أجزاء الجدول ستتم استعادتها:

```sql theme={null}
RESTORE TABLE db.t0 PARTITIONS '2026-06-01', '2026-06-02', '2026-06-03'
FROM S3('<endpoint>', '<access_key>', '<secret_key>')
SETTINGS
    allow_non_empty_tables = true;
```

تُنسخ أولًا جميع أجزاء الجدول المحددة، ولا تُرفق إلا بعد أن تصبح كلها جاهزة. لذلك، إذا فشل هذا الأمر أثناء مرحلة النسخ — على سبيل المثال، بعد أن يكون القسم `2026-06-01` قد نُسخ بالكامل بينما لم يكتمل `2026-06-02` و`2026-06-03` بعد — فلن يكون `2026-06-01` قد اعتُمِد، وسيبقى الجدول من دون أي بيانات مستعادة من هذا الأمر. وبمجرد اكتمال مرحلة النسخ وبدء خطوة الإرفاق، تُعتمَد الأجزاء واحدًا تلو الآخر، لذا فإن حدوث فشل أثناء الإرفاق قد يترك الجدول مستعادًا جزئيًا، من دون التراجع.

لاعتِماد الأقسام بشكل مستقل (بحيث يبقى القسم المكتمل بعد حدوث فشل لاحق ويمكن إعادة المحاولة له بمعزل عن غيره)، شغّل أمر `RESTORE` منفصلًا لكل قسم، باستخدام `SETTINGS allow_non_empty_tables = true` بعد الأول.
