'\" t .\" Title: pg_restore .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026 .\" Manual: PostgreSQL 18.6 Documentation .\" Source: PostgreSQL 18.6 .\" Language: Persian .\" .TH "PG_RESTORE" "1" "2026" "PostgreSQL 18.6" "PostgreSQL 18.6 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" pg_restore \- بازیابی یک پایگاه داده PostgreSQL از یک فایل بایگانی ایجاد شده توسط pg_dump .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBpg_restore\fR\ 'u \fBpg_restore\fR [\fIconnection\-option\fR...] [\fIoption\fR...] [\fIfilename\fR] .SH "توضیحات (DESCRIPTION)" .PP pg_restore ابزاری برای بازیابی یک پایگاه داده PostgreSQL از یک بایگانی ایجادشده توسط \fBpg_dump\fR(1) در یکی از قالب‌های غیر متنی ساده است\&. این ابزار دستورهای لازم را برای بازسازی پایگاه داده به وضعیتی که در زمان ذخیره‌سازی داشته است صادر می‌کند\&. همچنین فایل‌های بایگانی به pg_restore این امکان را می‌دهند که در موارد بازیابی انتخابی عمل کند، یا حتی پیش از بازیابی، ترتیب موارد را تغییر دهد\&. فایل‌های بایگانی به‌گونه‌ای طراحی شده‌اند که بین معماری‌های مختلف سازگار و قابل‌حمل باشند\&. .PP pg_restore می‌تواند در دو حالت عمل کند\&. اگر نام یک پایگاه داده مشخص شده باشد، pg_restore به آن پایگاه داده متصل می‌شود و محتویات بایگانی را مستقیماً درون پایگاه داده بازیابی می‌کند\&. در غیر این صورت، اسکریپتی شامل دستورهای SQL لازم برای بازسازی پایگاه داده ایجاد شده و در یک فایل یا خروجی استاندارد نوشته می‌شود\&. این اسکریپت خروجی، معادل با قالب خروجی متن ساده در pg_dump است\&. بنابراین، برخی از گزینه‌های کنترل‌کننده خروجی، مشابه گزینه‌های pg_dump هستند\&. .PP بدیهی است که pg_restore نمی‌تواند اطلاعاتی را که در فایل بایگانی وجود ندارد بازیابی کند\&. برای مثال، اگر بایگانی با استفاده از گزینهٔ \(lqتخلیه داده‌ها به‌صورت دستورهای \fBINSERT\fR\(rq ایجاد شده باشد، pg_restore قادر نخواهد بود داده‌ها را با استفاده از دستورهای \fBCOPY\fR بارگذاری کند\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBهشدار\fR .ps -1 .br .PP بازیابی یک نسخهٔ پشتیبان (dump) باعث می‌شود که مقصد، کدهای دلخواهی را به انتخاب مدیران ارشد (superusers) مبدأ اجرا کند\&. پشتیبان‌گیری‌های جزئی و بازیابی‌های جزئی مانع از این امر نمی‌شوند\&. اگر به مدیران ارشد مبدأ اعتمادی وجود ندارد، دستورهای SQL استخراج‌شده باید پیش از بازیابی بررسی شوند\&. نسخه‌های پشتیبان غیر متنی را می‌توان با استفاده از گزینهٔ \fB\-\-file\fR در pg_restore بررسی کرد\&. توجه داشته باشید کلاینتی که عملیات پشتیبان‌گیری و بازیابی را اجرا می‌کند، نیازی به اعتماد به مدیران ارشد مبدأ یا مقصد ندارد\&. .sp .5v .RE.SH "گزینه‌ها (OPTIONS)" .PP pg_restore آرگومان‌های خط فرمان زیر را می‌پذیرد\&. .PP \fIfilename\fR .RS 4 مکان فایل بایگانی (یا دایرکتوری، برای بایگانی با قالب دایرکتوری) را برای بازیابی مشخص می‌کند\&. در صورت عدم تعیین، از ورودی استاندارد استفاده می‌شود\&. .RE .PP \fB\-a\fR .br \fB\-\-data\-only\fR .RS 4 تنها داده‌ها را بازیابی می‌کند، نه طرحواره (تعاریف داده) یا آمارها را\&. در صورت وجود در بایگانی، داده‌های جدول، اشیاء بزرگ (large objects) و مقادیر دنباله‌ها بازیابی می‌شوند\&. .sp این گزینه شبیه به مشخص کردن \fB\-\-section=data\fR است، هرچند به دلایل تاریخی دقیقاً با آن یکسان نیست\&. .RE .PP \fB\-c\fR .br \fB\-\-clean\fR .RS 4 پیش از بازیابی اشیاء پایگاه داده، دستوراتی را برای \fBDROP\fR کردن تمامی اشیائی که قرار است بازیابی شوند صادر می‌کند\&. این گزینه برای بازنویسی روی یک پایگاه داده موجود مفید است\&. اگر هر یک از اشیاء در پایگاه داده مقصد وجود نداشته باشند، پیام‌های خطای قابل چشم‌پوشی گزارش خواهند شد، مگر اینکه \fB\-\-if\-exists\fR نیز مشخص شده باشد\&. .RE .PP \fB\-C\fR .br \fB\-\-create\fR .RS 4 پایگاه داده را پیش از بازیابی اطلاعات درون آن ایجاد می‌کند\&. اگر \fB\-\-clean\fR نیز مشخص شده باشد، پایگاه داده هدف را پیش از اتصال به آن حذف و دوباره ایجاد می‌کند\&. .sp با گزینهٔ \fB\-\-create\fR، دستور pg_restore همچنین توضیحات (comment) پایگاه داده (در صورت وجود) و تمام تنظیمات متغیرهای پیکربندی مختص به این پایگاه داده را بازیابی می‌کند؛ یعنی هر دستور \fBALTER DATABASE \&.\&.\&. SET \&.\&.\&.\fR و \fBALTER ROLE \&.\&.\&. IN DATABASE \&.\&.\&. SET \&.\&.\&.\fR که به این پایگاه داده اشاره دارد\&. امتیازات دسترسی برای خود پایگاه داده نیز بازیابی می‌شوند، مگر اینکه \fB\-\-no\-acl\fR مشخص شده باشد\&. .sp هنگامی که از این گزینه استفاده می‌شود، از پایگاه داده مشخص‌شده با \fB\-d\fR تنها برای صدور دستورهای اولیهٔ \fBDROP DATABASE\fR و \fBCREATE DATABASE\fR استفاده می‌شود\&. تمامی داده‌ها در پایگاه داده‌ای با نام درج‌شده در بایگانی بازیابی می‌شوند\&. .RE .PP \fB\-d \fR\fB\fIdbname\fR\fR .br \fB\-\-dbname=\fR\fB\fIdbname\fR\fR .RS 4 به پایگاه داده \fIdbname\fR متصل شده و مستقیماً درون پایگاه داده بازیابی می‌کند\&. مقدار \fIdbname\fR می‌تواند یک رشته اتصال (connection string) باشد\&. در این صورت، پارامترهای رشته اتصال بر هرگونه گزینهٔ متضاد خط فرمان اولویت خواهند داشت\&. .RE .PP \fB\-e\fR .br \fB\-\-exit\-on\-error\fR .RS 4 در صورت مواجهه با خطا هنگام ارسال دستورهای SQL به پایگاه داده، خارج می‌شود\&. حالت پیش‌فرض، ادامه دادن و نمایش تعداد خطاها در پایان بازیابی است\&. .RE .PP \fB\-f \fR\fB\fIfilename\fR\fR .br \fB\-\-file=\fR\fB\fIfilename\fR\fR .RS 4 فایل خروجی را برای اسکریپت تولیدشده، یا برای فهرست هنگام استفاده به همراه \fB\-l\fR مشخص می‌کند\&. برای stdout از \- استفاده کنید\&. .RE .PP \fB\-F \fR\fB\fIformat\fR\fR .br \fB\-\-format=\fR\fB\fIformat\fR\fR .RS 4 قالب بایگانی را مشخص می‌کند\&. تعیین قالب الزامی نیست، چرا که pg_restore قالب را به طور خودکار تعیین می‌کند\&. در صورت تعیین، می‌تواند یکی از موارد زیر باشد: .PP c .br custom .RS 4 بایگانی در قالب سفارشی (custom) متعلق به pg_dump است\&. .RE .PP d .br directory .RS 4 بایگانی یک بایگانی دایرکتوری (directory) است\&. .RE .PP t .br tar .RS 4 بایگانی یک بایگانی \fBtar\fR است\&. .RE .RE .PP \fB\-I \fR\fB\fIindex\fR\fR .br \fB\-\-index=\fR\fB\fIindex\fR\fR .RS 4 تنها تعریف شاخص (index) نام‌برده را بازیابی می‌کند\&. با چندین سوئیچ \fB\-I\fR می‌توان چندین شاخص را مشخص کرد\&. .RE .PP \fB\-j \fR\fB\fInumber\-of\-jobs\fR\fR .br \fB\-\-jobs=\fR\fB\fInumber\-of\-jobs\fR\fR .RS 4 زمان‌برترین مراحل pg_restore \(em آن‌هایی که داده‌ها را بارگذاری می‌کنند، شاخص‌ها را ایجاد می‌کنند یا قیدها را می‌سازند \(em را به طور همزمان با استفاده از حداکثر \fInumber\-of\-jobs\fR نشست همزمان اجرا می‌کند\&. این گزینه می‌تواند زمان بازیابی یک پایگاه داده بزرگ را روی سروری که روی یک ماشین چندپردازنده‌ای اجرا می‌شود، به طور چشمگیری کاهش دهد\&. هنگام خروجی گرفتن به صورت اسکریپت به جای اتصال مستقیم به سرور پایگاه داده، از این گزینه صرف‌نظر می‌شود\&. .sp هر کار (job) بسته به سیستم‌عامل، یک فرایند یا یک ریسه (thread) است و از یک اتصال مجزا به سرور استفاده می‌کند\&. .sp مقدار بهینه برای این گزینه به پیکربندی سخت‌افزاری سرور، کلاینت و شبکه بستگی دارد\&. عوامل موثر شامل تعداد هسته‌های CPU و پیکربندی دیسک است\&. یک نقطه شروع مناسب، تعداد هسته‌های CPU در سرور است، اما مقادیر بزرگتر از آن نیز در بسیاری از موارد می‌توانند به زمان‌های بازیابی سریع‌تر منجر شوند\&. البته مقادیر بیش از حد بالا به دلیل وقوع کوبش (thrashing) موجب کاهش کارایی خواهند شد\&. .sp با این گزینه تنها قالب‌های بایگانی custom و directory پشتیبانی می‌شوند\&. ورودی باید یک فایل عادی یا دایرکتوری باشد (نه برای مثال یک pipe یا ورودی استاندارد)\&. همچنین نمی‌توان از چند کار به طور همزمان به همراه گزینهٔ \fB\-\-single\-transaction\fR استفاده کرد\&. .RE .PP \fB\-l\fR .br \fB\-\-list\fR .RS 4 فهرست محتویات بایگانی را لیست می‌کند\&. خروجی این عملیات می‌تواند به عنوان ورودی برای گزینهٔ \fB\-L\fR استفاده شود\&. توجه داشته باشید که اگر سوئیچ‌های پالایشی مانند \fB\-n\fR یا \fB\-t\fR به همراه \fB\-l\fR استفاده شوند، موارد فهرست‌شده را محدود خواهند کرد\&. .RE .PP \fB\-L \fR\fB\fIlist\-file\fR\fR .br \fB\-\-use\-list=\fR\fB\fIlist\-file\fR\fR .RS 4 تنها آن دسته از عناصر بایگانی را بازیابی می‌کند که در \fIlist\-file\fR فهرست شده‌اند، و آن‌ها را به ترتیبی که در فایل آمده‌اند بازیابی می‌کند\&. توجه داشته باشید که اگر سوئیچ‌های پالایشی مانند \fB\-n\fR یا \fB\-t\fR به همراه \fB\-L\fR استفاده شوند، موارد بازیابی‌شده را بیش از پیش محدود خواهند کرد\&. .sp فایل \fIlist\-file\fR معمولاً با ویرایش خروجی یک عملیات قبلی \fB\-l\fR ایجاد می‌شود\&. خطوط را می‌توان جابجا یا حذف کرد، و همچنین می‌توان با قرار دادن یک نقطه‌ویرگول (;) در ابتدای سطر، آن‌ها را تبدیل به توضیح کرد\&. برای مثال‌ها به ادامه مراجعه کنید\&. .RE.PP \fB\-n \fR\fB\fIschema\fR\fR .br \fB\-\-schema=\fR\fB\fIschema\fR\fR .RS 4 تنها اشیائی را بازیابی می‌کند که در طرح‌وارهٔ (schema) نام‌برده قرار دارند\&. چندین طرح‌واره را می‌توان با چند سوئیچ \fB\-n\fR مشخص کرد\&. این گزینه می‌تواند با گزینهٔ \fB\-t\fR برای بازیابی تنها یک جدول خاص ترکیب شود\&. .RE .PP \fB\-N \fR\fB\fIschema\fR\fR .br \fB\-\-exclude\-schema=\fR\fB\fIschema\fR\fR .RS 4 اشیائی را که در طرح‌وارهٔ نام‌برده قرار دارند بازیابی نمی‌کند\&. چندین طرح‌واره برای مستثنی شدن را می‌توان با چند سوئیچ \fB\-N\fR مشخص کرد\&. .sp هنگامی که هر دو گزینهٔ \fB\-n\fR و \fB\-N\fR برای نام طرح‌وارهٔ یکسانی مشخص شوند، سوئیچ \fB\-N\fR اولویت دارد و آن طرح‌واره مستثنی می‌شود\&. .RE .PP \fB\-O\fR .br \fB\-\-no\-owner\fR .RS 4 دستوراتی برای تنظیم مالکیت اشیاء مطابق با پایگاه‌دادهٔ اصلی صادر نمی‌کند\&. به‌طور پیش‌فرض، pg_restore دستورهای \fBALTER OWNER\fR یا \fBSET SESSION AUTHORIZATION\fR را برای تعیین مالکیت عناصر ایجادشدهٔ طرح‌واره صادر می‌کند\&. این دستورها ناموفق خواهند بود مگر اینکه اتصال اولیه به پایگاه‌داده توسط یک کاربر ارشد (superuser) (یا همان کاربری که مالک تمام اشیاء موجود در اسکریپت است) برقرار شده باشد\&. با \fB\-O\fR، می‌توان از هر نام کاربری برای اتصال اولیه استفاده کرد و این کاربر مالک تمام اشیاء ایجادشده خواهد بود\&. .RE .PP \fB\-P \fR\fB\fIfunction\-name(argtype [, \&.\&.\&.])\fR\fR .br \fB\-\-function=\fR\fB\fIfunction\-name(argtype [, \&.\&.\&.])\fR\fR .RS 4 تنها تابع نام‌برده را بازیابی می‌کند\&. دقت کنید که نام تابع و آرگومان‌های آن را دقیقاً همان‌طور که در فهرست مندرجات فایل دامپ آمده‌اند وارد نمایید\&. چندین تابع را می‌توان با چند سوئیچ \fB\-P\fR مشخص کرد\&. .RE .PP \fB\-R\fR .br \fB\-\-no\-reconnect\fR .RS 4 این گزینه منسوخ شده است اما برای سازگاری با نسخه‌های پیشین همچنان پذیرفته می‌شود\&. .RE .PP \fB\-s\fR .br \fB\-\-schema\-only\fR .RS 4 تنها طرح‌واره (تعاریف داده‌ها) و نه داده‌ها را، تا جایی که مدخل‌های طرح‌واره در بایگانی موجود باشند، بازیابی می‌کند\&. .sp این گزینه نمی‌تواند همراه با \fB\-\-data\-only\fR یا \fB\-\-statistics\-only\fR استفاده شود\&. این گزینه مشابه است با، اما بنا به دلایل تاریخی دقیقاً یکسان نیست با، مشخص کردن \fB\-\-section=pre\-data \-\-section=post\-data \-\-no\-statistics\fR\&. .sp (این گزینه را با گزینهٔ \fB\-\-schema\fR اشتباه نگیرید، که از کلمهٔ \(lqschema\(rq با معنایی متفاوت استفاده می‌کند\&.) .RE .PP \fB\-S \fR\fB\fIusername\fR\fR .br \fB\-\-superuser=\fR\fB\fIusername\fR\fR .RS 4 نام کاربری کاربر ارشد (superuser) را برای استفاده هنگام غیرفعال‌سازی تریگرها مشخص می‌کند\&. این گزینه فقط در صورتی کاربرد دارد که \fB\-\-disable\-triggers\fR به کار رفته باشد\&. .RE .PP \fB\-t \fR\fB\fItable\fR\fR .br \fB\-\-table=\fR\fB\fItable\fR\fR .RS 4 تعریف و/یا داده‌های تنها جدول نام‌برده را بازیابی می‌کند\&. برای این منظور، \(lqtable\(rq شامل نماها (views)، نماهای مادی‌شده (materialized views)، توالی‌ها (sequences) و جدول‌های خارجی (foreign tables) نیز می‌شود\&. با درج چندین سوئیچ \fB\-t\fR می‌توان چندین جدول را انتخاب کرد\&. این گزینه می‌تواند با گزینهٔ \fB\-n\fR برای مشخص کردن جدول(ها) در یک طرح‌وارهٔ خاص ترکیب شود\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br هنگامی که \fB\-t\fR مشخص شده باشد، pg_restore هیچ تلاشی برای بازیابی سایر اشیاء پایگاه‌داده که جدول(های) انتخاب‌شده ممکن است به آن‌ها وابسته باشند، نمی‌کند\&. بنابراین، هیچ تضمینی وجود ندارد که بازیابی یک جدول خاص در یک پایگاه‌دادهٔ خالی با موفقیت همراه باشد\&. .sp .5v .RE .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br رفتار این پرچم دقیقاً مشابه پرچم \fB\-t\fR دستور pg_dump نیست\&. در حال حاضر هیچ سازوکاری برای تطبیق نویسه‌های عمومی (wildcard) در pg_restore وجود ندارد، و همچنین نمی‌توانید نام طرح‌واره را درون \fB\-t\fR آن درج کنید\&. افزون بر این، در حالی که پرچم \fB\-t\fR دستور pg_dump اشیاء فرعی و وابسته (مانند ایندکس‌ها) جدول(های) انتخاب‌شده را نیز دامپ می‌کند، پرچم \fB\-t\fR دستور pg_restore شامل چنین اشیاء فرعی نمی‌شود\&. .sp .5v .RE .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br در نسخه‌های پیش از PostgreSQL 9\&.6، این پرچم تنها با جدول‌ها مطابقت داشت، نه با هیچ نوع رابطهٔ (relation) دیگر\&. .sp .5v .RE .RE .PP \fB\-T \fR\fB\fItrigger\fR\fR .br \fB\-\-trigger=\fR\fB\fItrigger\fR\fR .RS 4 تنها تریگرِ نام‌برده را بازیابی می‌کند\&. چندین تریگر را می‌توان با چند سوئیچ \fB\-T\fR مشخص کرد\&. .RE .PP \fB\-v\fR .br \fB\-\-verbose\fR .RS 4 حالت پرگو (verbose) را فعال می‌کند\&. این باعث می‌شود pg_restore توضیحات تفصیلی اشیاء و زمان‌های شروع/پایان را در فایل خروجی، و پیام‌های پیشرفت کار را در خطای استاندارد بنویسد\&. تکرار این گزینه سبب نمایش پیام‌های سطح اشکال‌زدایی (debug) بیشتر در خطای استاندارد می‌شود\&. .RE .PP \fB\-V\fR .br \fB\-\-version\fR .RS 4 نسخهٔ pg_restore را چاپ کرده و خارج می‌شود\&. .RE.PP \fB\-x\fR .br \fB\-\-no\-privileges\fR .br \fB\-\-no\-acl\fR .RS 4 از بازیابی امتیازات دسترسی (دستورهای grant/revoke) جلوگیری می‌کند\&. .RE .PP \fB\-1\fR .br \fB\-\-single\-transaction\fR .RS 4 بازیابی را به عنوان یک تراکنش واحد اجرا می‌کند (یعنی دستورهای صادرشده را درون \fBBEGIN\fR/\fBCOMMIT\fR قرار می‌دهد)\&. این امر تضمین می‌کند که یا همه دستورها با موفقیت به پایان برسند، یا هیچ تغییری اعمال نشود\&. این گزینه به‌طور ضمنی شامل \fB\-\-exit\-on\-error\fR است\&. .RE .PP \fB\-\-disable\-triggers\fR .RS 4 این گزینه تنها هنگام انجام بازیابی بدون طرحواره (schema) کاربرد دارد\&. این گزینه به pg_restore دستور می‌دهد که در حین بازیابی داده‌ها، دستورهایی را برای غیرفعال کردن موقت تریگرها روی جدول‌های هدف اجرا کند\&. اگر بررسی‌های یکپارچگی ارجاعی یا تریگرهای دیگری روی جدول‌ها دارید که مایل نیستید در طول بازیابی داده‌ها فراخوانی شوند، از این گزینه استفاده کنید\&. .sp در حال حاضر، دستورهای صادرشده برای \fB\-\-disable\-triggers\fR باید توسط مدیر سیستم (superuser) اجرا شوند\&. بنابراین باید نام یک superuser را با \fB\-S\fR مشخص کنید یا، ترجیحاً، pg_restore را به عنوان یک superuser در PostgreSQL اجرا نمایید\&. .RE .PP \fB\-\-enable\-row\-security\fR .RS 4 این گزینه تنها هنگام بازیابی محتوای جدولی که دارای امنیت در سطح سطر (row security) است کاربرد دارد\&. به‌طور پیش‌فرض، pg_restore مقدار row_security را روی off تنظیم می‌کند تا مطمئن شود تمام داده‌ها در جدول بازیابی می‌شوند\&. اگر کاربر امتیازات کافی برای دور زدن row security را نداشته باشد، خطایی صادر می‌شود\&. این پارامتر به pg_restore دستور می‌دهد که به جای آن، row_security را روی on تنظیم کند و به کاربر اجازه دهد تا بازیابی محتوای جدول را با فعال بودن row security امتحان کند\&. در صورتی که کاربر دسترسی لازم برای درج سطرهای موجود در فایل پشتیبان را به جدول نداشته باشد، این عملیات ممکن است همچنان با شکست مواجه شود\&. .sp توجه داشته باشید که این گزینه در حال حاضر نیازمند این است که فایل پشتیبان در قالب \fBINSERT\fR باشد، زیرا \fBCOPY FROM\fR از row security پشتیبانی نمی‌کند\&. .RE .PP \fB\-\-filter=\fR\fB\fIfilename\fR\fR .RS 4 نام فایلی را مشخص می‌کند که الگوهای مربوط به اشیاء مستثنی یا گنجانده‌شده در بازیابی از آن خوانده شود\&. این الگوها طبق همان قواعد \fB\-n\fR/\fB\-\-schema\fR برای گنجاندن اشیاء در طرحواره‌ها، \fB\-N\fR/\fB\-\-exclude\-schema\fR برای مستثنی کردن اشیاء در طرحواره‌ها، \fB\-P\fR/\fB\-\-function\fR برای بازیابی توابع مشخص‌شده، \fB\-I\fR/\fB\-\-index\fR برای بازیابی نمایه‌های (indexes) مشخص‌شده، \fB\-t\fR/\fB\-\-table\fR برای بازیابی جدول‌های مشخص‌شده یا \fB\-T\fR/\fB\-\-trigger\fR برای بازیابی تریگرها تفسیر می‌شوند\&. برای خواندن از STDIN، از \- به عنوان نام فایل استفاده کنید\&. گزینه \fB\-\-filter\fR می‌تواند همراه با گزینه‌های ذکر شده در بالا برای گنجاندن یا مستثنی کردن اشیاء مشخص شود، و همچنین می‌توان آن را چندین بار برای تعیین چندین فایل فیلتر به کار برد\&. .sp این فایل در هر سطر یک الگوی پایگاه داده را با قالب زیر فهرست می‌کند: .sp .if n \{\ .RS 4 .\} .nf { include | exclude } { function | index | schema | table | trigger } \fIPATTERN\fR .fi .if n \{\ .RE .\} .sp نخستین کلیدواژه مشخص می‌کند که آیا اشیاء منطبق با الگو باید گنجانده (include) یا مستثنی (exclude) شوند\&. کلیدواژه دوم نوع شیء مورد نظر برای فیلتر شدن با الگو را تعیین می‌کند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} function: توابع؛ مانند گزینه \fB\-P\fR/\fB\-\-function\fR عمل می‌کند\&. این کلیدواژه تنها همراه با کلیدواژه include قابل استفاده است\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} index: نمایه‌ها؛ مانند گزینه \fB\-I\fR/\fB\-\-indexes\fR عمل می‌کند\&. این کلیدواژه تنها همراه با کلیدواژه include قابل استفاده است\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} schema: طرحواره‌ها؛ مانند گزینه‌های \fB\-n\fR/\fB\-\-schema\fR و \fB\-N\fR/\fB\-\-exclude\-schema\fR عمل می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} table: جدول‌ها؛ مانند گزینه \fB\-t\fR/\fB\-\-table\fR عمل می‌کند\&. این کلیدواژه تنها همراه با کلیدواژه include قابل استفاده است\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} trigger: تریگرها؛ مانند گزینه \fB\-T\fR/\fB\-\-trigger\fR عمل می‌کند\&. این کلیدواژه تنها همراه با کلیدواژه include قابل استفاده است\&. .RE .sp سطرهایی که با # آغاز می‌شوند به عنوان یادداشت (کامنت) تلقی شده و نادیده گرفته می‌شوند\&. همچنین می‌توان کامنت‌ها را بعد از یک سطر الگوی شیء قرار داد\&. سطرهای خالی نیز نادیده گرفته می‌شوند\&. برای آگاهی از نحوه نقل‌قول کردن (quoting) در الگوها، بخش Patterns را مشاهده کنید\&. .RE .PP \fB\-\-if\-exists\fR .RS 4 از دستورهای DROP \&.\&.\&. IF EXISTS برای حذف اشیاء در حالت \fB\-\-clean\fR استفاده می‌کند\&. این کار خطاهای \(lqdoes not exist\(rq را که ممکن است در غیر این صورت گزارش شوند سرکوب می‌کند\&. این گزینه معتبر نیست مگر اینکه \fB\-\-clean\fR نیز مشخص شده باشد\&. .RE.PP \fB\-\-no\-comments\fR .RS 4 دستورات بازیابی توضیحات (comments) را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-data\fR .RS 4 دستورات بازیابی داده‌ها را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-data\-for\-failed\-tables\fR .RS 4 به‌طور پیش‌فرض، داده‌های جدول بازیابی می‌شوند حتی اگر دستور ایجاد جدول با شکست مواجه شده باشد (به‌عنوان مثال، به این دلیل که از قبل وجود دارد)\&. با این گزینه، از داده‌های چنین جدولی صرف‌نظر می‌شود\&. این رفتار زمانی مفید است که پایگاه داده مقصد از قبل شامل محتویات مورد نظر جدول باشد\&. به عنوان مثال، ممکن است جدول‌های کمکی برای افزونه‌های PostgreSQL مانند PostGIS از قبل در پایگاه داده مقصد بارگذاری شده باشند؛ مشخص کردن این گزینه از بارگذاری داده‌های تکراری یا منسوخ در آن‌ها جلوگیری می‌کند\&. .sp این گزینه تنها زمانی مؤثر است که بازیابی مستقیماً در یک پایگاه داده انجام شود، نه هنگام تولید خروجی اسکریپت SQL\&. .RE .PP \fB\-\-no\-policies\fR .RS 4 دستورات بازیابی سیاست‌های امنیتی سطری (row security policies) را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-publications\fR .RS 4 دستورات بازیابی انتشارات (publications) را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-schema\fR .RS 4 دستورات بازیابی شِما (تعاریف داده) را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-security\-labels\fR .RS 4 دستورات بازیابی برچسب‌های امنیتی را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-statistics\fR .RS 4 دستورات بازیابی آمارها (statistics) را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-subscriptions\fR .RS 4 دستورات بازیابی اشتراک‌ها (subscriptions) را در خروجی قرار نده، حتی اگر بایگانی شامل آن‌ها باشد\&. .RE .PP \fB\-\-no\-table\-access\-method\fR .RS 4 دستوراتی برای انتخاب روش‌های دسترسی به جدول (table access methods) در خروجی قرار نده\&. با این گزینه، تمام اشیاء با هر روش دسترسی به جدولی که در حین بازیابی پیش‌فرض است ایجاد خواهند شد\&. .RE .PP \fB\-\-no\-tablespaces\fR .RS 4 دستوراتی برای انتخاب tablespaceها در خروجی قرار نده\&. با این گزینه، تمام اشیاء در هر tablespaceای که در حین بازیابی پیش‌فرض است ایجاد خواهند شد\&. .RE .PP \fB\-\-restrict\-key=\fR\fB\fIrestrict_key\fR\fR .RS 4 از رشته ارائه شده به عنوان کلید \fB\erestrict\fR در psql برای خروجی dump استفاده کن\&. این مورد تنها می‌تواند برای خروجی اسکریپت SQL مشخص شود، یعنی زمانی که گزینه \fB\-\-file\fR استفاده شده باشد\&. اگر هیچ کلید محدودیتی مشخص نشده باشد، pg_restore در صورت نیاز یک کلید تصادفی تولید خواهد کرد\&. کلیدها ممکن است فقط شامل نویسه‌های الفبایی‌عددی باشند\&. .sp این گزینه عمدتاً برای اهداف آزمایشی و دیگر سناریوهایی که به خروجی تکرارپذیر نیاز دارند (مانند مقایسه فایل‌های dump) در نظر گرفته شده است\&. استفاده عمومی از آن توصیه نمی‌شود، زیرا یک سرور مخرب با آگاهی قبلی از کلید ممکن است قادر به تزریق کد دلخواهی باشد که روی ماشینی که psql را با خروجی dump اجرا می‌کند، اجرا خواهد شد\&. .RE .PP \fB\-\-section=\fR\fB\fIsectionname\fR\fR .RS 4 تنها بخش نام‌برده‌شده را بازیابی کن\&. نام بخش می‌تواند \fBpre\-data\fR، \fBdata\fR یا \fBpost\-data\fR باشد\&. این گزینه می‌تواند بیش از یک بار مشخص شود تا چندین بخش انتخاب شوند\&. حالت پیش‌فرض بازیابی تمام بخش‌ها است\&. .sp بخش data شامل داده‌های واقعی جدول و همچنین تعاریف اشیاء بزرگ (large-object) است\&. موارد post-data شامل تعاریف نمایه‌ها (indexes)، تریگرها (triggers)، قوانین (rules) و قیود (constraints) به غیر از قیود اعتبارسنجی‌شده‌ی check است\&. موارد pre-data شامل تمامی موارد دیگر تعریف داده است\&. .RE .PP \fB\-\-statistics\fR .RS 4 در صورتی که بایگانی حاوی آمارها (statistics) باشد، دستورات بازیابی آن‌ها را در خروجی قرار بده\&. این حالت پیش‌فرض است\&. .RE .PP \fB\-\-statistics\-only\fR .RS 4 تنها آمارها را بازیابی کن، نه شِما (تعاریف داده) یا داده‌ها را\&. .RE .PP \fB\-\-strict\-names\fR .RS 4 الزام می‌کند که هر مشخص‌کننده‌ی شِما (\fB\-n\fR/\fB\-\-schema\fR) و جدول (\fB\-t\fR/\fB\-\-table\fR) حداقل با یک شِما/جدول در فایل در حال بازیابی مطابقت داشته باشد\&. .RE .PP \fB\-\-transaction\-size=\fR\fB\fIN\fR\fR .RS 4 بازیابی را به صورت مجموعه‌ای از تراکنش‌ها اجرا کن که هر کدام حداکثر تا \fIN\fR شیء پایگاه داده را پردازش می‌کنند\&. این گزینه مستلزم \fB\-\-exit\-on\-error\fR است\&. .sp گزینه \fB\-\-transaction\-size\fR انتخابی بینابینی میان رفتار پیش‌فرض (یک تراکنش به ازای هر دستور SQL) و \fB\-1\fR/\fB\-\-single\-transaction\fR (یک تراکنش برای تمام اشیاء بازیابی‌شده) ارائه می‌دهد\&. در حالی که \fB\-\-single\-transaction\fR کمترین بار اضافی (overhead) را دارد، ممکن است برای پایگاه‌های داده بزرگ غیرعملی باشد زیرا تراکنش روی هر شیء بازیابی‌شده یک قفل می‌گیرد که این امر احتمالاً فضای جدول قفل (lock table space) سرور را به اتمام می‌رساند\&. استفاده از \fB\-\-transaction\-size\fR با اندازه‌ای در حدود چند هزار شیء، تقریباً همان مزایای عملکردی را فراهم می‌کند و در عین حال میزان فضای مورد نیاز جدول قفل را محدود می‌سازد\&. .RE .PP \fB\-\-use\-set\-session\-authorization\fR .RS 4 برای تعیین مالکیت شیء، به جای دستورات \fBALTER OWNER\fR، دستورات استاندارد SQL یعنی \fBSET SESSION AUTHORIZATION\fR را در خروجی قرار بده\&. این کار dump را با استانداردها سازگارتر می‌کند، اما بسته به پیشینه اشیاء درون dump، ممکن است به درستی بازیابی نشود\&. .RE .PP \fB\-?\fR .br \fB\-\-help\fR .RS 4 نمایش راهنما درباره آرگومان‌های خط فرمان pg_restore و خروج\&. .RE .PP ابزار pg_restore همچنین آرگومان‌های خط فرمان زیر را برای پارامترهای اتصال می‌پذیرد: .PP \fB\-h \fR\fB\fIhost\fR\fR .br \fB\-\-host=\fR\fB\fIhost\fR\fR .RS 4 نام میزبان ماشینی که سرور روی آن در حال اجرا است را مشخص می‌کند\&. اگر مقدار با یک ممیز (اسلش) شروع شود، به عنوان دایرکتوری برای Unix domain socket استفاده می‌شود\&. مقدار پیش‌فرض در صورت تنظیم بودن، از متغیر محیطی \fBPGHOST\fR گرفته می‌شود، وگرنه یک اتصال با Unix domain socket امتحان خواهد شد\&. .RE .PP \fB\-p \fR\fB\fIport\fR\fR .br \fB\-\-port=\fR\fB\fIport\fR\fR .RS 4 پورت TCP یا پسوند فایل Unix domain socket محلی که سرور روی آن به اتصالات گوش می‌دهد را مشخص می‌کند\&. پیش‌فرض آن در صورت تنظیم بودن، متغیر محیطی \fBPGPORT\fR است، یا مقدار پیش‌فرضی که حین کامپایل تعیین شده است\&. .RE .PP \fB\-U \fR\fB\fIusername\fR\fR .br \fB\-\-username=\fR\fB\fIusername\fR\fR .RS 4 نام کاربری برای اتصال\&. .RE .PP \fB\-w\fR .br \fB\-\-no\-password\fR .RS 4 هرگز درخواست رمز عبور را نمایش نده\&. اگر سرور نیازمند احراز هویت با رمز عبور باشد و رمز عبور از راه‌های دیگر مانند یک فایل \&.pgpass در دسترس نباشد، تلاش برای برقراری اتصال با شکست مواجه خواهد شد\&. این گزینه می‌تواند در کارهای دسته‌ای (batch jobs) و اسکریپت‌هایی که کاربری برای وارد کردن رمز عبور حضور ندارد، مفید باشد\&. .RE .PP \fB\-W\fR .br \fB\-\-password\fR .RS 4 اجبار pg_restore به درخواست رمز عبور پیش از اتصال به یک پایگاه داده\&. .RE.sp این گزینه هرگز ضروری نیست، زیرا اگر سرور خواستار احراز هویت با گذرواژه باشد، pg_restore به‌طور خودکار گذرواژه را درخواست خواهد کرد\&. با این حال، pg_restore یک تلاش برای برقراری اتصال را صرف پی بردن به نیاز سرور به گذرواژه تلف خواهد کرد\&. در برخی موارد، برای جلوگیری از تلاش اتصال اضافی، وارد کردن \fB\-W\fR ارزشش را دارد\&. .RE .PP \fB\-\-role=\fR\fB\fIrolename\fR\fR .RS 4 نام نقشی را که برای انجام بازیابی استفاده می‌شود، مشخص می‌کند\&. این گزینه باعث می‌شود که pg_restore پس از اتصال به پایگاه داده، دستور \fBSET ROLE\fR \fIrolename\fR را صادر کند\&. این گزینه زمانی مفید است که کاربر احراز هویت‌شده (مشخص‌شده با \fB\-U\fR) فاقد امتیازات لازم برای pg_restore باشد، اما بتواند به نقشی با اختیارات مورد نیاز جابه‌جا شود\&. برخی از سامانه‌ها سیاستی علیه ورود مستقیم به عنوان مدیر سیستم دارند، و استفاده از این گزینه امکان انجام بازیابی را بدون نقض این سیاست فراهم می‌کند\&. .RE .SH "محیط (ENVIRONMENT)" .PP \fBPGHOST\fR .br \fBPGOPTIONS\fR .br \fBPGPORT\fR .br \fBPGUSER\fR .RS 4 پارامترهای اتصال پیش‌فرض .RE .PP \fBPG_COLOR\fR .RS 4 مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر\&. مقادیر ممکن عبارتند از always، auto و never\&. .RE .PP این ابزار، مانند بیشتر ابزارهای دیگر PostgreSQL، از متغیرهای محیطی پشتیبانی‌شده توسط libpq نیز استفاده می‌کند (بخش\ \&32.15 را ببینید)\&. با این حال، در صورتی که نام پایگاه داده ارائه نشده باشد، \fBPGDATABASE\fR را نمی‌خواند\&. .SH "خطاها (DIAGNOSTICS)" .PP هنگامی که یک اتصال مستقیم به پایگاه داده با استفاده از گزینهٔ \fB\-d\fR مشخص می‌شود، pg_restore دروناً دستورات SQL را اجرا می‌کند\&. اگر در اجرای pg_restore مشکلی دارید، مطمئن شوید که می‌توانید با استفاده از، برای مثال، \fBpsql\fR(1) اطلاعاتی را از پایگاه داده واکشی کنید\&. همچنین، هرگونه تنظیمات پیش‌فرض اتصال و متغیرهای محیطی مورد استفاده توسط کتابخانهٔ کلاینت libpq اعمال خواهند شد\&. .SH "نکات (NOTES)" .PP اگر در نصب شما هرگونه مورد محلی به پایگاه دادهٔ template1 افزوده شده است، دقت کنید که خروجی pg_restore را درون یک پایگاه دادهٔ واقعاً خالی بارگذاری نمایید؛ در غیر این صورت احتمالاً به دلیل تعاریف تکراری اشیاء افزوده‌شده با خطا مواجه خواهید شد\&. برای ساخت یک پایگاه دادهٔ خالی بدون هیچ‌گونه افزودهٔ محلی، به جای template1 از template0 نسخه‌برداری کنید، برای نمونه: .sp .if n \{\ .RS 4 .\} .nf CREATE DATABASE foo WITH TEMPLATE template0; .fi .if n \{\ .RE .\} .PP محدودیت‌های pg_restore در زیر با جزئیات آمده است\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} هنگام بازیابی داده‌ها به یک جدول از پیش موجود و در صورت استفاده از گزینهٔ \fB\-\-disable\-triggers\fR، pg_restore پیش از درج داده‌ها، دستوراتی را برای غیرفعال کردن تریگرها روی جداول کاربر صادر می‌کند، سپس دستوراتی برای فعال‌سازی مجدد آن‌ها پس از درج داده‌ها صادر می‌نماید\&. اگر بازیابی در میانهٔ کار متوقف شود، کاتالوگ‌های سیستم ممکن است در وضعیتی نادرست رها شوند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} pg_restore نمی‌تواند اشیاء بزرگ (large objects) را به‌طور گزینشی بازیابی کند؛ برای نمونه، فقط مواردی را که متعلق به یک جدول خاص هستند\&. اگر یک بایگانی شامل اشیاء بزرگ باشد، تمام اشیاء بزرگ بازیابی خواهند شد، یا در صورتی که از طریق گزینه‌های \fB\-L\fR، \fB\-t\fR یا سایر گزینه‌ها مستثنی شده باشند، هیچ‌کدام بازیابی نمی‌شوند\&. .RE .PP همچنین برای جزئیات بیشتر دربارهٔ محدودیت‌های pg_dump، مستندات \fBpg_dump\fR(1) را ببینید\&. .PP به‌طور پیش‌فرض، اگر آمارهای بهینه‌ساز در فایل روگرفت (dump) موجود باشند، \fBpg_restore\fR آن‌ها را بازیابی خواهد کرد\&. اگر همهٔ آمارها بازیابی نشدند، ممکن است اجرای \fBANALYZE\fR روی هر جدول بازیابی‌شده مفید باشد تا بهینه‌ساز به آمارهای سودمندی دسترسی داشته باشد؛ برای اطلاعات بیشتر به بخش\ \&24.1.3 و بخش\ \&24.1.6 مراجعه کنید\&..SH "مثال‌ها (EXAMPLES)" .PP فرض کنید از پایگاه داده‌ای به نام mydb در یک فایل دامپ با قالب سفارشی (custom\-format) خروجی گرفته‌ایم: .sp .if n \{\ .RS 4 .\} .nf $ \fBpg_dump \-Fc mydb > db\&.dump\fR .fi .if n \{\ .RE .\} .PP برای حذف پایگاه داده و ایجاد مجدد آن از فایل دامپ: .sp .if n \{\ .RS 4 .\} .nf $ \fBdropdb mydb\fR $ \fBpg_restore \-C \-d postgres db\&.dump\fR .fi .if n \{\ .RE .\} .sp پایگاه داده مشخص‌شده در سوییچ \fB\-d\fR می‌تواند هر پایگاه داده موجود در کلاستر باشد؛ pg_restore تنها از آن برای صدور دستور \fBCREATE DATABASE\fR برای mydb استفاده می‌کند\&. با گزینه \fB\-C\fR، داده‌ها همیشه در پایگاه داده‌ای با نام درج‌شده در فایل دامپ بازیابی می‌شوند\&. .PP برای بازیابی فایل دامپ در یک پایگاه داده جدید به نام newdb: .sp .if n \{\ .RS 4 .\} .nf $ \fBcreatedb \-T template0 newdb\fR $ \fBpg_restore \-d newdb db\&.dump\fR .fi .if n \{\ .RE .\} .sp توجه داشته باشید که از \fB\-C\fR استفاده نمی‌کنیم و در عوض مستقیماً به پایگاه داده‌ای متصل می‌شویم که قرار است داده‌ها در آن بازیابی شوند\&. همچنین توجه داشته باشید که پایگاه داده جدید را از روی template0 شبیه‌سازی می‌کنیم، نه template1، تا اطمینان حاصل شود که در ابتدا کاملاً خالی است\&. .PP برای تغییر ترتیب آیتم‌های پایگاه داده، ابتدا لازم است فهرست محتویات (table of contents) آرشیو استخراج شود: .sp .if n \{\ .RS 4 .\} .nf $ \fBpg_restore \-l db\&.dump > db\&.list\fR .fi .if n \{\ .RE .\} .sp فایل فهرست شامل یک سربرگ و یک خط برای هر آیتم است؛ برای مثال: .sp .if n \{\ .RS 4 .\} .nf ; ; Archive created at Mon Sep 14 13:55:39 2009 ; dbname: DBDEMOS ; TOC Entries: 81 ; Compression: 9 ; Dump Version: 1\&.10\-0 ; Format: CUSTOM ; Integer: 4 bytes ; Offset: 8 bytes ; Dumped from database version: 8\&.3\&.5 ; Dumped by pg_dump version: 8\&.3\&.8 ; ; ; Selected TOC Entries: ; 3; 2615 2200 SCHEMA \- public pasha 1861; 0 0 COMMENT \- SCHEMA public pasha 1862; 0 0 ACL \- public pasha 317; 1247 17715 TYPE public composite pasha 319; 1247 25899 DOMAIN public domain0 pasha .fi .if n \{\ .RE .\} .sp علامت‌های نقطه‌ویرگول (;) نشان‌دهنده کامنت هستند و اعداد ابتدای خطوط به شناسه داخلی آرشیو (internal archive ID) اختصاص‌یافته به هر آیتم اشاره دارند\&. .PP خطوط درون فایل را می‌توان کامنت کرد، حذف نمود و ترتیب آن‌ها را تغییر داد\&. برای مثال: .sp .if n \{\ .RS 4 .\} .nf 10; 145433 TABLE map_resolutions postgres ;2; 145344 TABLE species postgres ;4; 145359 TABLE nt_header postgres 6; 145402 TABLE species_records postgres ;8; 145416 TABLE ss_old postgres .fi .if n \{\ .RE .\} .sp می‌تواند به عنوان ورودی برای pg_restore استفاده شود و تنها آیتم‌های 10 و 6 را با همان ترتیب بازیابی خواهد کرد: .sp .if n \{\ .RS 4 .\} .nf $ \fBpg_restore \-L db\&.list db\&.dump\fR .fi .if n \{\ .RE .\}.SH "همچنین ببینید (SEE ALSO)" \fBpg_dump\fR(1), \fBpg_dumpall\fR(1), \fBpsql\fR(1)