| DUPLICITY(1) | User Manuals | DUPLICITY(1) |
نام (NAME)
duplicity - پشتیبانگیری افزایشی رمزگذاریشده در فضای ذخیرهسازی محلی یا دوردست
خلاصه دستور (SYNOPSIS)
برای توضیحات تفصیلی پیرامون هر عمل، بخش ACTIONS را ببینید.
duplicity [backup|full|incremental] [options] source_directory target_url
duplicity verify [options] [--compare-data] [--path-to-restore <relpath>] [--time time] source_url target_directory
duplicity collection-status [options] [--file-changed <relpath>] [--show-changes-in-set <index>] [--jsonstat] target_url
duplicity list-current-files [options] [--time time] target_url
duplicity [restore] [options] [--path-to-restore <relpath> | file selection options] [--time time] source_url target_directory
duplicity remove-older-than <time> [options] [--force] target_url
duplicity remove-all-but-n-full <count> [options] [--force] target_url
duplicity remove-all-inc-of-but-n-full <count> [options] [--force] target_url
duplicity cleanup [options] [--force] target_url
توضیحات (DESCRIPTION)
برنامهٔ duplicity به صورت افزایشی از فایلها و پوشهها در قالب حجمهایی با فرمت tar که با GnuPG رمزگذاری شدهاند نسخهٔ پشتیبان تهیه کرده و آنها را در یک بستر ذخیرهسازی دوردست (یا محلی) قرار میدهد. برای فهرستی از تمام بسترهای پشتیبانیشده و نحوهٔ آدرسدهی آنها، بخش URL FORMAT را ببینید. از آنجا که duplicity از librsync استفاده میکند، پشتیبانگیریهای افزایشی از نظر مصرف فضا بهینه هستند و تنها بخشهایی از فایلها را که از زمان آخرین پشتیبانگیری تغییر کردهاند ثبت میکنند. در حال حاضر duplicity از فایلهای حذفشده، مجوزهای کامل یونیکس، uid/gid، دایرکتوریها، پیوندهای نمادین، fifos و غیره پشتیبانی میکند، اما از پیوندهای سخت پشتیبانی نمیکند.
اگر از دایرکتوری ریشه / پشتیبان میگیرید، به یاد داشته باشید که /proc را با --exclude مستثنی کنید، در غیر این صورت احتمالاً duplicity به دلیل موارد نامتعارف موجود در آن متوقف خواهد شد.
مثالها (EXAMPLES)
در اینجا نمونهای از یک پشتیبانگیری آورده شده است که با استفاده از sftp از /home/me در some_dir روی ماشین other.host پشتیبان تهیه میکند:
اگر دستور بالا به طور مکرر اجرا شود، اولین بار یک پشتیبان کامل (full) خواهد بود و دفعات بعد به صورت افزایشی (incremental) انجام میشوند. برای اجبار به تهیهٔ یک پشتیبان کامل، از عمل full استفاده کنید:
یا اجبار به تهیهٔ پشتیبان کامل پس از دورههای مشخص با --full-if-older-than <time> ، برای نمونه یک پشتیبان کامل در هر ماه:
اکنون فرض کنید تصادفاً /home/me را حذف کردهایم و میخواهیم آن را به همان صورتی که در زمان آخرین پشتیبانگیری بود بازیابی کنیم:
برنامهٔ duplicity وارد حالت بازیابی میشود چرا که URL پیش از دایرکتوری محلی قرار گرفته است. اگر بخواهیم تنها فایل “Mail/article” را در /home/me به همان شکلی که سه روز پیش بود در /home/me/restored_file بازیابی کنیم:
عمل زیر آخرین پشتیبان را با فایلهای فعلی مقایسه میکند:
در نهایت، duplicity چندین گزینهٔ گنجاندن/مستثنی کردن (include/exclude) را میشناسد. برای نمونه، دستور زیر از دایرکتوری ریشه پشتیبان تهیه میکند، اما /mnt، /tmp و /proc را مستثنی میسازد:
توجه داشته باشید که در این حالت مقصد، دایرکتوری محلی /usr/local/backup است. دستور زیر تنها از دایرکتوریهای /home و /etc در ریشه پشتیبان میگیرد:
همچنین duplicity میتواند از طریق ftp به یک مخزن دسترسی پیدا کند. اگر نام کاربری مشخص شده باشد، متغیر محیطی BACKEND_PASSWORD برای تعیین گذرواژه خوانده میشود:
عملیاتهای 'backup' یا 'restore' میتوانند بهطور ضمنی از ترتیب قرارگیری مسیر محلی و url دوردست استنباط شوند. سایر عملیاتها باید بهصورت صریح مشخص گردند. برای موارد نادری که مسیر محلی ممکن است نام یک عملیات معتبر duplicity باشد، میتوانید یک '/' به انتهای نام مسیر محلی اضافه کنید تا دیگر با یک عملیات اشتباه گرفته نشود.
نکته: توضیحات زیر برخی از گزینههایی را که میتوان در ارتباط با آن عملیات استفاده کرد شرح میدهند، اما نه همهٔ آنها را. برای توضیحات دقیقتر به بخش گزینهها (OPTIONS) مراجعه کنید.
- backup, bu <folder> <url>
- انجام یک پشتیبانگیری. Duplicity اگر امضاهای قدیمی یافت شوند بهطور خودکار یک پشتیبانگیری افزایشی انجام میدهد. در غیر این صورت یک زنجیرهٔ پشتیبانگیری جدید آغاز میشود.
- full, fb <folder> <url>
- انجام یک پشتیبانگیری کامل. حتی اگر امضاها برای یک پشتیبانگیری افزایشی در دسترس باشند، یک زنجیرهٔ پشتیبانگیری جدید آغاز میشود.
- incremental, ib <folder> <url>
- در صورت درخواست، یک پشتیبانگیری افزایشی انجام خواهد شد. اگر هیچ امضای قدیمی یافت نشود، Duplicity لغو خواهد شد.
- verify, vb [--compare-data] [--time <time>] [--path-to-restore <rel_path>] <url> <local_path>
- عملیات verify
یکپارچگی
آرشیوهای
پشتیبان را
در مکان
دوردست با
بارگیری هر
فایل و
بررسی
اینکه هم
بتواند
آرشیو را
بازیابی
کند و هم
فایل
بازیابیشده
با امضای آن
فایل که در
پشتیبان
ذخیره شده
مطابقت
داشته باشد
(یعنی فایل
آرشیوشده
را با مقدار
هش آن در
زمان آرشیو
مقایسه
میکند)،
آزمایش
مینماید. Verify
در واقع
بازیابی
انجام
نمیدهد و
هیچ فایل
محلی را
بازنویسی
نخواهد کرد.
Duplicity در صورتی
که هر فایلی
با امضای
ذخیرهشده
در آرشیو
برای آن
فایل
مطابقت
نداشته
باشد، با یک
سطح خطای
غیرصفر
خارج خواهد
شد. در سطح
پرگویی (verbosity) ۴
یا بالاتر،
پیامی برای
هر فایلی که
با امضای
ذخیرهشده
تفاوت دارد
ثبت میکند.
برای
مقایسهٔ
فایلها،
آنها باید
روی
رایانهٔ
محلی
بارگیری
شوند. Verify
نسخهٔ
پشتیبانگیریشدهٔ
فایل را با
نسخهٔ محلی
فعلی
فایلها
مقایسه
نمیکند،
مگر اینکه
گزینهٔ --compare-data
استفاده
شود (پایین
را ببینید).
گزینهٔ --path-to-restore عملیات verify را به آن فایل یا پوشه محدود میکند. گزینهٔ --time امکان انتخاب یک نسخهٔ پشتیبان برای اعتبارسنجی را فراهم میسازد. گزینهٔ --compare-data مقایسهٔ دادهها را فعال میکند (پایین را ببینید). - collection-status, st [--file-changed <relpath>] [--show-changes-in-set <index>] <url>
- وضعیت مخزن
پشتیبان را
با چاپ
زنجیرهها
و
مجموعههای
پیداشده، و
تعداد
حجمها در
هر یک خلاصه
میکند.
گزینهٔ --file-changed تغییرات فایل را (در جدیدترین زنجیرهٔ پشتیبانگیری) خلاصه میکند. گزینهٔ --show-changes-in-set تمام تغییرات فایل را در indexاُمین مجموعهٔ پشتیبان خلاصه میکند (که در آن index برابر 0 به معنای جدیدترین مجموعه، 1 به معنای مجموعه ماقبل آخر، و غیره است). گزینهٔ --jsonstat تغییرات را در قالب json چاپ میکند و در صورتی که پشتیبانها با --jsonstat ایجاد شده باشند، آمار را از فایلهای jsonstat نمایش میدهد. اگر <index> روی -1 تنظیم شود، آمار کل زنجیرهٔ پشتیبان چاپ میشود. - list-current-files, ls [--time <time>] <url>
- فهرست فایلهای موجود در تازهترین پشتیبان یا پشتیبان در زمان مشخصشده را نمایش میدهد. این اطلاعات از فایلهای امضا استخراج خواهد شد، نه از خود دادههای آرشیو. بنابراین نیازی به بارگیری کل آرشیو نیست، اما از سوی دیگر اگر آرشیو حذف شده یا آسیب دیده باشد، این عملیات آن را تشخیص نخواهد داد.
- restore, rb [--path-to-restore <relpath> | file selection options] [--time <time>] <url> <target_folder>
- میتوانید
همه چیز را
بهطور
کامل یا
پوشهها/فایلهای
انتخابشده
را از یک
زمان مشخص
بازیابی
کنید. از
مسیر نسبی
همانطور
که توسط
list-current-files چاپ
میشود
استفاده
کنید.
برای پالایش بازیابی مبتنی بر الگو، گزینههای انتخاب فایل مانند --include، --exclude، --include-regexp، و --exclude-regexp نیز مسیرها را نسبت به ریشهٔ آرشیو، همانطور که توسط list-current-files چاپ میشود، مطابقت میدهند. این گزینههای انتخاب فایل را نمیتوان با --path-to-restore ترکیب کرد. معمولاً نیازی به مشخص کردن این عملیات نیست زیرا duplicity هنگامی که تشخیص دهد URL پیش از پوشهٔ محلی آمده است، بهطور خودکار وارد حالت بازیابی میشود. - remove-older-than, ro <time> [--force] <url>
- حذف تمام مجموعههای پشتیبان که از زمان دادهشده قدیمیتر هستند. اگر مجموعههای پشتیبان جدیدتر از time به آنها وابسته باشند، مجموعههای پشتیبان قدیمی حذف نخواهند شد. برای اطلاعات بیشتر بخش قالبهای زمان (TIME FORMATS) را ببینید. توجه داشته باشید که این عملیات را نمیتوان با backup یا عملیاتهای دیگر مانند cleanup ترکیب کرد. همچنین توجه داشته باشید که --force برای حذف فایلها به جای صرفاً فهرست کردن آنها مورد نیاز خواهد بود.
- remove-all-but-n-full, ra <count> [--force] <url>
- حذف تمام مجموعههای پشتیبانی که از countاُمین پشتیبان کاملِ آخر قدیمیتر هستند (به عبارت دیگر، نگهداشتن count پشتیبان کامل آخر و مجموعههای افزایشی مرتبط با آنها). count باید بزرگتر از صفر باشد. مقدار 1 به این معنی است که تنها تازهترین زنجیرهٔ پشتیبان نگهداشته خواهد شد. توجه داشته باشید که --force برای حذف فایلها به جای صرفاً فهرست کردن آنها مورد نیاز خواهد بود.
- remove-all-inc-of-but-n-full, ri <count> [--force] <url>
- حذف مجموعههای افزایشی تمام مجموعههای پشتیبانی که از countاُمین پشتیبان کاملِ آخر قدیمیتر هستند (به عبارت دیگر، نگهداشتن تنها پشتیبانهای کامل قدیمی و نه افزایشیهای آنها). count باید بزرگتر از صفر باشد. مقدار 1 به این معنی است که تنها تازهترین زنجیرهٔ پشتیبان دستنخورده باقی خواهد ماند. توجه داشته باشید که --force برای حذف فایلها به جای صرفاً فهرست کردن آنها مورد نیاز خواهد بود.
- cleanup, cl [--force] <url>
- حذف فایلهای اضافه و زائد duplicity در backend مشخصشده. فایلهای غیر duplicity یا فایلهای موجود در مجموعههای دادهٔ کامل حذف نخواهند شد. این کار معمولاً تنها پس از آن لازم است که یک نشست duplicity با شکست مواجه شود یا پیش از موعد متوقف گردد. توجه داشته باشید که --force برای حذف فایلها به جای صرفاً فهرست کردن آنها مورد نیاز خواهد بود..SH "گزینهها (OPTIONS)"
- --allow-source-mismatch
- در صورت تلاش برای استفاده از همان دایرکتوری آرشیو یا backend دوردست برای پشتیبانگیری از دایرکتوریهای متفاوت، عملیات متوقف نمیشود. duplicity در صورت نیاز به این سوئیچ، به شما اطلاع خواهد داد.
- --archive-dir path
- دایرکتوری آرشیو.
هنگام پشتیبانگیری یا بازیابی، این گزینه مشخص میکند که دایرکتوری آرشیو محلی باید در path ایجاد شود. اگر دایرکتوری آرشیو مشخص نشود، پیشفرض این خواهد بود که دایرکتوری آرشیو در ~/.cache/duplicity/ ساخته شود.
دایرکتوری آرشیو میتواند بین پشتیبانگیریها برای چندین مقصد به اشتراک گذاشته شود، زیرا یک زیردایرکتوری از دایرکتوری آرشیو برای پشتیبانگیریهای اختصاصی استفاده میشود (گزینه --name را ببینید).
ترکیب دایرکتوری آرشیو و نام نسخه پشتیبان باید یکتا باشد تا دادههای پشتیبانگیریهای گوناگون تفکیک شوند.
اثر متقابل میان گزینههای --archive-dir و --name امکان چهار حالت ترکیبی مختلف را برای مکان دایرکتوری آرشیو فراهم میسازد:
- 1.
- هیچکدام
مشخص نشده
باشند
(پیشفرض)
~/.cache/duplicity/hash-of-url - 2.
- --archive-dir=/arch بدون --name
/arch/hash-of-url - 3.
- بدون --archive-dir با --name=foo
~/.cache/duplicity/foo - 4.
- --archive-dir=/arch با --name=foo
/arch/foo
- --asynchronous-upload
- (منسوخشده) این گزینه به دلیل ناپایداری منسوخ شده است. `--concurrency` جایگزین جدید آن است.
- --azure-blob-tier
- سطح ذخیرهسازی استاندارد (storage tier) مورد استفاده برای فایلهای پشتیبان (Hot|Cool|Cold|Archive).
- --azure-max-single-put-size
- بزرگترین اندازه بارگذاری پشتیبانیشده را مشخص میکند که در آن کتابخانه Azure تنها یک فراخوانی put انجام میدهد. اگر اندازه محتوا مشخص و کمتر از این مقدار باشد، کتابخانه Azure تنها یک درخواست put را برای بارگذاری یک بلوک اجرا خواهد کرد. انتظار میرود این عدد بر حسب بایت باشد.
- --azure-max-block-size
- اندازه بلوک مورد استفاده توسط کتابخانه Azure را برای بارگذاری blobها در صورتی که به چندین بلوک تقسیم شده باشند، مشخص میکند. حداکثر اندازه بلوکی که این سرویس پشتیبانی میکند 104857600 (100MiB) و مقدار پیشفرض 4194304 (4MiB) است.
- --azure-max-connections
- حداکثر تعداد اتصالات را برای انتقال یک blob به Azure در صورتی که اندازه blob از 64MB فراتر رود، مشخص میکند. مقدار پیشفرض 2 است.
- --b2-hide-files
- باعث میشود duplicity به جای حذف فایلها در B2، آنها را پنهان کند. در ترکیب با قوانین چرخه حیات (lifecycle rules) در B2 مفید است.
- --backend-retry-delay number
- تعداد ثانیههایی را مشخص میکند که duplicity پس از وقوع یک خطا، پیش از تلاش مجدد برای تکرار عملیات، منتظر میماند.
- --cf-backend backend
- امکان انتخاب صریح backend برای cloudfiles را فراهم میکند. مقدار پیشفرض pyrax است. از طرف دیگر میتوانید cloudfiles را انتخاب کنید.
- --concurrency number
- تعداد فرایندهای پسزمینهای را مشخص میکند که باید برای اجرای همزمان وظایف backend استفاده شوند. این کار عملیات محلی مانند رمزگذاری/رمزگشایی، ساخت حجم و غیره را از انتقال به/از backendها تفکیک میکند. نتیجه نهایی مورد نظر، پشتیبانگیری سریعتر است، زیرا پردازنده محلی (CPU) و پهنای باند شما میتوانند به صورت پیوستهتری مورد استفاده قرار گیرند. استفاده از این گزینه مستلزم نیاز به فضای دیسک بیشتر در محل ذخیرهسازی موقت است؛ به جای این که در هر زمان تنها نیاز به ذخیره یک حجم باشد، فضای ذخیرهسازی کافی برای نگهداری 1+n حجم نیاز خواهد بود. بسته به backend و شبکه، عملیات موازی میتوانند روند کار را تسریع کنند. یک نقطه شروع مناسب برای concurrency مقدار ۱ تا ۴ است. برای تنظیم دقیق، آمار duplicity را بررسی کنید. در بیشتر موارد این مقدار نباید از تعداد پردازندههای سیستم شما منهای یک فراتر رود.
- --config-dir path
- امکان انتخاب دایرکتوری پیکربندی duplicity را فراهم میسازد. مقدار پیشفرض ~/.config/duplicity است.
- --copy-blocksize kilos
- امکان انتخاب اندازه بلوک بر حسب کیلوبایت را جهت استفاده در رونوشتبرداری فراهم میکند. افزایش این مقدار ممکن است کپی فایلهای بزرگ را تسریع کند. پیشفرض 128 است.
- --compare-data
- مقایسه دادههای فایلهای عادی را در عملیات verify فعال میکند. این کار یک صحتسنجی (verify) را همانگونه که در بالا تشریح شد برای بررسی درستی آرشیوهای پشتیبان انجام میدهد، اما افزون بر آن فایلهای بازیابیشده را با فایلهای موجود در target_directory مقایسه میکند. duplicity هیچ فایلی را در target_directory جایگزین نخواهد کرد. چنانچه صحت فایلها به درستی تأیید نشود یا هر فایلی از آرشیو با فایل معادل آن در target_directory تفاوت داشته باشد، duplicity با یک کد خطای غیر صفر خارج میشود. در سطح پرگویی (verbosity) ۴ یا بالاتر، پیامی برای هر فایلی که با معادل خود در target_directory مغایرت داشته باشد ثبت خواهد شد.
- --copy-links
- پیوندهای نمادین (symlinks) را حین پشتیبانگیری دنبال و بازگشایی میکند. فعالسازی این گزینه به جای خود پیوند نمادین، دادههای فایل/پوشه مقصد پیوند را بازگشایی و پشتیبانگیری میکند که میتواند به طور بالقوه حجم نسخه پشتیبان را افزایش دهد.
- --dry-run
- محاسبه میکند که چه کارهایی انجام خواهد شد، اما هیچ عملیاتی روی backend انجام نمیدهد.
- --encrypt-key key-id
- هنگام پشتیبانگیری، به جای استفاده از رمزگذاری متقارن (سنتی)، با کلید عمومی ارائهشده رمزگذاری میکند. میتواند چندین بار مشخص شود. شناسه کلید (key-id) را میتوان در هر یک از قالبهای پشتیبانیشده توسط GnuPG وارد کرد؛ برای جزئیات به gpg(1)، بخش "HOW TO SPECIFY A USER ID" مراجعه کنید.
- --encrypt-secret-keyring filename
- این گزینه تنها همراه با --encrypt-key قابل استفاده است، و مسیر keyring محرمانه را برای کلید رمزگذاری به filename تغییر میدهد. این keyring هنگام ایجاد پشتیبان استفاده نمیشود. در صورت عدم تعیین، از keyring محرمانه پیشفرض که معمولاً در .gnupg/secring.gpg قرار دارد استفاده میشود.
- --encrypt-sign-key key-id
- پارامتر تسهیلکننده؛ یکسان با --encrypt-key key-id --sign-key key-id.
- --exclude shell_pattern
- فایل یا فایلهای منطبق بر shell_pattern را مستثنی میکند. اگر یک دایرکتوری مطابقت یابد، فایلهای زیر آن دایرکتوری نیز مطابقت داده میشوند. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید..TP --exclude-device-files استثنا کردن تمام فایلهای دستگاه (device files). این گزینه میتواند به دلایل امنیتی/مجوزها یا در صورتی که duplicity فایلهای دستگاه را بهدرستی مدیریت نمیکند، مفید باشد.
- --exclude-filelist filename
- فایلهای فهرستشده در filename را مستثنی میکند؛ بهطوری که هر خط از فهرست فایلها مطابق با همان قوانین --include و --exclude تفسیر میشود. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
- --exclude-if-present filename
- استثنا کردن دایرکتوریها در صورت وجود filename. به کاربر امکان میدهد پوشههایی را که مایل به پشتیبانگیری از آنها نیست، با افزودن یک فایل مشخص (مانند “.nobackup”) بهجای نگهداری یک فهرست جامع exclude/include، مشخص کند.
- --exclude-older-than time
- استثنا کردن هر فایلی که تاریخ تغییر آن قدیمیتر از time مشخصشده باشد. از این گزینه میتوان برای ایجاد یک پشتیبان جزئی که فقط شامل فایلهای بهتازگی تغییریافته است استفاده کرد. برای اطلاعات بیشتر بخش TIME FORMATS را ببینید.
- --exclude-other-filesystems
- استثنا کردن فایلهای روی سیستمهای فایلی (شناساییشده با شماره دستگاه) غیر از سیستم فایلی که ریشهٔ دایرکتوری منبع روی آن قرار دارد.
- --exclude-regexp regexp
- استثنا کردن فایلهای منطبق با regexp دادهشده. برخلاف گزینهٔ --exclude این گزینه با فایلهای درون دایرکتوریای که با آن تطابق یافته، مطابقت داده نمیشود. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
- --file-prefix prefix
- --file-prefix-manifest prefix
- --file-prefix-archive prefix
- --file-prefix-signature prefix
- --file-prefix-jsonstat prefix
- --file-prefix-statistics prefix
- یک پیشوند
به تمام
فایلها یا
تنها به
فایلهای
manifest، archive، signature، jsonstat
یا statistics اضافه
میکند.
همان
مجموعه
پیشوندها
باید هنگام
پشتیبانگیری
و بازیابی
مشخص شوند.
اگر هر دو پیشوند عمومی و ویژهٔ نوع تنظیم شده باشند، پیشوند عمومی پیش از پیشوندهای ویژهٔ نوع قرار خواهد گرفت.همچنین ببینید A NOTE ON FILENAME PREFIXES
- --files-from filename
- خواندن
فهرستی از
فایلها
برای
پشتیبانگیری
از filename بهجای
جستجو در کل
دایرکتوری
منبع
پشتیبان.
سایر
عملیات
مانند حالت
عادی است،
تنها روی
زیرمجموعه
مشخصشده
از
دایرکتوری
منبع
پشتیبان
انجام
میشود.
فایلها باید خطبهخط و بهصورت نسبی نسبت به دایرکتوری منبع پشتیبان مشخص شوند. هرگونه مسیر مطلق خطایی ایجاد خواهد کرد. تمام نویسههای هر خط معنیدار هستند و بهعنوان بخشی از مسیر در نظر گرفته میشوند، از جمله فاصلههای خالی ابتدا و انتهای خط. خطوط با نویسهٔ خط جدید یا null جدا میشوند، بسته به اینکه آیا سوئیچ --null-separator داده شده باشد یا خیر.
نیازی به گنجاندن دایرکتوری والدِ فایلهای فهرستشده نیست، گنجاندن آنها بهطور ضمنی انجام میشود. با این حال، محتوای هر دایرکتوری که بهصراحت فهرست شده باشد، بهطور ضمنی گنجانده نمیشود. هنگام استفاده از این گزینه، تمام فایلهای مورد نیاز باید فهرست شوند.
- --filter-globbing
- --filter-ignorecase
- --filter-literal
- --filter-regexp
- --filter-strictcase
- تغییر
نحوهٔ
تفسیر
الگوهای
دادهشده
به
آرگومانهای
گزینههای
شرط انتخاب
فایل --exclude و
--include (و
گونههای
مختلف
آنها، از
جمله
فهرستهای
فایل). این
گزینهها
میتوانند
چندین بار
برای
جابجایی
بین تطبیق
سراسری
پوسته (shell globbing،
پیشفرض)،
رشتههای
تحتاللفظی
(literal strings) و
عبارات
باقاعده (regular
expressions)، با
حساسیت به
حروف بزرگ و
کوچک
(پیشفرض)
یا بدون آن،
به کار
روند. تفسیر
مشخصشده
برای تمام
شرایط
انتخاب
بعدی تا
گزینهٔ
بعدیِ --filter
اعمال
میشود.
برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
- --force
- ادامه دادن حتی در صورتی که ممکن است از دست رفتن دادهها رخ دهد. duplicity زمانی که این گزینه لازم باشد به کاربر اطلاع خواهد داد.
- --ftp-passive
- استفاده از اتصالات دادهٔ غیرفعال (PASV). حالت پیشفرض استفاده از غیرفعال است، اما در صورت شکست اتصال غیرفعال یا اتمام مهلت زمانی، به حالت عادی بازمیگردد.
- --ftp-regular
- استفاده از اتصالات دادهٔ عادی (PORT).
- --full-if-older-than time
- انجام یک پشتیبانگیری کامل در صورتی که پشتیبانگیری افزایشی درخواست شده باشد، اما آخرین پشتیبانگیری کامل در مجموعه قدیمیتر از time دادهشده باشد. برای اطلاعات بیشتر بخش TIME FORMATS را ببینید.
- --full-if-n-inc number
- انجام یک پشتیبانگیری کامل در صورتی که پشتیبانگیری افزایشی درخواست شده باشد، اما آخرین زنجیرهٔ پشتیبانگیری در حال حاضر دارای number یا بیشتر نسخهٔ پشتیبان افزایشی باشد.
- --gio
- استفاده از بکاند GIO و تفسیر هر URL همانند GIO.
- -h, --help, --usage
- چاپ یک پیام راهنما و خروج.
- --gpg-binary file_path
- به شما امکان میدهد duplicity را مجبور کنید تا از file_path بهعنوان باینری خط فرمان gpg استفاده کند. میتواند یک مسیر فایل مطلق یا نسبی یا نام یک فایل باشد. مقدار پیشفرض 'gpg' است. باینری از طریق متغیر محیطی PATH پیدا خواهد شد.
- --gpg-options='options'
-
به شما امکان میدهد گزینهها را به رمزنگاری gpg ارسال کنید. فهرست options باید به شکل '--opt1 --opt2=val2' باشد، که در آن رشته نقلقول شده و تنها فاصلههای مجاز بین گزینهها هستند.
نکته: مقدار این گزینه باید با '=' متصل شود، مانند:
--gpg-options='--gpg-option=value'
برای جزئیات بیشتر بخش ARGPARSE PROBLEM را ببینید..TP --hidden-encrypt-key key-id همانند --encrypt-key است، اما شناسه کلید کاربر را از فایل رمزگذاریشده پنهان میکند. این گزینه از فرمان --hidden-recipient در gpg برای مبهمسازی مالک پشتیبان استفاده میکند. هنگام بازیابی، gpg بهطور خودکار تمام کلیدهای مخفی موجود را برای رمزگشایی پشتیبان امتحان خواهد کرد. برای جزئیات بیشتر gpg(1) را ببینید.
- --ignore-errors
- تلاش برای
نادیدهگرفتن
خطاهای خاص
در صورت
وقوع. این
گزینه تنها
برای این
منظور در
نظر گرفته
شده است که
امکان
بازیابی یک
نسخه
پشتیبان را
در مواجهه
با مشکلات
خاصی که در
غیر این
صورت منجر
به شکست
پشتیبانگیری
میشوند،
فراهم کند.
استفاده از
این گزینه
هرگز توصیه
نمیشود،
مگر اینکه
در شرایطی
باشید که
سعی در
بازیابی از
پشتیبان
دارید و
عملیات به
دلیل مشکلی
که
میخواهید
duplicity آن را
نادیده
بگیرد با
شکست مواجه
میشود. حتی
در این صورت
نیز بسته به
نوع مشکل،
این گزینه
ممکن است
بیاثر
باشد.
لطفاً توجه داشته باشید در حالی که خطاهای نادیدهگرفتهشده ثبت میشوند، هیچ خلاصهای در پایان عملیات برای اعلام مواردی که احیاناً نادیده گرفته شدهاند ارائه نخواهد شد. اگر از این گزینه برای بازیابی اضطراری دادهها استفاده میشود، توصیه میشود پشتیبان را بهگونهای اجرا کنید که بتوانید گزارش لاگ آن را بازبینی کنید (به دنبال خطوط حاوی رشته IGNORED_ERROR بگردید).
اگر مجبور شدید به دلایلی که برایتان نامشخص است یا مشخص است ولی در حیطه مسئولیت شما نیست از این گزینه استفاده کنید، لطفاً با نگهدارندگان duplicity تماس بگیرید. نیاز به استفاده از این گزینه در محیطهای عملیاتی معمولاً یک باگ تلقی میشود.
- --imap-full-address email_address
- نشانی کامل ایمیل برای نام کاربری هنگام ورود به سرور imap. در صورت عدم ارائه، تنها بخش نام کاربری نشانی ایمیل استفاده میشود.
- --imap-mailbox option
- امکان مشخصکردن یک صندوق پستی (mailbox) متفاوت را فراهم میکند. پیشفرض "INBOX" است. زبانهای دیگر ممکن است به صندوق پستی متفاوتی نسبت به مقدار پیشفرض نیاز داشته باشند.
- --idr-fakeroot
- سرویس idrived از
مفهوم
دایرکتوری
"fakeroot"
استفاده
میکند که
از طریق
سوئیچ --idr-fakeroot=...
تعریف
میشود. این
میتواند
یک
دایرکتوری
موجود
باشد، یا
اینکه
دایرکتوری
در زمان
اجرا بر روی
ریشه سیستم
فایل
(میزبان)
ایجاد شود.
(هشدار: شما
باید
دسترسی
نوشتن به
ریشه را
داشته
باشید!).
دایرکتوریهای
ایجادشده
در زمان
اجرا،
هنگام خروج
بهطور
خودکار حذف
میشوند!
بنابراین در طرح بالا، میتوانیم اینگونه عمل کنیم:
duplicity --idr-fakeroot=nicepath idrived://DUPLICITY
فایلهای ما در نهایت در این مسیر قرار میگیرند:
<MYBUCKET>/DUPLICITY/nicepath - --include shell_pattern
- مشابه --exclude است، اما در عوض فایلهای منطبق را شامل (include) میکند. برعکس --exclude، این گزینه دایرکتوریهای والد فایلهای منطبق را نیز مطابقت میدهد (اگرچه لزوماً محتوای آنها را شامل نمیشود). برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
- --include-filelist filename
- مانند --exclude-filelist است، اما در عوض فایلهای فهرستشده را شامل میکند. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
- --include-regexp regexp
- شامل کردن فایلهای منطبق با عبارت باقاعده regexp. تنها فایلهایی که صراحتاً توسط regexp تطبیق داده شوند توسط این گزینه لحاظ خواهند شد. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
- --jsonstat
- ثبت دادههای آماری مشابه آمارهای پیشفرضی که در انتهای یک عملیات پشتیبانگیری چاپ میشود؛ علاوه بر این، شامل برخی فرادادهها درباره زنجیره پشتیبان است، مانند اینکه چه زمانی پشتیبان کامل ایجاد شده و چه تعداد پشتیبان افزایشی پیش از آن گرفته شده است. قالب خروجی json است. این دادهها با سطح notice در stdout نوشته میشوند (مانند آمارهای کلاسیک) و آمارها به عنوان یک فایل مجزا در کنار manifest اما با پسوند "jsonstat" نگهداری میشوند. collection-status --show-changes-in-set <index> --jsonstat دادههای جمعآوریشده در عملیات پشتیبان را اضافه کرده و قالب خروجی را به json تغییر میدهد. اگر <index> روی -1 تنظیم شود، آمار کل زنجیره پشتیبان چاپ میشود.
- --log-fd number
- نوشتن نسخههای با قالببندی ویژه از پیامهای خروجی در توصیفکننده فایل (file descriptor) مشخصشده. قالب استفادهشده به گونهای طراحی شده است که به آسانی توسط سایر برنامهها پردازشپذیر باشد.
- --log-file filename
- نوشتن نسخههای با قالببندی ویژه از پیامهای خروجی در فایل مشخصشده. قالب استفادهشده به گونهای طراحی شده است که به آسانی توسط سایر برنامهها پردازشپذیر باشد.
- --log-timestamp
- نوشتن لاگ به همراه برچسب زمان (timestamp) و سطح لاگ پیش از متن پیام، مشابه syslog.
- --max-blocksize number
- حداکثر
اندازه
بلوکهای
بررسیشده
برای
تغییرات در
طول فرآیند
diff را محدود
میکند.
بهطور پیشفرض، ریشه دوم صحیح طول فایل به عنوان اندازه بلوک librsync استفاده میشود. حداقل مقدار ۵۱۲ بایت است و حداکثری ندارد مگر اینکه --max-blocksize مشخص شود. اندازه بلوک به سمت بالا و به نزدیکترین مرز ۵۱۲ بایتی گرد میشود.
اگر max_blocksize بزرگتری تعیین کنید، فایلهای difftar شما بزرگتر و فایلهای sigtar کوچکتر خواهند شد. اگر max_blocksize کوچکتری مشخص کنید، عکس این حالت رخ میدهد.
گزینه --max-blocksize باید مضربی از ۵۱۲ باشد.
حداکثر اندازه بلوک بهطور پیشفرض تعییننشده است.
- --mf-purge
- گزینهای برای mediafire جهت پاکسازی قطعی فایلها هنگام حذف، به جای انتقال آنها به سطل زباله.
- --mp-segment-size megs
- اندازه قطعه (segment size) در پسانه Swift بر حسب مگابایت.
- --name symbolicname
- تنظیم نام
نمادین
پشتیبانی
که عملیات
روی آن در
حال انجام
است. هدف
این است که
برای هر
نسخه
پشتیبانِ
از نظر
منطقی
مجزا، یک
نام
جداگانه
استفاده
شود. برای
نمونه،
ممکن است
فردی از
"home_daily_s3" برای
پشتیبانگیری
روزانه
دایرکتوری
خانگی به Amazon S3
استفاده
کند. ساختار
نام به عهده
کاربر است،
و تنها
متمایز
بودن
نامها
اهمیت دارد.
این نام
نمادین در
حال حاضر
تنها بر باز
شدن (expansion) --archive-dir
اثر
میگذارد،
اما ممکن
است در
آینده برای
ویژگیهای
بیشتری به
کار رود. به
کاربرانی
که بیش از
یک نسخه
پشتیبان
متمایز را
اجرا
میکنند
توصیه
میشود از
این گزینه
استفاده
کنند.
در صورت عدم تعیین، مقدار پیشفرض یک درهمسازی (hash) از URL پسانه خواهد بود.
- --no-check-remote
- غیرفعالسازی اعتبارسنجی manifest راه دور. بررسی این مورد پیشفرض است. عدم بررسی به شما اجازه میدهد بدون کلید خصوصی پشتیبانگیری کنید، اما به این معنی خواهد بود که manifest راه دور ممکن است وجود داشته و مخدوش باشد، که این امر احتمال غیرقابلبازیابی بودن پشتیبان را به همراه دارد.
- --no-compression
- عدم استفاده از GZip برای فشردهسازی فایلها در سیستم راه دور.
- --no-encryption
- عدم استفاده از GnuPG برای رمزگذاری فایلها در سیستم راه دور.
- --no-files-changed
- بهطور پیشفرض duplicity نام فایلها و اقدامات تغییر (add، del، chg) را حین پشتیبانگیری در حافظه جمعآوری میکند. این کار میتواند حافظه بسیار زیادی مصرف کند، بهویژه در حضور میلیونها فایل کوچک. این پرچم آن جمعآوری را غیرفعال میکند. این بدان معناست که گزینه --file-changed برای collection-status هیچ چیزی برنمیگرداند.
- --no-print-statistics
- بهطور پیشفرض duplicity پس از یک پشتیبانگیری موفق، آماری را درباره نشست فعلی چاپ میکند. این سوئیچ آن رفتار را غیرفعال میسازد.
- --no-restore-ownership
- شناسه کاربری/گروهی (uid/gid) را از آرشیو نادیده میگیرد و مشخصات کاربر فعلی را حفظ میکند. استفاده از این گزینه برای بازیابی دادهها به سیستم فایلهای متصلشدهای (mounted) که از مالکیت یونیکس پشتیبانی نمیکنند، یا زمانی که دسترسیهای ریشه (root) در دسترس نیست، توصیه میشود..TP --null-separator استفاده از نویسههای تهی (\0) به جای خطوط جدید (\n) بهعنوان جداکننده خط، که ممکن است هنگام کار با نامفایلهای حاوی خط جدید مفید باشد. این گزینه بر قالب مورد انتظار فایلهای مشخصشده با سوئیچهای --{include|exclude}-filelist و گزینه --{files-from} و همچنین قالب فایل آمار دایرکتوری تأثیر میگذارد.
- --numeric-owner
- هنگام بازیابی، همیشه از uid/gid عددی موجود در بایگانی استفاده میکند و نه نامهای کاربر/گروه بایگانیشده که رفتار پیشفرض است. برای بازیابی از دیسکهای زنده (Live CD) که ممکن است کاربرانی با نامهای یکسان ولی uid/gid متفاوت داشته باشند، توصیه میشود.
- --num-retries number
- تعداد دفعات تلاش مجدد در صورت بروز خطا، پیش از انصراف.
- --par2-options='options'
- گزینههای
عین به عین
(verbatim) برای
ارسال به par2.
نکته: مقدار این گزینه باید با '=' متصل شود، مانند:
--par2-options='-a -b'
برای جزئیات بیشتر به ARGPARSE PROBLEM مراجعه کنید.
- --par2-redundancy percent
- تنظیم سطح افزونگی برحسب percent (درصد) برای فایلهای بازیابی Par2 (پیشفرض ۱۰٪).
- --par2-volumes number
- تعداد جلدهای Par2 برای ایجاد (پیشفرض ۱).
- --path-to-restore path
- این گزینه ممکن است در حالت بازیابی مشخص شود و باعث میشود به جای کل محتوای بایگانی پشتیبان، تنها path بازیابی شود. path باید به صورت نسبی نسبت به ریشه دایرکتوری پشتیبانگیریشده داده شود.
- --progress
- در صورت انتخاب، duplicity پیشرفت فعلی بارگذاری و زمان تخمینی بارگذاری را نمایش میدهد. برای برآورد تغییرات، ابتدا یک اجرای آزمایشی (dry-run) را قبل از پشتیبانگیری کامل یا افزایشی انجام داده و سپس عملیات واقعی را همراه با تخمین پیشرفت واقعی بارگذاری اجرا میکند.
- --progress-rate number
- نرخ بهروزرسانی پیامهای پیشرفت بارگذاری توسط duplicity را تعیین میکند (نیازمند گزینه --progress است). پیشفرض، چاپ وضعیت در هر ۳ ثانیه است.
- --rename <original path> <new path>
- با مسیر orig
در پشتیبان
بهگونهای
رفتار
میکند که
گویی مسیر
new است.
میتواند
چندین بار
داده شود.
یک مثال:
duplicity restore --rename Documents/metal Music/metal sftp://uid@other.host/some_dir /home/me
- --rsync-options='options'
- امکان
ارسال
گزینهها
به بکاند rsync
را فراهم
میکند.
فهرست options
باید به
صورت "opt1=parm1 opt2=parm2"
باشد که در
آن رشته
گزینه در
نقلقول
قرار گرفته
و تنها
فاصله
مجاز، بین
گزینهها
است. رشته
گزینه پس از
هر گزینه
ایجادشده
داخلی برای
تعیین
درگاه راه
دور، عیناً
به rsync
فرستاده
میشود. این
یک مثال
احتمالاً
مفید است:
duplicity --rsync-options="--partial-dir=.rsync-partial" /home/me rsync://uid@other.host/some_dir
نکته: مقدار این گزینه باید با '=' متصل شود، مانند:
--rsync-options='--partial-dir=.rsync-partial'
برای جزئیات بیشتر به ARGPARSE PROBLEM مراجعه کنید.
- --s3-endpoint-url url
- نشانی URL نقطه پایانی (endpoint URL) فضای ذخیرهسازی S3 را مشخص میکند.
- --s3-multipart-chunk-size
- اندازه
قطعه (به
مگابایت،
پیشفرض 20MB)
مورد
استفاده
برای
بارگذاریهای
چندبخشی S3.
این مقدار
را برای
بیشینهسازی
بهرهوری
از پهنای
باند تنظیم
کنید. برای
مثال،
اندازه
قطعه 10MB و
مقدار volsize
برابر با 100MB
منجر به ۱۰
قطعه در هر
بارگذاری
جلد میشود.
نکته: این مقدار برای کارایی بهینه ترجیحاً باید مضرب صحیحی از --volsize شما باشد.
همچنین به A NOTE ON AMAZON S3 در زیر مراجعه کنید.
- --s3-multipart-max-procs
- حداکثر
تعداد
بارگذاریهای
همروند
هنگام
انجام
بارگذاری
چندبخشی.
پیشفرض ۴
است.
میتوانید
این عدد را
برای
بیشینهسازی
بهرهوری
از پهنای
باند و
پردازنده
تنظیم کنید.
نکته: بارگذاریهای همروندِ بیش از اندازه ممکن است بازدهی نزولی داشته باشد.
همچنین به A NOTE ON AMAZON S3 در زیر مراجعه کنید.
- --s3-region-name
- منطقه (region) فضای ذخیرهسازی S3 را مشخص میکند. معمولاً در صورتی که باکت در منطقه خاصی ساخته شده باشد، اجباری است.
- --s3-unencrypted-connection
- غیرفعال
کردن SSL برای
اتصالات به
S3. این کار
ممکن است
سرعت را به
میزان
چشمگیری
افزایش
دهد، اما به
بهای کاهش
محرمانگی
اطلاعات
است.
با فعال بودن این گزینه، هر کسی میان رایانه شما و S3 میتواند ترافیک را پایش کند و قادر خواهد بود بفهمد: شما از Duplicity استفاده میکنید، نام باکت، شناسه AWS Access Key ID شما، تاریخهای پشتیبانهای افزایشی و حجم دادهها در هر مرحله افزایشی.
این گزینه تنها بر اتصال تأثیر میگذارد، نه بر رمزنگاری GPG فایلهای افزایشی پشتیبان. مگر اینکه آن هم غیرفعال شده باشد، یک ناظر قادر به دیدن نام یا محتوای فایلها نخواهد بود.
همچنین به A NOTE ON AMAZON S3 در زیر مراجعه کنید.
- --s3-use-deep-archive
- ذخیرهسازی
جلدها با
استفاده از
Glacier Deep Archive S3 هنگام
بارگذاری
در Amazon S3. این
کلاس
ذخیرهسازی
هزینه
نگهداری
کمتری دارد
اما هزینه
هر درخواست
آن بیشتر
است و از
زمان ارسال
درخواست
بازیابی،
تأخیرهایی
تا ۴۸ ساعت
به همراه
دارد. این
هزینه
ذخیرهسازی
بر پایه
حداقل دوره
نگهداری
۱۸۰ روزه
محاسبه
میشود. طبق
گفته Amazon این
فضا با
ارائه
پایایی
۹۹٫۹۹۹۹۹۹۹۹۹٪
برای
بایگانی
دادهها و
پشتیبانگیری
بلندمدت
ایدهآل
است. برای
بازیابی یک
نسخه
پشتیبان،
باید تمام
دادههای
ذخیرهشده
در AWS Glacier Deep Archive را
به صورت
دستی به Standard S3
بازگردانید
و منتظر
بمانید تا AWS
عملیات
انتقال را
تکمیل کند.
نکته: ابزار Duplicity فایلهای manifest.gpg و sigtar.gpg مربوط به پشتیبانهای کامل و افزایشی را در فضای ذخیرهسازی استاندارد AWS S3 نگهداری میکند تا بازیابی سریع را برای پشتیبانهای افزایشی بعدی میسر سازد؛ بقیه دادهها در S3 Glacier Deep Archive ذخیره میشوند.
- --s3-use-glacier
- ذخیرهسازی
جلدها با
استفاده از
Glacier Flexible Storage هنگام
بارگذاری
در Amazon S3. این
کلاس
ذخیرهسازی
هزینه
نگهداری
کمتری دارد
اما هزینه
هر درخواست
آن بیشتر
است و از
زمان ارسال
درخواست
بازیابی،
تأخیرهایی
تا ۱۲ ساعت
به همراه
دارد. این
هزینه
ذخیرهسازی
بر پایه
حداقل دوره
نگهداری ۹۰
روزه
محاسبه
میشود. طبق
گفته Amazon این
فضا با
ارائه
پایایی
۹۹٫۹۹۹۹۹۹۹۹۹٪
برای
بایگانی
دادهها و
پشتیبانگیری
بلندمدت
ایدهآل
است. برای
بازیابی یک
نسخه
پشتیبان،
باید تمام
دادههای
ذخیرهشده
در AWS Glacier را به
صورت دستی
به Standard S3
بازگردانید
و منتظر
بمانید تا AWS
عملیات
انتقال را
تکمیل کند.
نکته: ابزار Duplicity فایلهای manifest.gpg و sigtar.gpg مربوط به پشتیبانهای کامل و افزایشی را در فضای ذخیرهسازی استاندارد AWS S3 نگهداری میکند تا بازیابی سریع را برای پشتیبانهای افزایشی بعدی میسر سازد؛ بقیه دادهها در S3 Glacier ذخیره میشوند.
- --s3-use-glacier-ir
- ذخیرهسازی
جلدها با
استفاده از
Glacier Instant Retrieval هنگام
بارگذاری
در Amazon S3. این
کلاس
ذخیرهسازی
مشابه Glacier Flexible Storage
است اما
امکان
بازیابی
آنی با
سرعتهای
استاندارد
را فراهم
میکند.
نکته: ابزار Duplicity فایلهای manifest.gpg و sigtar.gpg مربوط به پشتیبانهای کامل و افزایشی را در فضای ذخیرهسازی استاندارد AWS S3 نگهداری میکند تا بازیابی سریع را برای پشتیبانهای افزایشی بعدی میسر سازد؛ بقیه دادهها در S3 Glacier ذخیره میشوند..TP --s3-use-ia ذخیره جلدها با استفاده از Standard - Infrequent Access هنگام بارگذاری در Amazon S3. این کلاس ذخیرهسازی هزینه نگهداری کمتری دارد اما هزینه به ازای هر درخواست آن بیشتر است، و هزینه ذخیرهسازی بر اساس حداقل دوره نگهداری ۳۰ روزه محاسبه میشود. طبق اعلام Amazon، این کلاس ذخیرهسازی برای نگهداری طولانیمدت فایلها، پشتیبانگیریها و بازیابی پس از سانحه ایدهآل است.
- --s3-use-onezone-ia
- ذخیره جلدها با استفاده از One Zone - Infrequent Access هنگام بارگذاری در Amazon S3. این ذخیرهسازی مشابه Standard - Infrequent Access است، اما دادههای شیء را تنها در یک Availability Zone ذخیره میکند.
- --s3-use-rrs
- ذخیره جلدها با استفاده از Reduced Redundancy Storage هنگام بارگذاری در Amazon S3. این کار هزینه ذخیرهسازی را کاهش میدهد اما پایایی (durability) جلدهای ذخیرهشده را به جای پایداری ۹۹٫۹۹۹۹۹۹۹۹۹٪ ارائهشده توسط Standard Storage در S3، به ۹۹٫۹۹٪ کاهش میدهد.
- --s3-use-server-side-encryption
- فعالسازی رمزگذاری سمت سرور.
- --s3-use-server-side-kms-encryption
- --s3-kms-key-id key_id
- --s3-kms-grant grant
- فعالسازی رمزگذاری سمت سرور با استفاده از سرویس مدیریت کلید (key management service).
- --skip-if-no-change command
- بهطور پیشفرض، اگر هیچ فایلی تغییر نکرده باشد، یک پشتیبان افزایشی خالی ایجاد میشود. تنظیم این گزینه در صورتی که هیچ دادهای تغییر نکرده باشد، از ایجاد پشتیبان صرفنظر میکند. هیچ دادهای به مقصد ارسال نخواهد شد و اطلاعاتی نیز کَش نمیشود.
- --scp-command command
- (تنها در ssh pexpect backend با فعال بودن --use-scp)
همچنین بخش SSH pexpect backend در A NOTE ON SSH BACKENDS را ببینید.
- --sftp-command command
- (تنها در ssh pexpect backend)
همچنین بخش SSH pexpect backend در A NOTE ON SSH BACKENDS را ببینید.
- --sign-key key-id
- این گزینه
میتواند
هنگام
پشتیبانگیری،
بازیابی یا
اعتبارسنجی
(verifying) استفاده
شود. هنگام
پشتیبانگیری،
تمامی
فایلهای
پشتیبان با
شناسه کلید
key امضا
خواهند شد.
هنگام
بازیابی، duplicity
در صورتی که
هر فایل
دوردست با key-id
مشخصشده
امضا نشده
باشد، یک
خطا صادر
خواهد کرد. key-id
را میتوان
در هر یک از
قالبهای
پشتیبانیشده
توسط GnuPG
ارائه داد؛
برای
جزئیات به
gpg(1)، بخش "HOW TO SPECIFY A USER
ID" مراجعه
کنید. این
گزینه باید
تنها یک بار
مشخص شود،
زیرا در حال
حاضر تنها
از یک کلید
امضا
پشتیبانی
میشود.
آخرین
ورودی، بر
تمام
ورودیهای
دیگر
اولویت
دارد.
همچنین بخش A NOTE ON SYMMETRIC ENCRYPTION AND SIGNING را ببینید. - --ssh-askpass
- به ssh backend میگوید در صورتی که گذرواژه در url مقصد تعریف نشده باشد و هیچ متغیر محیطی BACKEND_PASSWORD تنظیم نشده باشد، از کاربر برای گذرواژه سیستم ریموت درخواست کند. این گذرواژه همچنین برای کلیدهای ssh محافظتشده با عبارت عبور (passphrase) استفاده میشود.
- --ssh-options='options'
- امکان
ارسال
گزینهها
را به ssh backend
فراهم
میکند.
میتواند
چندین بار
یا به صورت
فهرستی از
گزینهها
که با فاصله
از هم جدا
شدهاند
مشخص شود.
فهرست options
باید به شکل
"-oOpt1='parm1' -oOpt2='parm2'" باشد
که در آن
رشته گزینه
در نقلقول
قرار گرفته
و تنها
فاصلههای
مجاز، بین
گزینهها
است. رشته
گزینه
عیناً به هر
دو دستور scp و
sftp ارسال
خواهد شد؛
از آنجا که
نحو خط
فرمان
آنها کمی
متفاوت
است،
بنابراین
گزینهها
باید در
قالب گزینه
طولانی
شرحدادهشده
در ssh_config(5) داده
شوند.
مثال برای یک فهرست:
نکته: در حال حاضر ssh paramiko backend تنها از تنظیمات -i یا -oIdentityFile یا -oUserKnownHostsFile یا -oGlobalKnownHostsFile پشتیبانی میکند. در صورت نیاز، گزینههای خاصتر میزبان را از طریق فایل ssh_config فراهم کنید.
نکته ۲: مقدار این گزینه باید مانند زیر با '=' متصل شود:
--ssh-options='-oProtocol=2 -oIdentityFile=/my/backup/id'
برای جزئیات بیشتر بخش ARGPARSE PROBLEM را ببینید.
- --ssl-cacert-file file
- (تنها در webdav backend
و lftp backend) ارائه
یک فایل cacert
برای
اعتبارسنجی
گواهی ssl.
همچنین بخش A NOTE ON SSL CERTIFICATE VERIFICATION را ببینید.
- --ssl-cacert-path path/to/certs/
- (تنها در webdav backend
با پایتون 2.7.9+
یا lftp+webdavs و یک
نسخه جدید
lftp) ارائه
مسیری به یک
پوشه حاوی
فایلهای cacert
برای
اعتبارسنجی
گواهی ssl.
همچنین بخش A NOTE ON SSL CERTIFICATE VERIFICATION را ببینید.
- --ssl-no-check-certificate
- (تنها در webdav backend
و lftp backend)
غیرفعالسازی
اعتبارسنجی
گواهی ssl.
همچنین بخش A NOTE ON SSL CERTIFICATE VERIFICATION را ببینید.
- --swift-storage-policy
- استفاده از
این خطمشی
ذخیرهسازی
هنگام کار
روی مخازن Swift.
همچنین بخش A NOTE ON SWIFT (OPENSTACK OBJECT STORAGE) ACCESS را ببینید.
- --metadata-sync-mode mode
- مقدار
پیشفرض
این گزینه
'partial' است، اما
میتوانید
آن را روی 'full'
تنظیم کنید
برای جلوگیری از همگامسازی فراداده برای زنجیرههای پشتیبانی که قصد استفاده از آنها را ندارید، از 'partial' استفاده کنید. این کار در زمان بازیابی برای اولین بار صرفهجویی میکند و به شما امکان میدهد تنها با ارائه عبارت عبور مقصد، یک پشتیبان قدیمی را که با عبارت عبور متفاوتی رمزگذاری شده بود، بازیابی کنید.
برای همگامسازی فراداده تمام زنجیرههای پشتیبان در مقصد ریموت، از 'full' استفاده کنید..TP --tempdir directory استفاده از این دایرکتوری موجود برای فایلهای موقت duplicity به جای پیشفرض سیستم، که معمولاً دایرکتوری /tmp است. این گزینه بر هر متغیر محیطی اولویت دارد.
همچنین ببینید ENVIRONMENT VARIABLES.
- -t time, --time time, --restore-time time
- مشخص کردن
زمانی که
فایلها از
آن بازیابی
یا فهرست
میشوند.
برای جزئیات به بخش TIME FORMATS مراجعه کنید.
- --time-separator char
- استفاده از
char
بهعنوان
جداکننده
زمان در نام
فایلها به
جای دونقطه
(":").
نکته: این گزینه تنها برای عملیاتهای از نوع بازیابی (recovery) و وضعیت (status) اعمال میشود. ما دیگر نام فایلهایی با جداکننده زمان ایجاد نکرده یا نمینویسیم، اما نسخههای پشتیبان قدیمیتری را که ممکن است به این گزینه نیاز داشته باشند، خواهیم خواند.
- --timeout seconds
- استفاده از seconds بهعنوان مقدار زمان انتظار (timeout) سوکت در صورتی که duplicity در طول عملیاتهای شبکه با پایان مهلت زمانی مواجه شود. پیشفرض ۳۰ ثانیه است.
- --use-agent
- اگر این
گزینه مشخص
شود، آنگاه
--use-agent به
فرآیند
رمزنگاری GnuPG
ارسال
میشود و در
صورت نیاز،
پیش از
درخواست
عبارت عبور
برای --encrypt-key یا
--sign-key، تلاش
میکند به
gpg-agent متصل
شود.
نکته: برخلاف نسخههای پیشین duplicity، این گزینه توسط GnuPG 2 و نسخههای جدیدتر نیز رعایت خواهد شد. اگر GnuPG 2 در حال استفاده باشد، duplicity گزینه --pinentry-mode=loopback را به فرآیند gpg ارسال میکند مگر اینکه --use-agent در خط فرمان duplicity مشخص شده باشد. این امر باعث میشود که GnuPG 2 درست مانند GnuPG 1، تنها در صورت ارائه شدن --use-agent از agent استفاده کند.
- --use-gpgsm
- اگر این
گزینه مشخص
شود،
فرآیند
رمزنگاری GnuPG
به جای gpg از
باینری gpgsm
استفاده
میکند. این
باینری
بخشی از
مجموعه GnuPG
است، اما از
قالب فایل
Cryptographic Message Syntax (یا CMS؛
همچنین با
عنوان PKCS#7 نیز
شناخته
میشود، که
با
ابزارهای
دیگری
مانند openssl smime
نیز سازگار
است)
استفاده
میکند.
فایلهای رمزگذاریشده به جای پسوند .gpg، دارای پسوند .p7m خواهند بود. هر عملیاتی که نیاز به رمزگشایی داشته باشد (مانند restore، list-current-files و غیره) نیز باید --use-gpgsm را مشخص کند.
ابزار gpgsm از رمزنگاری متقارن (گذرواژه) یا گیرندگان پنهان پشتیبانی نمیکند.
- --verbosity level, -vlevel
- مشخص کردن
سطح پرگویی
خروجی (سطح
لاگ). سطوح
نامگذاریشده
و مقادیر
متناظر
عبارتند از:
0 Error (خطا)، 2 Warning
(هشدار)، 4 Notice
(اعلان -
پیشفرض)، 8 Info
(اطلاعات)، 9 Debug
(اشکالزدایی
-
پرجزئیاتترین).
مقدار level همچنین میتواند این موارد باشد:
یک کلمه: error, warning, notice, info, debug
گزینههای -v4، -vn و -vnotice از نظر عملکردی معادلند، همانطور که نسخههای ترکیبی/حروف بزرگ -vN، -vNotice و -vNOTICE نیز معادل یکدیگر هستند.
- --version
- نمایش نسخه duplicity و خروج.
- --volsize number
- تغییر اندازه حجم (volume) به number مگابایت. پیشفرض 200MB است.
- --webdav-headers csv formatted key,value pairs
- قالب
ورودی،
فهرستی از
جفتهای key,value
جداشده با
کاما است.
میتوان از
قالب
استاندارد
CSV استفاده
کرد.
برای مثال برای تنظیم یک Cookie از 'Cookie,name=value' یا '"Cookie","name=value"' استفاده کنید.
میتوانید چندین سرآیند را مشخص کنید، مانند '"Cookie","name=value","Authorization","xxx"'..SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)"
- TMPDIR, TEMP, TMP
- به ترتیب نزولی اولویت، دایرکتوری مورد استفاده برای فایلهای موقت را مشخص میکنند (به ارث رسیده از ماژول tempfile در Python). در نهایت، گزینه --tempdir بر هر یک از این موارد تقدم دارد.
- BACKEND_PASSWORD, FTP_PASSWORD (deprecated)
- توسط اکثر backendهایی که از گذرواژه پشتیبانی میکنند، پذیرفته میشود. این روش امنتر از وارد کردن آن در URL مربوط به backend است (که ممکن است در فهرست فرایندهای سیستمعامل برای سایر کاربران همان ماشین قابل مشاهده باشد).
- PASSPHRASE
- این عبارت عبور به GnuPG منتقل میشود. اگر این متغیر تنظیم نشده باشد، عبارت عبور از کاربر درخواست خواهد شد. GPG برای رمزنگاری عبارت عبور از روش رمزنگاری AES استفاده میکند.
- SIGN_PASSPHRASE
- عبارت
عبوری که
برای --sign-key
استفاده
میشود. اگر
تعیین نشود
و کلید
امضا
همزمان
یکی از
کلیدهای
رمزنگاری
نیز باشد،
PASSPHRASE به جای
آن دوباره
استفاده
خواهد شد.
در غیر این
صورت،
چنانچه
عبارت عبور
لازم باشد
ولی تنظیم
نشده باشد،
از کاربر
درخواست
میشود. GPG
برای
رمزنگاری
عبارت عبور
از روش
رمزنگاری AES
استفاده
میکند.
ممکن است متغیرهای محیطی دیگری نیز برای پیکربندی backendهای خاص استفاده شوند. یادداشتهای مربوط به backend مورد نظر را مشاهده کنید.
نکتهای درباره ارائه گذرواژهها یا عبارتهای عبور (A NOTE ON PROVIDING PASSWORDS OR PASSPHRASES)
برنامه Duplicity به عبارتهای عبور برای GnuPG و گذرواژهها برای backendها نیاز دارد.
عبارت عبور GnuPG در موارد زیر درخواست میشود:
- 1.
- رمزنگاری متقارن (حالت پیشفرض، در صورتی که هیچیک از --encrypt-key یا --no-encryption استفاده نشده باشد).
- 2.
- رمزنگاری نامتقارن (با استفاده از --encrypt-key ) برای عملیاتهای restore، verify و cleanup ، زیرا این عملیاتها به رمزگشایی با استفاده از کلید خصوصی نیاز دارند.
- 3.
- هنگام امضای پشتیبانها با استفاده از --sign-key.
عبارت عبور GnuPG در موارد زیر لازم نیست:
- 1.
- استفاده از --no-encryption.
- 2.
- رمزنگاری نامتقارن (با استفاده از --encrypt-key ) برای عملیاتهای پشتیبانگیری full و inc (مگر اینکه --sign-key نیز استفاده شده باشد)، چرا که برای رمزنگاری تنها کلید عمومی لازم است.
- 3.
- عملیاتهایی که بدون رمزگشایی فقط به فرادادهها دسترسی دارند یا پشتیبانها را مدیریت میکنند: collection-status، list-current-files، remove-all-but-n-full، remove-all-inc-of-but-n-full و remove-older-than.
گذرواژههای
backend در صورتی
که از طریق
متغیرهای
محیطی
(مانند BACKEND_PASSWORD )
یا در URL مقصد
مشخص نشده
باشند،
درخواست
میشوند.
اکیداً
توصیه
میشود به
منظور حفظ
امنیت از
متغیرهای
محیطی
استفاده
کنید..SH "قالب
URL (URL FORMAT)" Duplicity از
قالب URL (تا حد
امکان
استاندارد)
برای تعیین
مکانهای
داده
استفاده
میکند.
تفاوت عمده
این است که
کل بخش
میزبان (host)
برای برخی
بکاندها
اختیاری
است.
نکته: اگر
مسیر با یک '/'
اضافه آغاز
شود،
معمولاً
نشاندهنده
یک مسیر
مطلق روی
بکاند
است.
قالب کلی برای یک URL به شرح زیر است:
یا
استفاده از BACKEND_PASSWORD (نحوه ارائه گذرواژه به روش امن)
قرار دادن گذرواژه در خط فرمان، مثلاً به عنوان بخشی از URL مقصد، توصیه نمیشود؛ زیرا میتواند برای هر فردی که مجوز مشاهده فهرست فرایندها را دارد فاش شود. با این وجود، انجام این کار امکانپذیر است.
به جای آن، تنظیم متغیر محیطی BACKEND_PASSWORD یا سایر متغیرهای محیطی مختص بکاند را در نظر بگیرید که دچار نقص امنیتی ذکرشده در بالا نیستند.
جزئیات و مثالهای توصیفی به ازای هر بکاند
در پروتکلهایی که پشتیبانی میکنند، مسیر ممکن است با یک اسلش تکی، یا با یک اسلش دوگانه، '//path'، برای نشان دادن یک مسیر مطلق در فایلسیستم مشخص شود.
نکته: دسترسی طرحواره (پروتکل) ممکن است توسط بیش از یک بکاند ارائه شود. در صورتی که بکاند پیشفرض دارای باگ است یا در یک حالت خاص کار نمیکند، ارزش دارد یک پیادهسازی جایگزین را امتحان کنید. بکاندهای جایگزین میتوانند با افزودن نام بکاند جایگزین به عنوان پیشوند به طرحواره (scheme) انتخاب شوند؛ برای مثال ncftp+ftp:// و در زیر خلاصه نحو هر طرحواره به آنها اشاره شده است.
قالبها برای هر یک از بکاندها در ادامه آمده است:
- بکاند Amazon Drive
- ad://some_dir
همچنین ببینید: A NOTE ON AMAZON DRIVE
- Azure
- azure://container-name
همچنین ببینید: A NOTE ON AZURE ACCESS
- B2
- b2://account_id[:application_key]@bucket_name/[folder/]
- Box
- box:///some_dir[?config=path_to_config]
همچنین ببینید: A NOTE ON BOX ACCESS
- Cloud Files (Rackspace)
- cf+http://container_name
همچنین ببینید: A NOTE ON CLOUD FILES ACCESS
- Dropbox
- dpbx:///some_dir
حتماً ابتدا بخش A NOTE ON DROPBOX ACCESS را بخوانید!
- File (فایلسیستم محلی)
- file://[relative|/absolute]/local/path
- FISH (Files transferred over Shell protocol) بر بستر ssh
- fish://user[:password]@other.host[:port]/[relative|/absolute]_path
- FTP
- ftp[s]://user[:password]@other.host[:port]/some_dir
نکته: برای اجبار به استفاده از یک بکاند خاص از پیشوندهای +lftp یا +ncftp استفاده کنید، پیشفرض lftp+ftp://... است.
- Google Cloud Storage (GCS از طریق Interoperable Access)
- s3://bucket[/path]
جهت اطلاع از گزینه endpoint و متغیرهای محیطی مورد نیاز برای احراز هویت، بخش A NOTE ON GOOGLE CLOUD STORAGE را ببینید.
- Google Docs
- gdocs://user[:password]@other.host/some_dir
نکته: برای اجبار به استفاده از یک بکاند خاص از پیشوندهای +pydrive یا +gdata استفاده کنید، پیشفرض pydrive+gdocs://... است.
- Google Drive
- gdrive://<service account' email
address>@developer.gserviceaccount.com/some_dir
همچنین A NOTE ON GDRIVE BACKEND را در زیر ببینید.
- HSI
- hsi://user[:password]@other.host/some_dir
- hubiC
- cf+hubic://container_name
همچنین ببینید: A NOTE ON HUBIC
- بکاند IDrive
- idrived://bucket_name[/path]
- فضای ذخیرهسازی ایمیل IMAP
- imap[s]://user[:password]@host.com[/from_address_prefix]
همچنین ببینید: A NOTE ON IMAP
- بکاند Jottacloud
- jottacloud://some_dir
- MediaFire
- mf://user[:password]@mediafire.com/some_dir
همچنین A NOTE ON MEDIAFIRE BACKEND را در زیر ببینید.
- فضای ذخیرهسازی ابری MEGA.nz (تنها برای حسابهای ایجادشده قبل از نوامبر ۲۰۱۸ کار میکند، از "megatools" استفاده میکند)
- mega://user[:password]@mega.nz/some_dir
نکته: اگر در URL مشخص نشده باشد، به گذرواژه ذخیرهشده در $HOME/.megarc وابسته است (همانطور که توسط ابزارهای "megatools" استفاده میشود)
- فضای ذخیرهسازی ابری MEGA.nz (برای همه حسابهای MEGA کار میکند، از ابزارهای "MEGAcmd" استفاده میکند)
- megav2://user[:password]@mega.nz/some_dir
megav3://user[:password]@mega.nz/some_dir[?no_logout=1]
(برای
جدیدترین
نسخه MEGAcmd)
نکته: هرچند "MEGAcmd" دیگر از فایل پیکربندی استفاده نمیکند، اما برای راحتی در ذخیرهسازی گذرواژه کاربر، این بکاند آن را در فایل $HOME/.megav2rc جستجو میکند (با همان نحو فایل قدیمی $HOME/.megarc)
[Login] Username = MEGA_USERNAME Password = MEGA_PASSWORDmulti multi:///path/to/config.json
همچنین در ادامه نکتهای درباره پسزمینه MULTI (A NOTE ON MULTI BACKEND) را ببینید.
- پسزمینه OneDrive
- onedrive://some_dir همچنین نکتهای درباره پسزمینه ONEDRIVE (A NOTE ON ONEDRIVE BACKEND) را ببینید.
- پسزمینه Par2 Wrapper
- par2+scheme://[user[:password]@]host[:port]/[/]path
همچنین نکتهای درباره پسزمینه PAR2 WRAPPER (A NOTE ON PAR2 WRAPPER BACKEND) را ببینید.
- Public Cloud Archive (OVH)
- pca://container_name[/prefix]
همچنین نکتهای درباره دسترسی به PCA (A NOTE ON PCA ACCESS) را ببینید.
- pydrive
- pydrive://<service account' email
address>@developer.gserviceaccount.com/some_dir
همچنین در ادامه نکتهای درباره پسزمینه PYDRIVE (A NOTE ON PYDRIVE BACKEND) را ببینید.
- پسزمینه Rclone
- rclone://remote:/some_dir
همچنین نکتهای درباره پسزمینه RCLONE (A NOTE ON RCLONE BACKEND) را ببینید.
- Rsync از طریق دیمن
- rsync://user[:password]@host.com[:port]::[/]module/some_dir
- Rsync بر بستر ssh (تنها با احراز هویت کلید)
- rsync://user@host.com[:port]/[relative|/absolute]_path
- فضای ذخیرهسازی S3 (Amazon)
- s3:///bucket_name[/path]
همچنین در ادامه نکتهای درباره AMAZON S3 (A NOTE ON AMAZON S3) را ببینید.
- SCP/SFTP Secure Copy Protocol/SSH File Transfer Protocol
- scp://.. یا
sftp://user[:password]@other.host[:port]/[relative|/absolute]_pathپیشفرضها عبارتند از paramiko+scp:// و paramiko+sftp://
بهعنوان جایگزین pexpect+scp://، pexpect+sftp://، lftp+sftp:// را امتحان کنید
همچنین --ssh-askpass، --ssh-options و نکتهای درباره پسزمینههای SSH (A NOTE ON SSH BACKENDS) را ببینید. - slate
- slate://[slate-id]
همچنین نکتهای درباره پسزمینه SLATE (A NOTE ON SLATE BACKEND) را ببینید.
- Swift (Openstack)
- swift://container_name[/prefix]
همچنین نکتهای درباره دسترسی به SWIFT (OPENSTACK OBJECT STORAGE) (A NOTE ON SWIFT (OPENSTACK OBJECT STORAGE) ACCESS) را ببینید.
- پسزمینه Skylable SX
- sx://[user[:password]@]host/cluster/volume/[path]
- Tahoe-LAFS
- tahoe://alias/directory
- WebDAV
- webdav[s]://user[:password]@other.host[:port]/some_dir
بهعنوان جایگزین lftp+webdav[s]:// را امتحان کنید
- رسانه نوری (ISO9660 CD/DVD/Bluray با استفاده از xorriso)
- xorriso:///dev/byOpticalDrive[:/path/to/directory/on/iso]
xorriso:///path/to/image.iso[:/path/to/directory/on/iso]همچنین نکتهای درباره پسزمینه XORRISO (A NOTE ON THE XORRISO BACKEND) را ببینید..SH "قالبهای زمانی (TIME FORMATS)" duplicity رشتههای زمانی را در دو جا به کار میبرد. نخست، بسیاری از فایلهایی که duplicity ایجاد میکند، زمان را در نام فایل خود در قالب datetime طبق یادداشت w3 در http://www.w3.org/TR/NOTE-datetime خواهند داشت. اساساً آنها شبیه "2001-07-15T04:09:38-07:00" هستند، که دقیقاً همان معنایی را میدهد که به نظر میرسد. بخش "-07:00" به این معناست که منطقه زمانی ۷ ساعت عقبتر از UTC است.
دوم، گزینههای -t، --time، و --restore-time یک رشته زمانی دریافت میکنند که میتواند در هر یک از چندین قالب زیر مشخص شود:
- 1.
- رشته "now" (به زمان فعلی اشاره دارد)
- 2.
- دنبالهای از ارقام، مانند "123456890" (بیانگر زمان بر حسب ثانیه پس از مبدأ زمان یا epoch)
- 3.
- رشتهای مانند "2002-01-25T07:00:00+02:00" در قالب datetime
- 4.
- یک بازه زمانی، که عددی است به همراه یکی از نویسههای s، m، h، D، W، M، یا Y (به ترتیب نشاندهنده ثانیهها، دقیقهها، ساعتها، روزها، هفتهها، ماهها، یا سالها)، یا رشتهای از چنین جفتهایی. در این حالت، رشته به زمانی اشاره دارد که به اندازه این بازه قبل از زمان کنونی بوده است. برای نمونه، "1h78m" نشاندهنده زمانی است که یک ساعت و ۷۸ دقیقه پیش بوده است. گاهشماری در اینجا سادهانگارانه است: یک ماه همواره ۳۰ روز، یک سال همواره ۳۶۵ روز، و یک روز همواره ۸۶۴۰۰ ثانیه است.
- 5.
- قالب تاریخی به صورت YYYY/MM/DD، YYYY-MM-DD، MM/DD/YYYY، یا MM-DD-YYYY، که نشاندهنده نیمهشب روز مورد نظر نسبت به تنظیمات منطقه زمانی فعلی است. برای نمونه، "2002/3/5"، "03-05-2002"، و "2002-3-05" همگی به معنای ۵ مارس ۲۰۰۲ هستند.
انتخاب فایل (FILE SELECTION)
هنگامی که duplicity اجرا میشود، دایرکتوری مبدأ دادهشده را جستجو کرده و از تمام فایلهای مشخصشده توسط سامانه انتخاب فایل پشتیبانگیری میکند، مگر اینکه --files-from مشخص شده باشد که در این صورت فهرست ارائهشده از فایلهای منفرد بهجای آن استفاده میشود. در هنگام بازیابی، گزینههای پشتیبانیشده انتخاب فایل، مسیرهای وابسته به آرشیو را فیلتر میکنند، با نامهای چاپشده توسط list-current-files تطبیق مییابند، و با --path-to-restore مانعةالجمع (ناسازگار) هستند. الگوهای انتخاب فایل برای بازیابی باید نسبت به ریشه آرشیو نسبی باشند، میتوانند اختیاری با ./ آغاز شوند، و نباید مطلق باشند یا شامل مولفههای مسیر . یا .. باشند. گزینههایی که نیازمند رفتار سیستمفایل زنده مبدأ هستند، مانند --exclude-if-present، --exclude-other-filesystems، و --files-from، در هنگام بازیابی پشتیبانی نمیشوند.
سامانه انتخاب فایل شامل تعدادی شرایط انتخاب فایل است که با استفاده از یکی از گزینههای خط فرمان زیر تنظیم میشوند:
--exclude-device-files
--exclude-if-present
--exclude-filelist
--exclude-regexp
--include
--include-filelist
--include-regexp
برای هر فایل جداگانهای که در دایرکتوری مبدأ پیدا میشود، شرایط انتخاب فایل به ترتیبی که در خط فرمان مشخص شدهاند بررسی میشوند. در صورت تطابق یک شرط انتخاب، فایل مطابق با آن لحاظ یا مستثنی میشود و سامانه انتخاب فایل بدون بررسی شرایط باقیمانده به سراغ فایل بعدی میرود.
بنابراین در مواردی که چند شرط با یک فایل معین تطابق داشته باشند، آرگومانهای جلوتر اولویت دارند و از این رو معمولاً به ترتیب کاهش جزئیات (از خاص به عام) مشخص میشوند. اگر هیچ شرط انتخابی با یک فایل مشخص تطابق نیابد، آن فایل به صورت ضمنی لحاظ میشود.
برای نمونه،
دقیقاً مشابه دستور زیر است:
زیرا دستورالعمل --include با تمام فایلهای دایرکتوری مبدأ پشتیبانگیری مطابقت دارد و به دلیل تقدم مکانی، بر گزینه متناقض --exclude اولویت مییابد.
به عنوان مثالی کاربردیتر،
از دایرکتوری /usr/local/bin (و محتویات آن) پشتیبانگیری میکند، اما از /usr/local/doc خیر. توجه داشته باشید که این دستور مانند تعیین صرف /usr/local/bin به عنوان مبدأ پشتیبانگیری نیست، زیرا سایر فایلها و پوشههای تحت /usr نیز به طور (ضمنی) لحاظ خواهند شد.
ترتیب آرگومانهای --include و --exclude حائز اهمیت است. در مثال قبلی، اگر دستورالعمل با عمومیت بیشتر --exclude اولویت میداشت، مانع از تطابق دستورالعمل با جزئیات بیشتر --include با هر فایلی میشد.
الگوهای ارائهشده به گزینههای --include، --exclude، --include-filelist، و --exclude-filelist به طور پیشفرض به عنوان الگوهای گسترشیافته تطبیق شل (extended shell globbing patterns) تفسیر میشوند. این رفتار را میتوان با آرگومانهای حالت فیلتر زیر تغییر داد:
--filter-literal
--filter-regexp
این آرگومانها تفسیر الگوهای بهکاررفته در شرایط انتخاب را تغییر داده و بر تمامی گزینههای انتخاب فایل بعدی در خط فرمان تأثیر میگذارند. آنها را میتوان برحسب نیاز چندین بار مشخص کرد تا نحوه تفسیر الگوها تغییر یابد.
رشتههای لفظی (literal) با globها تفاوت دارند زیرا الگو باید دقیقاً با نام فایل مطابقت داشته باشد. این امر زمانی مفید است که نامهای فایل حاوی نویسههایی باشند که در globهای شل یا عبارات باقاعده معنای خاصی دارند. در صورت ارسال فهرستهای فایل پویا به duplicity با استفاده از گزینههای --include-filelist یا --exclude-filelist، استفاده از --filter-literal توصیه میشود، مگر اینکه عبارات باقاعده یا تطبیق شل مشخصاً مورد نیاز باشد.
زبان عبارت باقاعده مورد استفاده برای شرایط انتخابی که با --include-regexp ، --exclude-regexp ، یا هنگامی که --filter-regexp فعال است مشخص میشوند، مطابق پیادهسازی کتابخانه استاندارد Python است.
الگوهای گسترشیافته تطبیق شل ممکن است شامل موارد زیر باشند: *، **، ?، و [...] (محدودههای نویسهای). همانند یک شل معمولی، * میتواند به هر رشتهای از نویسهها که شامل "/" نباشد بسط یابد، ? به هر تکنویسهای بهجز "/" بسط مییابد، و [...] به یک نویسه منفرد از میان نویسههای مشخصشده بسط پیدا میکند (بازه نویسهها مجاز است). الگوی ** به هر رشتهای از نویسهها، چه شامل "/" باشد و چه نباشد، بسط مییابد.
علاوه بر آرگومانهای حالت فیلتر بالا، موارد زیر را میتوان به همان شیوه برای فعالسازی (پیشفرض) یا غیرفعالسازی حساسیت به بزرگی و کوچکی حروف در بررسی شرایط انتخاب فایل به کار برد:
--filter-strictcase
نمونهای از تغییر حالت فیلتر شامل نادیده گرفتن بزرگی و کوچکی حروف عبارت است از:
که از فایلهای *.py ، *.pY ، *.Py و *.PY تحت /usr/bin و همچنین تکفایل مشخصشده بهصورت لفظی که دارای نویسههای glob در نام خود است، پشتیبانگیری میکند. استفاده از --filter-strictcase در اینجا از نظر فنی ضروری نیست، اما به عنوان نمونهای آورده شده است که ممکن است (بسته به مسیر مبدأ پشتیبانگیری) در صورت وجود هرگونه حروف بزرگ در بخش دایرکتوری مسیر (/usr/bin)، تداخلات غیرمنتظرهای بین گزینههای --include و --exclude ایجاد کند.
اگر الگو با "ignorecase:" (غیرحساس به حروف بزرگ و کوچک) آغاز شود، این پیشوند حذف خواهد شد و هر نویسه در رشته میتواند با نسخه بزرگ یا کوچک خودش جایگزین شود. این پیشوند یک ویژگی قدیمی است که صرفاً برای شرایط انتخاب تطبیق شل پشتیبانی میشود، اما به دلایل سازگاری با گذشته در غیر این صورت بخشی از خود الگو در نظر گرفته میشود (بهجای آن از --filter-ignorecase استفاده کنید).
به یاد داشته باشید که هنگام وارد کردن الگوها در شل، ممکن است نیاز به نقلقول کردن (کوتیشن) آنها داشته باشید تا شل پیش از آنکه duplicity آنها را دریافت کند، الگوهای globbing یا نویسههای فاصله را تفسیر نکند.
الگوهای انتخاب به طور کلی باید به عنوان مسیرهای سیستمفایل در نظر گرفته شوند تا رشتههای دلخواه. برای شرایط انتخابی که از الگوهای گسترشیافته تطبیق شل استفاده میکنند، گزینه --exclude pattern در صورتی با یک فایل تطابق مییابد که:.IP 1. pattern بتواند به نام فایل گسترش یابد، یا
- 2.
- فایل درون
دایرکتوریای
باشد که با
این گزینه
مطابقت
دارد.
در مقابل، گزینهٔ --include pattern با یک فایل مطابقت دارد اگر:
- 1.
- pattern بتواند به نام فایل گسترش یابد، یا
- 2.
- فایل درون دایرکتوریای باشد که با این گزینه مطابقت دارد، یا
- 3.
- فایل
دایرکتوریای
باشد که
حاوی فایلی
مطابق با
این گزینه
است.
برای مثال،
برای نمونه با /usr/local، /usr/local/lib و /usr/local/lib/netscape مطابقت دارد. این معادل با --exclude /usr/local --exclude '/usr/local/**' است.
از سوی دیگر
مشخص میکند که از /usr، /usr/local، /usr/local/lib و /usr/local/lib/netscape (اما نه /usr/doc) همگی نسخهٔ پشتیبان تهیه شود. بنابراین نیازی نیست نگران گنجاندن دایرکتوریهای والد برای اطمینان از قرارگیری زیردایرکتوریهای مشمول باشید.
در نهایت،
با فایلی مانند /usR/5fOO/hello/there/world.py مطابقت خواهد داشت. اگر با هر چیزی مطابقت پیدا کند، با /usr نیز مطابقت خواهد داشت. اگر هیچ فایل موجودی وجود نداشته باشد که الگوی دادهشده بتواند به آن گسترش یابد، این گزینه به تنهایی با /usr مطابقت نخواهد داشت.
این نحوهٔ برخورد با الگوها در شرایط تطبیق الگو (globbing) و گزینش لفظی (literal) به عنوان مسیرهای سیستمفایل، تعداد شرایط صریح مورد نیاز را کاهش میدهد. با این حال، مستلزم آن است که مسیرهای توصیفشده توسط تمامی انواع گزینهٔ --include یا --include بهطور کامل نسبت به دایرکتوری مبدا پشتیبانگیری مشخص شده باشند.
برای شرایط گزینش با استفاده از رشتههای لفظی (literal)، همین منطق حاکم است جز این که سناریوی 1 برای مطابقت دقیق الگو است.
برای شرایط گزینش با استفاده از عبارات باقاعده (regular expressions)، الگو به جای یک مسیر سیستمفایل، به عنوان یک عبارت باقاعده ارزیابی میشود. بنابراین سناریوی 3 در موارد بالا اعمال نمیشود، که پیامدهای آن در انتهای این بخش مورد بحث قرار گرفته است.
گزینههای --include-filelist و --exclude-filelist نیز شرایط گزینش فایل را معرفی میکنند. آنها duplicity را هدایت میکنند تا یک فایل متنی (خواه ASCII یا UTF-8) را بخواند، که هر خط از آن مشخصات یک فایل است، و فایلهای منطبق را مشمول یا مستثنی کند. خطوط بسته به اینکه آیا سوییچ --null-separator داده شده باشد یا خیر، با نویسههای خط جدید یا نال (null) از هم جدا میشوند.
هر خط در فهرست فایلها (filelist) به همان روشی به عنوان یک الگوی گزینش تفسیر میشود که گزینههای --include و --exclude تفسیر میشوند، با این تفاوت که خطوطی که با "+ " شروع میشوند به عنوان دستورالعملهای include تفسیر میشوند، حتی اگر در فهرست فایلی یافت شوند که توسط --exclude-filelist ارجاع داده شده باشد. به طور مشابه، خطوطی که با "- " شروع میشوند فایلها را مستثنی میکنند، حتی اگر در یک فهرست فایل include یافت شوند.
برای مثال، اگر فایل "list.txt" شامل خطوط زیر باشد:
/usr/local - /usr/local/doc /usr/local/bin + /var - /var
آنگاه --include-filelist list.txt مسیرهای /usr، /usr/local و /usr/local/bin را مشمول خواهد کرد. این دستور /usr/local/doc، /usr/local/doc/python و غیره را مستثنی خواهد کرد. همچنین /usr/local/man را شامل میشود، زیرا درون /usr/local گنجانده شده است. در نهایت، آنچه برای /var رخ میدهد تعریفنشده است. یک فهرست فایل نباید شامل مشخصات متناقض فایل باشد.
هر خط در فهرست فایلها طبق حالت پالایهٔ (filter) فعلی، دقیقاً به همان روشی تفسیر خواهد شد که گزینههای --include و --exclude تفسیر میشوند. به عنوان مثال، اگر فایل "list.txt" شامل خطوط زیر باشد:
dir/foo + dir/bar - **
آنگاه --include-filelist list.txt دقیقاً همانند مشخص کردن --include dir/foo --include dir/bar --exclude ** در خط فرمان خواهد بود.
توجه داشته باشید که مشخص کردن تعداد بسیار زیادی از قواعد گزینش به صورت فهرست فایلها (filelist) میتواند افت عملکرد قابلتوجهی به همراه داشته باشد، زیرا این قواعد (احتمالاً) برای هر فایل در دایرکتوری مبدا پشتیبانگیری بررسی خواهند شد. اگر نیاز به پشتیبانگیری از فهرستهای دلخواهی از فایلهای خاص دارید (یعنی فایلهایی که با الگوهای regexp یا globهای پوسته توصیف نشدهاند)، استفاده از --files-from احتمالاً کارایی و عملکرد بهتری خواهد داشت.
در نهایت، گزینههای --include-regexp و --exclude-regexp امکان مشمول یا مستثنی کردن فایلها را در صورت تطابق نام فایل آنها با یک عبارت باقاعده فراهم میکنند. نحو عبارت باقاعده پیچیدهتر از آن است که در اینجا توضیح داده شود، اما در مرجع کتابخانهٔ Python پوشش داده شده است. بر خلاف گزینههای --include و --exclude ، گزینههای عبارت باقاعده با فایلهای دربرگیرنده یا قرارگرفته درون فایلهای منطبق مطابقت پیدا نمیکنند. بنابراین برای نمونه
- 1.
- کلیدهای API استفادهشده برای Amazon Drive دارای سقف محدودیت عملیاتی (production limits) نیستند. شرکت Amazon اعلام نکرده است که سقف محدودیتهای محیط توسعه چقدر است و به درخواستهای افزودن duplicity به فهرست سفید (whitelist) پاسخی نمیدهد. ابزار مرتبط دیگر، acd_cli، به محدودیتهای توسعه تنزل یافت، اما همچنان بهجز در موارد استفاده بیشازحد، بهخوبی کار میکند. اگر هنگام استفاده از این بکاند با throttling (محدودسازی نرخ) و مشکلات مشابه در Amazon Drive مواجه شدید، لطفاً آنها را به لیست پستی گزارش دهید.
- 2.
- اگر پیشتر از بکاند acd+acdcli استفاده میکردید، اکیداً توصیه میشود که بهجای آن به بکاند ad مهاجرت کنید، چرا که این بکاند مستقیماً با Amazon Drive ارتباط برقرار میکند. لازم است یکبار دیگر OAuth را تنظیم کنید، اما در غیر این صورت میتوانید نسخههای پشتیبان و پیکربندی خود را حفظ نمایید.
نکتهای درباره AMAZON S3 (A NOTE ON AMAZON S3)
تهیه نسخه پشتیبان در Amazon S3 از کتابخانه boto3 استفاده میکند.
برنامه Duplicity از تمام گزینههای پیکربندی ارائهشده توسط boto3 برای احراز هویت و مدیریت نشست پشتیبانی میکند. این موارد شامل استفاده از متغیرهای محیطی، فایلهای پیکربندی AWS (~/.aws/config) و فایلهای اطلاعات ورود AWS (~/.aws/credentials) است. برای اطلاعات دقیق در مورد نحوه پیکربندی boto3، لطفاً به مستندات رسمی boto3 مراجعه کنید: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html
متغیرهای محیطی زیر معمولاً برای احراز هویت استفاده میشوند:
AWS_SECRET_ACCESS_KEY
بکاند boto3 نمونه خط فرمان پشتیبانگیری با استفاده از متغیرهای محیطی:
نمونه پیکربندی با استفاده از فایل اطلاعات ورود AWS (~/.aws/credentials):
aws_access_key_id = <key_id>
aws_secret_access_key = <access_key>
بکاند boto3 از ایجاد باکت (bucket creation) پشتیبانی نمیکند. این تصمیم عمدی باعث سادهسازی کد شده و از مشکلات مربوط به انتخاب منطقه (region) جلوگیری میکند. علاوه بر این، اعطای مجوز ایجاد باکت به نقش پشتیبانگیری احتمالاً شیوه مناسبی نیست. در بیشتر موارد، نقشی که برای پشتیبانگیری استفاده میشود بهتر است به باکتهای مشخصی محدود گردد.
بکاند boto3 فقط از باکتهای جدیدتر به سبک دامنه (domain style) پشتیبانی میکند. Amazon در حال حرکت به سمت منسوخ کردن سبک قدیمی باکتها است، بنابراین مهاجرت به سبک جدید توصیه میشود.
بکاند boto3 در حال حاضر از آغاز بازیابی از رده ذخیرهسازی glacier پشتیبانی نمیکند. هنگام بازیابی یک نسخه پشتیبان از glacier یا glacier deep archive، فایلهای پشتیبان ابتدا باید خارج از برنامه (out of band) بازیابی شوند. هنگام بازیابی نسخههای پشتیبان از ذخیرهسازی سرد (cold storage)، چندین گزینه وجود دارد که از نظر هزینه و سرعت متفاوت هستند. برای جزئیات به مستندات Amazon مراجعه کنید.
اگر با خطاهای مجموع مقابلهای (checksum) مواجه شدید که مانع از بارگذاری میشوند، ممکن است به دلیل یک مشکل شناختهشده در نحوه محاسبه checksum توسط boto3 باشد. بهعنوان راهحل موقت، میتوانید متغیرهای محیطی زیر را تنظیم کنید:
AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
یا آنها را به فایل پیکربندی AWS خود (~/.aws/config) اضافه کنید:
request_checksum_calculation = when_required
response_checksum_validation = when_required
میتوانید گزینه --s3-endpoint-url (برای دسترسی به سرویسهای غیر Amazon S3 یا نقاط پایانی منطقهای) را اضافه کنید و ممکن است به گزینه --s3-region-name (برای باکتهای ایجادشده در مناطق خاص) و سایر گزینههای --s3-... که در بالا مستند شدهاند، نیاز داشته باشید..SH "نکتهای درباره دسترسی به AZURE (A NOTE ON AZURE ACCESS)" پشتانهٔ Azure نیازمند نصب بودن کتابخانهٔ کلاینت Microsoft Azure Storage Blobs برای Python روی سیستم است. بخش REQUIREMENTS را ببینید.
این پشتانه از متغیر محیطی AZURE_CONNECTION_STRING (اجباری) استفاده میکند. این رشته شامل تمام اطلاعات لازم مانند نام Storage Account و کلید اعتبارسنجی است. میتوانید آن را در بخش Access Keys حساب ذخیرهسازی خود پیدا کنید.
برنامهٔ Duplicity هنگام انجام پشتیبانگیری، ساخت ظرف (container) را بر عهده خواهد گرفت. از ایجاد دستی آن از قبل خودداری کنید.
نام کانتینر (که در url پشتیبانگیری داده میشود) باید یک نام معتبر DNS و مطابق با قوانین نامگذاری زیر باشد:
- 1.
- نام کانتینر باید با یک حرف یا عدد شروع شود و تنها میتواند شامل حروف، اعداد و نویسهٔ خط تیره (-) باشد.
- 2.
- هر نویسهٔ خط تیره (-) باید دقیقاً قبل و بعد از یک حرف یا عدد قرار گیرد؛ خط تیرههای متوالی در نام کانتینر مجاز نیستند.
- 3.
- تمام حروف در نام کانتینر باید حروف کوچک باشند.
- 4.
- طول نام کانتینر باید بین ۳ تا ۶۳ نویسه باشد.
این قوانین از سوی Azure تعیین شدهاند؛ ببینید: https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata
نکتهای درباره دسترسی به BOX (A NOTE ON BOX ACCESS)
پشتانهٔ box نیازمند نصب بودن boxsdk به همراه پشتیبانی از jwt روی سیستم است. بخش REQUIREMENTS را ببینید.
این پشتانه از متغیر محیطی BOX_CONFIG_PATH (اختیاری) استفاده میکند. این رشته شامل مسیر فایل config.json برنامهٔ سفارشی box است. باید یا این متغیر محیطی یا پارامتر پرسمان config در url مشخص شود؛ در صورتی که هر دو مشخص شده باشند، اولویت با پارامتر پرسمان خواهد بود.
ایجاد یک برنامه سفارشی BOX (Create a Box custom app)
برای استفاده از پشتانهٔ box، کاربر باید یک برنامهٔ سفارشی box در کنسول توسعهدهندگان box ایجاد کند (https://app.box.com/developers/console).
پس از ایجاد برنامهٔ سفارشی جدید، لطفاً اطمینان حاصل کنید که مطابق زیر پیکربندی شده باشد:
- 1.
- گزینهٔ «App Access Only» را برای «App Access Level» انتخاب کنید
- 2.
- گزینهٔ «Write all files and folders stored in Box» را علامت بزنید
- 3.
- یک جفتکلید عمومی/خصوصی (Public/Private Keypair) ایجاد کنید
کاربر همچنین باید با کلیک بر روی دکمهٔ «+» و وارد کردن client_id (که در صفحهٔ پیکربندی برنامهٔ سفارشی یافت میشود)، در کنسول مدیریت (https://app.box.com/master/custom-apps) دسترسیهای لازم را به برنامه اعطا کند.
نکتهای درباره دسترسی به CLOUD FILES (A NOTE ON CLOUD FILES ACCESS)
ابزار Pyrax رابط برنامهنویسی مدیریت ابری نسل جدید Rackspace است که دسترسی به Cloud Files را نیز شامل میشود. پشتانهٔ cfpyrax نیازمند نصب بودن کتابخانهٔ pyrax روی سیستم است. بخش REQUIREMENTS را ببینید.
ابزار Cloudfiles پیادهسازی اکنون منسوخشدهٔ Rackspace از پروتکل OpenStack Object Storage است. کاربرانی که مایل به استفاده از Duplicity با Rackspace Cloud Files هستند، برای اطمینان از پشتیبانی باید به افزونهٔ جدید Pyrax مهاجرت کنند.
این پشتانه نیازمند نصب بودن python-cloudfiles روی سیستم است. بخش REQUIREMENTS را ببینید.
این پشتانه از سه متغیر محیطی برای اعتبارسنجی استفاده میکند: CLOUDFILES_USERNAME (اجباری)، CLOUDFILES_APIKEY (اجباری)، CLOUDFILES_AUTHURL (اختیاری)
اگر CLOUDFILES_AUTHURL مشخص نشده باشد، مقدار پیشفرض آن برابر با مقداری خواهد بود که توسط python-cloudfiles ارائه شده و به rackspace اشاره دارد؛ بنابراین برای استفاده از سایر ارائهدهندگان cloud files، این مقدار باید تنظیم شود..SH "نکتهای درباره دسترسی به DROPBOX (A NOTE ON DROPBOX ACCESS)"
- 1.
- پیش از هر
چیز،
بکاند Dropbox به
یک توکن
احراز هویت
معتبر نیاز
دارد. این
توکن باید
از طریق
متغیر
محیطی DPBX_ACCESS_TOKEN
ارسال شود.
برای دریافت آن، لطفاً یک برنامهٔ «Dropbox API» در نشانی زیر ایجاد کنید: https://www.dropbox.com/developers/apps/create
سپس به تنظیمات برنامه مراجعه کرده و از بخش OAuth2 گزینهٔ «Generated access token» را به کار ببرید.
همچنین میتوانید به duplicity اجازه دهید توکن دسترسی را خودش تولید کند. در این حالت، با استفاده از مقادیر صفحهٔ تنظیمات برنامه، متغیرهای DPBX_APP_KEY ، DPBX_APP_SECRET را بهطور موقت export کرده و duplicity را بهصورت تعاملی اجرا کنید.
این دستور نشانی اینترنتی (URL) مورد نیازی را چاپ میکند که باید برای دریافت توکن OAuth2 برنامه در مرورگر باز کنید. کافی است دستورالعملهای روی صفحه را دنبال کرده و سپس توکن تولیدشده را در متغیر DPBX_ACCESS_TOKEN قرار دهید. پس از اتمام کار، میتوانید متغیرهای DPBX_APP_KEY و DPBX_APP_SECRET را unset کنید. - 2.
- پوشهٔ «some_dir» باید از قبل در پوشهٔ Dropbox وجود داشته باشد. بسته به نوع توکن دسترسی، این مسیر میتواند یکی از موارد زیر باشد:
App Folder: مسیر وابسته به پوشهٔ اختصاصی برنامه است. کلاینت Dropbox آن را در این مسیر نشان خواهد داد: ~/Dropbox/Apps/<app-name>
- 3.
- هنگام استفاده از Dropbox برای ذخیرهسازی، به یاد داشته باشید که تمام فایلها، از جمله موارد موجود در پوشهٔ Apps، با تمام رایانههای متصل همگامسازی خواهند شد. شاید ترجیح دهید یک حساب Dropbox جداگانه مخصوص نسخههای پشتیبان اختصاص دهید و هیچ رایانهای را به آن حساب متصل نکنید. همچنین میتوانید قابلیت selective sync را در تمامی رایانهها پیکربندی کنید تا از همگامسازی فایلهای پشتیبان جلوگیری شود.
نکتهای درباره پیشوندهای نام فایل (A NOTE ON FILENAME PREFIXES)
پیشوندهای نام فایل میتوانند در multi backend همراه با حالت mirror برای تعریف قواعد وابستگی (affinity rules) استفاده شوند. همچنین میتوان آنها را در ترکیب با قواعد چرخهٔ حیات S3 (S3 lifecycle rules) به کار گرفت تا فایلهای آرشیو به Glacier منتقل شوند، در حالی که متادیتا (فایلهای امضا و مانیفست) همچنان در S3 باقی بمانند.
duplicity نیازی به دسترسی به فایلهای آرشیو ندارد، مگر در زمان بازیابی (restore) از نسخهٔ پشتیبان.
نکتهای درباره GOOGLE CLOUD STORAGE (GCS via Interoperable Access)
نمای کلی (Overview)
دسترسی duplicity به GCS در حال حاضر بر Interoperability API آن (اساساً همان S3 برای GCS) متکی است. پیش از امکان دسترسی، این قابلیت باید صراحتاً فعال شود. برای جزئیات، بخش بعدی یعنی آمادهسازیها (Preparations) در زیر را بخوانید.
آمادهسازیها (Preparations)
- 1.
- ورود به سامانه در https://console.cloud.google.com
- 2.
- رفتن به مسیر Cloud Storage->Settings->Interoperability
- 3.
- ایجاد یک Service account (در صورت نیاز)
- 4.
- ایجاد کلید دسترسی و راز (secret) برای Service account HMAC (!!فوراً آن را کپی کنید!! زیرا کلید مخفی بعداً قابل بازیابی نخواهد بود)
- 5.
- رفتن به مسیر Cloud Storage->Browser
- 6.
- ایجاد یک باکت (bucket)
- 7.
- افزودن دسترسیها برای Service account مربوطهای که در مرحلهٔ قبل برای راهاندازی دسترسی Interoperability استفاده شد
پس از راهاندازی، میتوانید کلید و راز دسترسی ایجادشده برای Interoperable Storage Access را مطابق آنچه در بخش بعدی شرح داده شده است، به duplicity ارسال نمایید..SS کاربرد مثالهای زیر دسترسی به GCS را از طریق S3 برای اقدام collection-status نشان میدهند. متغیرهای محیطی، گزینهها و قالب نشانی اینترنتی (URL) نشاندادهشده البته برای تمام اقدامهای دیگر نیز قابل استفاده هستند.
با استفاده از boto3 و مشخصکردن دستی --s3-endpoint-url
نکتهای درباره بکاند GDRIVE (A NOTE ON GDRIVE BACKEND)
بکاند :GDrive یک نسخه بازنویسیشده از بکاند :PyDrive با وابستگیهای کمتر و راهاندازی سادهتر است - این بکاند از کلیدهای JSON که مستقیماً از Google Cloud Console بارگیری میشوند استفاده میکند.
توجه داشته باشید که گوگل ۲ روش درایو دارد: `Shared Drives` (درایوهای اشتراکی، سابقاً Team Drives) و `My Drive` (درایو من)؛ هر دو روش قابل اشتراکگذاری هستند اما به آدرسدهی متفاوتی نیاز دارند.
برای یک پوشه در Google Shared Drives
شناسه
درایو
اشتراکی (Share Drive ID)
بهصورت یک
پارامتر
پرسوجو،
driveID، در URL
بکاند
مشخص
میشود.
مثال:
gdrive://developer.gserviceaccount.com/target-folder/?driveID=<SHARED
DRIVE ID>
برای یک پوشه اشتراکی مبتنی بر Google My Drive
شناسه
پوشه MyDrive
بهصورت یک
پارامتر
پرسوجو،
myDriveFolderID، در URL
بکاند
مشخص
میشود
مثال:
export
GOOGLE_SERVICE_ACCOUNT_URL=<serviceaccount-name>@<serviceaccount-name>.iam.gserviceaccount.com
gdrive://${GOOGLE_SERVICE_ACCOUNT_URL}/<target-folder-name-in-myDriveFolder>?myDriveFolderID=root
همچنین دو روش برای احراز هویت جهت استفاده از GDrive وجود دارد: با یک حساب معمولی یا با یک «حساب سرویس» (service account). با یک حساب سرویس، حسابی جداگانه ایجاد میشود که تنها از طریق APIهای گوگل قابل دسترسی است و امکان ورود از طریق وب را ندارد. با یک حساب معمولی، میتوانید نسخههای پشتیبان را در Google Drive عادی خود ذخیره کنید.
برای استفاده از یک حساب سرویس، به کنسول توسعهدهندگان گوگل در https://console.developers.google.com مراجعه کنید. یک پروژه ایجاد کرده و مطمئن شوید که Drive API برای پروژه فعال است. در بخش «Credentials»، روی «Create credentials» کلیک کنید، سپس Service Account را به همراه کلید JSON انتخاب نمایید.
متغیر محیطی GOOGLE_SERVICE_JSON_FILE هنگام فراخوانی duplicity باید شامل مسیر فایل JSON باشد.
export GOOGLE_SERVICE_JSON_FILE=<path-to-serviceaccount-credentials.json>
روش جایگزین، استفاده از یک حساب معمولی است. برای انجام این کار، مطابق مراحل بالا شروع کنید، اما هنگام ایجاد Client ID جدید، «Create OAuth client ID» را با نوع برنامه «Desktop app» انتخاب کنید. فایل client_secret.json را برای کلاینت جدید بارگیری کرده و متغیر محیطی GOOGLE_CLIENT_SECRET_JSON_FILE را روی مسیر این فایل، و GOOGLE_CREDENTIALS_FILE را روی مسیر فایلی که duplicity توکن احراز هویت را در آن نگهداری خواهد کرد تنظیم کنید - این مکان باید قابل نوشتن باشد.
نکته: بهعنوان یک بررسی صحت سنجی (sanity check)، بکاند GDrive میزبان و نامکاربری برگرفته از URL را با کلید JSON مطابقت میدهد و در صورت عدم تطابق نشانیها، از ادامه عملیات خودداری میکند. باید نشانی ایمیل (برای حسابهای سرویس) یا Client ID (برای حسابهای معمولی OAuth) در URL وجود داشته باشد. بخش URL FORMAT در بالا را ببینید.
اولین اجرا / اعتبارسنجی OAuth 2.0
در طول نخستین اجرا، از شما خواسته میشود نشانی اینترنتی (URL) را در مرورگر خود باز کنید تا دسترسی به Google Drive شما تأیید شود. یک سرویس موقت HTTP روی یک رابط شبکه محلی برای این منظور راهاندازی خواهد شد (بهطور پیشفرض روی http://localhost:8080). آدرس IP/میزبان و درگاه (port) در صورت نیاز میتوانند بهترتیب با مشخص کردن متغیرهای محیطی GOOGLE_OAUTH_LOCAL_SERVER_HOST و GOOGLE_OAUTH_LOCAL_SERVER_PORT تنظیم شوند.
اگر duplicity را در یک مکان دوردست (remote) اجرا میکنید، باید مطمئن شوید که با استفاده از یک مرورگر و از طریق روشهایی مانند فوروارد درگاه (port forwarding) یا مجوز موقت فایروال، قادر به دسترسی به سرویس HTTP فوق خواهید بود.
اطلاعات احراز هویت پس از اعتبارسنجی موفقیتآمیز، جهت استفادههای بعدی در فایل JSON ذکرشده در بالا ذخیره خواهند شد..SH "نکتهای درباره HUBIC (A NOTE ON HUBIC)" پسفرست hubic نیازمند نصب بودن کتابخانه pyrax بر روی سیستم است. بخش REQUIREMENTS را ببینید. باید اطلاعات احراز هویت خود برای hubiC را در فایلی به نام ~/.hubic_credentials و طبق الگوی زیر تنظیم کنید:
[hubic] email = your_email password = your_password client_id = api_client_id client_secret = api_secret_key redirect_uri = http://localhost
نکتهای درباره پسفرست IDRIVE (A NOTE ON IDRIVE BACKEND)
این پسفرست از یک راهانداز واسط برای IDrive استفاده میکند: “idevsutil_dedup” که هنگام راهاندازی حساب کاربری بر روی سیستم شما نصب خواهد شد. همچنین میتوان آن را مستقیماً از IDrive بارگیری کرد.
برای کارکرد این پسفرست، باید متغیرهای محیطی زیر را تنظیم کنید:
- 1.
- IDEVSPATH - مسیر مطلق به فایل راهانداز (idevsutil_dedup).
- 2.
- IDRIVEID - نام حساب کاربری (نام ورود).
- 3.
- IDBUCKET - نام باکت (bucket) مورد نظر برای این نشست پشتیبانگیری.
- 4.
- IDPWDFILE - مسیر مطلق به فایلی که حاوی گذرواژه حساب است.
- 5.
- IDKEYFILE -
(اختیاری)
مسیر مطلق
به فایلی که
حاوی کلید
رمزنگاری
سفارشی است.
همچنین گزینه --idr-fakeroot را ببینید.
نکتهای درباره IMAP (A NOTE ON IMAP)
میتوان از یک حساب IMAP بهعنوان مقصدی برای بارگذاری استفاده کرد. شناسهکاربری (userid) میتواند مشخص شود و گذرواژه درخواست خواهد شد.
مقدار from_address_prefix میتواند مشخص شود (و احتمالاً بهتر است مشخص شود). این متن بهعنوان نشانی “From” در کارساز IMAP استفاده خواهد شد. سپس در عملیات بازیابی (یا فهرستکردن)، from_address_prefix بین نسخههای پشتیبان مختلف تمایز قائل میشود.
نکتهای درباره پسفرست MEDIAFIRE (A NOTE ON MEDIAFIRE BACKEND)
این پسفرست نیازمند نصب بودن کتابخانه پایتون mediafire بر روی سیستم است. بخش REQUIREMENTS را ببینید.
برای نام کاربری (و گذرواژه، در صورت ارائه از طریق خط فرمان) از نویسههای گریز URL استفاده کنید:
در صورتی که پوشه مقصد وجود نداشته باشد، برای شما ایجاد خواهد شد.
نکتهای درباره پسفرست MULTI (A NOTE ON MULTI BACKEND)
پسفرست multi به duplicity امکان میدهد تا فضای ذخیرهسازی موجود در بیش از یک پسفرست ذخیرهسازی را با یکدیگر ترکیب کند (برای نمونه، میتوانید بهطور همزمان روی یک حساب google drive و یک حساب onedrive ذخیرهسازی انجام دهید تا عملاً از مجموع فضای ذخیرهسازی هر دو بهرهمند شوید). مسیر URL یک فایل پیکربندی با قالب JSON را مشخص میکند که شامل فهرستی از پسفرستهای مورد استفاده است. URL همچنین میتواند پارامترهای “query” را برای پیکربندی رفتار کلی مشخص کند. هر عنصر این فهرست باید یک عنصر “url” داشته باشد، و همچنین میتواند شامل یک “description” اختیاری و یک فهرست اختیاری “env” از متغیرهای محیطی برای پیکربندی آن پسفرست باشد..SS "پارامترهای پرسوجو (Query Parameters)" پارامترهای پرسوجو در قالب استاندارد HTTP پس از URL فایل قرار میگیرند؛ برای نمونه:
multi:///path/to/config.json?mode=mirror&onfail=abort multi:///path/to/config.json?mode=stripe&onfail=continue multi:///path/to/config.json?onfail=abort&mode=stripe multi:///path/to/config.json?onfail=abort
- mode=stripe
- این حالت (پیشفرض) دسترسی نوبتی (round-robin) را به فهرست پشتانهها (backends) برقرار میکند. در این حالت، تمام پشتانهها باید قابل اعتماد باشند، زیرا از دست رفتن یکی از آنها به معنای از دست رفتن یکی از فایلهای آرشیو خواهد بود.
- mode=mirror
- این حالت مانند یک فضای ذخیرهسازی RAID1 به پشتانهها دسترسی پیدا میکند؛ به این صورت که تمام فایلها در همه پشتانهها ذخیره میشوند و خواندن فایلها از نخستین پشتانه موفق صورت میگیرد. از دست رفتن هر پشتانهای نباید موجب بروز شکست شود. توجه داشته باشید پشتانههایی که بعداً اضافه میشوند تنها فایلهای جدید را دریافت میکنند و ممکن است نیاز به همگامسازی دستی با یکی دیگر از پشتانههای فعال داشته باشند.
- onfail=continue
- این تنظیم (پیشفرض) تمام عملیات نوشتن را بر اساس نهایت تلاش (best-effort) ادامه میدهد. هر گونه شکست موجب امتحان کردن پشتانه بعدی میشود. شکست تنها زمانی گزارش میشود که همه پشتانهها در عملیات دادهشده ناموفق باشند، به همراه نتیجه خطای ناشی از آخرین شکست.
- onfail=abort
- این تنظیم هرگونه شکست در نوشتن روی پشتانه را به عنوان شرایط خاتمهدهنده در نظر میگیرد و خطا را گزارش میکند. عملیات خواندن دادهها و فهرست کردن فایلها از این قاعده مستقل هستند و در صورت شکست، پشتانه بعدی را امتحان خواهند کرد.
نمونه فایل JSON (JSON File Example)
[
{
"description": "a comment about the backend"
"url": "abackend://myuser@domain.com/backup",
"env": [
{
"name" : "MYENV",
"value" : "xyz"
},
{
"name" : "FOO",
"value" : "bar"
}
],
"prefixes": ["prefix1_", "prefix2_"]
},
{
"url": "file:///path/to/dir"
}
]
نکتهای درباره پشتانه ONEDRIVE (A NOTE ON ONEDRIVE BACKEND)
پشتانه onedrive:// هم با حسابهای کاربری شخصی و تجاری onedrive و هم با درایوهای sharepoint کار میکند. در نخستین استفاده، یک URL به شما ارائه میشود تا با یک حساب microsoft متصل شوید. آن را در مرورگر وب خود باز کنید.
پس از احراز هویت، URL بازهدایتشده را کپی کرده و به duplicity بازگردانید. برنامه duplicity یک توکن را دریافت کرده و در ~/.duplicity_onedrive_oauthtoken.json ذخیره میکند. این مسیر را میتوان با تنظیم متغیر محیطی DUPLICITY_ONEDRIVE_TOKEN بازنویسی کرد.
برنامه duplicity از یک App ID پیشفرض که در Microsoft Azure AD ثبت شده است استفاده میکند. در حسابهای تجاری، این شناسه باید توسط مدیر Tenant مربوط به Office365 شما تأیید شود.
ثبت و تنظیم شناسه برنامه مایکروسافت اختصاصی خود (Register and set your own microsoft app id)
- 1.
- از https://portal.azure.com بازدید کنید.
- 2.
- گزینه "Enterprise Applications" و سپس "Create your own Application" را انتخاب کنید.
- 3.
- نام برنامه خود را وارد کرده و "Register an application to integrate with Azure AD" را انتخاب کنید.
- 4.
- به صفحه بعدی بروید و redirect uri را روی "https://login.microsoftonline.com/common/oauth2/nativeclient" تنظیم کنید و از منوی کشویی "Public client/native" را برگزینید. روی create کلیک کنید.
- 5.
- شناسه
برنامه (application id)
را در "Enterprise Applications"
پیدا کرده و
متغیر
محیطی DUPLICITY_ONEDRIVE_CLIENT_ID
را با مقدار
آن تنظیم
نمایید.
اطلاعات بیشتر درباره برنامههای مایکروسافت در: https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app.SS "پشتیبانگیری در یک سایت sharepoint بهجای onedrive"
برای استفاده از یک سایت sharepoint باید tenant و site id مربوط به آن سایت را پیدا کرده و مشخص کنید.
- 1.
- با حساب کاربری مایکروسافت خود در https://<o365_tenant>.sharepoint.com وارد شوید.
- 2.
- به نشانی https://<o365_tenant>.sharepoint.com/sites/<path_to_site>/_api/site/id بروید.
- 3.
- مقدار UUID نمایشدادهشده (site_id) را کپی کرده و متغیر محیطی DUPLICITY_ONEDRIVE_ROOT را روی "sites/<o365_tenant>.sharepoint.com,<site_id>/drive" تنظیم کنید.
نکتهای درباره پسزمینه PAR2 WRAPPER (A NOTE ON PAR2 WRAPPER BACKEND)
پسزمینه Par2 Wrapper میتواند در ترکیب با تمام پسزمینههای دیگر برای ایجاد فایلهای بازیابی استفاده شود. کافی است par2+ را پیش از یک طرحواره (scheme) معمولی اضافه کنید (برای نمونه par2+ftp://user@host/dir یا par2+s3+http://bucket_name ). این کار فایلهای بازیابی par2 را برای هر بایگانی ایجاد کرده و همه آنها را در پسزمینه کپسولهشده بارگذاری میکند.
پیش از بازیابی، بایگانیها اعتبارسنجی خواهند شد. در صورت وجود بلوکهای بازیابی کافی، بایگانیهای آسیبدیده بهصورت زنده تعمیر میشوند.
از --par2-redundancy percent برای تنظیم اندازه (و افزونگی) فایلهای بازیابی برحسب percent استفاده کنید.
نکتهای درباره دسترسی به PCA (A NOTE ON PCA ACCESS)
سرویس PCA یک راهکار بایگانی داده طولانیمدت توسط OVH است. این سرویس نسخه اندکی تغییریافته از OpenStack Swift را اجرا میکند که باعث ایجاد تأخیر در فرایند واکشی دادهها میشود. این سرویس گزینهای مناسب برای یک پیکربندی multi backend است که در آن جلدها (volumes) دریافت میشوند در حالی که از پسزمینه دیگری برای ذخیره مانیفستها و امضاها استفاده میگردد.
این پسزمینه نیازمند نصب بودن python-swiftclient بر روی سیستم است. همچنین python-keystoneclient برای تعامل با سرویس هویت Keystone در OpenStack مورد نیاز است. بخش REQUIREMENTS را ببینید.
این پسزمینه از متغیرهای محیطی زیر برای احراز هویت استفاده میکند: PCA_USERNAME (الزامی)، PCA_PASSWORD (الزامی)، PCA_AUTHURL (الزامی)، PCA_USERID (اختیاری)، PCA_TENANTID (اختیاری، اما ارائه نام tenant یا شناسه tenant الزامی است) PCA_REGIONNAME (اختیاری)، PCA_TENANTNAME (اختیاری، اما ارائه نام tenant یا شناسه tenant الزامی است)
اگر کاربر قبلاً احراز هویت شده باشد، میتوان متغیرهای محیطی زیر را بهجای آنها به کار برد: PCA_PREAUTHURL (الزامی)، PCA_PREAUTHTOKEN (الزامی)
اگر PCA_AUTHVERSION تعیین نشده باشد، بهطور پیشفرض از نسخه ۲ استفاده خواهد شد.
نکتهای درباره پسزمینه PYDRIVE (A NOTE ON PYDRIVE BACKEND)
پسزمینه pydrive نیازمند نصب بودن بسته پایتون PyDrive بر روی سیستم است. بخش REQUIREMENTS را ببینید.
دو روش برای استفاده از PyDrive وجود دارد: با یک حساب کاربری معمولی یا با یک «حساب سرویس» (service account). با یک حساب سرویس، یک حساب جداگانه ایجاد میشود که فقط از طریق رابطهای برنامهنویسی گوگل (Google APIs) در دسترس است و امکان ورود از طریق وب را ندارد. با یک حساب کاربری معمولی، میتوانید پشتیبانها را در Google Drive عادی خود ذخیره کنید.
برای استفاده از یک حساب سرویس، به کنسول توسعهدهندگان گوگل در https://console.developers.google.com بروید. پروژهای ایجاد کرده و مطمئن شوید که Drive API برای آن پروژه فعال شده است. در زیر بخش «APIs and auth»، روی Create New Client ID کلیک کرده و سپس Service Account با کلید P12 را انتخاب کنید.
فایل کلید
.p12 حساب را
بارگیری
کرده و آن را
به قالب .pem
تبدیل کنید:
openssl pkcs12 -in XXX.p12 -nodes -nocerts > pydriveprivatekey.pem
محتوای فایل .pem باید برای احراز هویت به متغیر محیطی GOOGLE_DRIVE_ACCOUNT_KEY داده شود.
نشانی رایانامه حساب بهعنوان بخشی از URL استفاده خواهد شد. بخش URL FORMAT در بالا را ببینید.
راهکار جایگزین، استفاده از یک حساب کاربری معمولی است. برای این کار، همانند بالا شروع کنید، اما هنگام ایجاد Client ID جدید، گزینه «Installed application» از نوع «Other» را انتخاب کنید. فایلی با محتوای زیر ایجاد کرده و نام فایل آن را در متغیر محیطی GOOGLE_DRIVE_SETTINGS قرار دهید:
client_config_backend: settings
client_config:
client_id: <Client ID from developers' console>
client_secret: <Client secret from developers' console>
save_credentials: True
save_credentials_backend: file
save_credentials_file: <filename to cache credentials>
get_refresh_token: True
در این سناریو، بخشهای نام کاربری و میزبان در URL هیچ نقشی ندارند و فقط مسیر اهمیت دارد. در طول نخستین اجرا، از شما خواسته میشود نشانی اینترنتی (URL) نمایشدادهشده را در مرورگر خود باز کنید تا دسترسی به درایو شما مجاز شود. پس از اعطای مجوز، یک کد تأیید دریافت خواهید کرد تا آن را مجدداً در Duplicity جایگذاری کنید. سپس اطلاعات هویتی برای استفادههای بعدی در فایل اشارهشده در بالا ذخیره میشوند..SH "نکتهای دربارهٔ بکاند RCLONE (A NOTE ON RCLONE BACKEND)" برنامهٔ Rclone یک ابزار خط فرمانی قدرتمند برای همگامسازی فایلها و دایرکتوریها به و از ارائهدهندگان مختلف فضای ذخیرهسازی ابری است.
کاربرد (Usage)
هنگامی که یک ریموت rclone را از طریق
پیکربندی کردید و یک ریموت را با موفقیت راهاندازی نمودید (بهعنوان مثال gdrive برای Google Drive)، با فرض اینکه میتوانید فایلهای ریموت خود را با
فهرست کنید، میتوانید پشتیبانگیری خود را با
آغاز کنید. لطفاً به اسلش بعد از دونقطهٔ دوم توجه داشته باشید. برخی ارائهدهندگان فضای ذخیرهسازی با یا بدون وجود اسلش بعد از دونقطه کار میکنند، اما برخی دیگر کار نمیکنند. از آنجا که duplicity در صورت نبود اسلش خطای ناهنجار بودن URL میدهد، همیشه آن را بعد از دونقطه قرار دهید؛ بکاند خودش آن را مدیریت خواهد کرد.
گزینهها (OPTIONS)
توجه داشته باشید که تمام گزینههای rclone میتوانند از طریق متغیرهای محیطی نیز تنظیم شوند. این مورد بهخوبی در اینجا مستند شده است:
اما بهطور خلاصه باید نام بلند گزینه را بردارید، -- ابتدایی را حذف کنید، - را به _ تبدیل کنید، حروف را بزرگ (UPPERCASE) کرده و _RCLONE را به ابتدای آن اضافه نمایید. برای مثال
نکتهای دربارهٔ بکاند SLATE (A NOTE ON SLATE BACKEND)
سه متغیر
محیطی با
بکاند slate
استفاده
میشوند:
1. `SLATE_API_KEY` - کلید API
شما برای slate
2. `SLATE_SSL_VERIFY` - یکی از
مقادیر '1'
(صحیح/True) یا '0'
(غلط/False) برای
اعتبارسنجی
ssl (اختیاری -
بهطور
پیشفرض True)
3. `PASSPHRASE` - عبارت
عبور gpg شما
برای
رمزنگاری
(اختیاری - در
صورت عدم
تنظیم
درخواست
میشود، یا
در صورت
استفاده از
پارامتر `--no-encryption`
اصلاً
استفاده
نمیشود)
برای استفاده از بکاند slate، از طرحوارهٔ (scheme) زیر استفاده کنید:
برای مثال، پشتیبانگیری کامل از دایرکتوری جاری در slate:
یک پیشنمایش در اینجا موجود است: https://gitlab.com/Shr1ftyy/duplicity/uploads/675664ef0eb431d14c8e20045e3fafb6/slate_demo.mp4
نکتهای دربارهٔ بکاندهای SSH (A NOTE ON SSH BACKENDS)
بکاندهای
ssh از
پروتکلهای
انتقال sftp و
scp/ssh
پشتیبانی
میکنند.
این یک
مسئلهٔ
سردرگمکنندهٔ
شناختهشده
برای
کاربران
است چرا که
این
پروتکلها
اساساً با
یکدیگر
تفاوت
دارند. اگر
قصد دارید
از طریق یکی
از آنها به
بکاند خود
دسترسی
پیدا کنید،
لطفاً از
پیشنیازهای
سرور برای
پشتیبانی
از دسترسی
sftp یا scp/ssh
اطلاع حاصل
فرمایید.
برای
پیچیدهتر
شدن موضوع،
کاربر
میتواند
از بین
چندین
بکاند ssh از
طریق
پیشوند
طرحواره (scheme
prefix) یکی را
انتخاب کند:
paramiko+ (پیشفرض)،
pexpect+، lftp+... .
بکاندهای
paramiko و pexpect از
گزینههای
--use-scp، --ssh-askpass و --ssh-options.
پشتیبانی
میکنند.
تنها
بکاند pexpect
به کاربر
اجازه
میدهد تا
گزینههای
--scp-command و --sftp-command. را
تعریف کند.
بکاند SSH paramiko (پیشفرض) یک پیادهسازی دوباره و کامل از پروتکلهای ssh بهصورت بومی در python است. مزایای آن سرعت و قابلیت نگهداری است. عیب جزئی آن نیاز به بستههای اضافی است که در REQUIREMENTS فهرست شدهاند. در حالت sftp (پیشفرض) تمام عملیاتها از طریق دستورات متناظر sftp انجام میشوند. هرچند در حالت scp ( --use-scp ) از دسترسی scp برای عملیات get/put استفاده میشود، اما لیستگیری از طریق شل از راه دور ssh انجام میپذیرد.
بکاند SSH pexpect بکاند سنتی ssh است که از باینریهای خط فرمانی ssh از طریق pexpect استفاده میکند. نسخههای قدیمیتر از scp برای عملیات get و put و از sftp برای عملیات فهرست کردن و حذف استفاده میکردند. نسخهٔ فعلی از sftp برای تمام چهار عملیاتِ پشتیبانیشده استفاده میکند، مگر اینکه از گزینهٔ --use-scp برای بازگشت به رفتار قدیمی استفاده شود.
بکاند SSH lftp صرفاً به این دلیل وجود دارد که lftp میتواند با باینریهای خط فرمانی ssh تعامل داشته باشد. این بکاند بهعنوان آخرین راهکار در صورتی که گزینههای بالا بنا به دلایلی با خطا مواجه شوند، در نظر گرفته شده است..SS چرا استفاده از sftp به جای scp؟ تغییر به sftp بدین منظور انجام شد تا به سیستم راه دور اجازه داده شود فرایند پشتیبانگیری را chroot کند، در نتیجه امنیت بهتری فراهم شود و بر خلاف scp دچار مشکلات نقلقول شل (shell quoting) نگردد. همچنین scp از هیچ نوع فهرستبندی فایل پشتیبانی نمیکند، بنابراین دسترسی sftp یا ssh در کنار آن همیشه برای کارکرد صحیح این حالت backend مورد نیاز خواهد بود. Sftp این محدودیتها را ندارد، اما به اجرای یک سرویس sftp بر روی سرور backend نیازمند است که گاهی اوقات امکانپذیر نیست.
نکتهای درباره اعتبارسنجی گواهی SSL (A NOTE ON SSL CERTIFICATE VERIFICATION)
اعتبارسنجی
گواهی در
حال حاضر [02.2016]
تنها در
backendهای webdav و lftp
پیادهسازی
شده است.
نسخههای
قدیمیتر python
2.7.8- و
باینریهای
قدیمیتر lftp
به یک
پایگاهداده
فایلمحور
از
گواهیهای
مرجع صدور
گواهی (فایل
cacert) نیاز
دارند.
با این حال،
نسخههای
جدیدتر python 2.7.9+ و
نگارشهای
اخیر lftp از
گواهیهای
پیشفرض
سیستم
(معمولاً در
/etc/ssl/certs) و همچنین
مشخصکردن
پوشه
جایگزین
گواهی ca از
طریق --ssl-cacert-path.
پشتیبانی
میکنند.
فایل cacert باید یک فایل متنی با قالببندی PEM باشد، همانگونه که در حال حاضر توسط پروژه CURL ارائه میشود. ببینید:
پس از ایجاد یا دریافت یک فایل cacert معتبر، باید آن را در یکی از مسیرهای زیر کپی کنید:
~/duplicity_cacert.pem
/etc/duplicity/cacert.pem
برنامه duplicity به همین ترتیب در آن مسیرها جستجو میکند و در صورت نیافتن آن ناموفق خواهد بود. با این وجود میتوانید گزینه --ssl-cacert-file <file> را مشخص کنید تا duplicity به نسخهای در مکانی دیگر هدایت شود.
در نهایت، گزینه --ssl-no-check-certificate برای غیرفعال کردن کامل اعتبارسنجی گواهی وجود دارد، در صورتی که کتابخانه ssl ناموجود باشد یا اعتبارسنجی مد نظر نباشد. با احتیاط از آن استفاده کنید، چرا که حتی با سرورهای دارای گواهی خودامضا (self-signed)، فراهم کردن دستی گواهی ca خصوصی مسلماً گزینه امنتری است.
نکتهای درباره دسترسی SWIFT (ذخیرهسازی شیء OPENSTACK)
سرویس Swift
همان سرویس
ذخیرهسازی
شیء (Object Storage) در OpenStack
است.
این backend به نصب
بودن python-switclient بر
روی سیستم
نیاز دارد.
همچنین python-keystoneclient
برای
استفاده از
سرویس هویت
Keystone در OpenStack مورد
نیاز است.
بخش REQUIREMENTS را
ببینید.
این سرویس از متغیرهای محیطی زیر برای احراز هویت استفاده میکند:
SWIFT_PASSWORD (الزامی)،
SWIFT_AUTHURL (الزامی)،
SWIFT_TENANTID یا SWIFT_TENANTNAME (با SWIFT_AUTHVERSION=2 الزامی است؛ همچنین میتواند به صورت جایگزین در SWIFT_USERNAME مانند SWIFT_USERNAME="tenantname:user" تعریف شود)،
SWIFT_PROJECT_ID یا SWIFT_PROJECT_NAME (با SWIFT_AUTHVERSION=3 الزامی است)،
SWIFT_USERID (اختیاری، تنها برای IBM Bluemix ObjectStorage الزامی است)،
SWIFT_REGIONNAME (اختیاری).
اگر کاربر پیشتر احراز هویت شده باشد، متغیرهای محیطی زیر میتوانند به جای آن استفاده شوند: SWIFT_PREAUTHURL (الزامی)، SWIFT_PREAUTHTOKEN (الزامی)
اگر SWIFT_AUTHVERSION مشخص نشده باشد، به طور پیشفرض نسخه 1 خواهد بود..SH "نکتهای درباره رمزنگاری متقارن و امضا (A NOTE ON SYMMETRIC ENCRYPTION AND SIGNING)" امضا کردن و رمزنگاری متقارن به صورت همزمان با باینری gpg در خط فرمان، همانطور که درون duplicity استفاده میشود، مسئلهای به ویژه چالشبرانگیز است. آزمایشها نشان دادهاند که ترکیبهای زیر کارایی دارند:
۱. پیکربندی صحیح gpg-agent. از گزینهٔ --use-agent استفاده کرده و هر دو عبارت عبور (کلید متقارن و کلید امضا) را در کادر گفتگوی gpg-agent وارد کنید.
۲. استفاده از یک PASSPHRASE دلخواه برای رمزنگاری متقارن، در حالی که کلید امضا دارای یک عبارت عبور خالی باشد.
۳. متغیر PASSPHRASE بهکاررفته برای رمزنگاری متقارن و عبارت عبور کلید امضا کاملاً یکسان باشند.
نکتهای درباره پسانه XORRISO (A NOTE ON THE XORRISO BACKEND)
این پسانه از ابزار xorriso برای الحاق پشتیبانها به رسانههای نوری یا تصاویر ISO9660 استفاده میکند.
از متغیرهای محیطی زیر برای اعمال تنظیمات بیشتر استفاده کنید:
XORRISO_WRITE_SPEED، مشخص کردن سرعت نوشتن روی دیسک نوری. یکی از مقادیر [min, max]
XORRISO_ASSERT_VOLID، مشخص کردن شناسه حجم (volume ID) الزامی برای ISO. در صورتی که شناسه حجم واقعی متفاوت باشد، عملیات لغو میشود.
XORRISO_ARGS، فقط برای کاربران حرفهای. ارسال آرگومانهای دلخواه به xorriso. مثال: XORRISO_ARGS='-md5 all'
مشکل ARGPARSE (ARGPARSE PROBLEM)
از زمانی که تجزیهٔ خط فرمان را از optparse به argparse تغییر دادیم، یک باگ همواره تلاشهای ما را با چالش مواجه کرده است. مقدارهایی که شبیه به گزینهها هستند، به عنوان گزینه تفسیر میشوند. این بدان معناست که دستوری مانند:
--gpg-options '--homedir=/home/user'
نه به عنوان یک گزینه و مقدار متناظر با آن، بلکه به عنوان دو گزینهٔ مجزا تفسیر میشود که باعث میشود --gpg-options خطا دهد که مقدار خود را دریافت نکرده است. برای دور زدن این مشکل، باید آنها را با '=' پیوند دهید، مانند:
--gpg-options="--homedir=/home/user"
گزارش باگ argparse در این پیوند قرار دارد:
https://github.com/python/cpython/issues/53580 .
در صورت تمایل، میتوانید به آنجا مراجعه کرده و با ثبت نظری حمایتی، پیگیر اصلاح آن شوید. با رأیهای مثبت کافی ممکن است این باگ برطرف شود.
توجه داشته باشید که در خود گزارش باگ، راهکار جایگزین '=' هرگز ذکر نشده است، اما ما دریافتهایم که این روش، تمیزترین و خواناترین راهکار موجود است.
مشکلات شناختهشده / باگها (KNOWN ISSUES / BUGS)
پیوندهای سخت (Hard links) در حال حاضر پشتیبانی نمیشوند (با آنها مانند فایلهای عادی بدون پیوند رفتار خواهد شد).
با امضاهای نامعتبر به جای ثبت پیام خطای مناسب، به عنوان امضای خالی رفتار خواهد شد.
عملکرد و قالبهای داده (OPERATION AND DATA FORMATS)
این بخش عملکرد پایهای duplicity و قالب فایلهای دادهٔ آن را شرح میدهد. برای استفاده از duplicity خواندن این بخش الزامی نیست.
فایلهایی که duplicity برای ذخیرهٔ دادههای پشتیبان استفاده میکند، فایلهای tar با قالب GNU tar هستند. برای پشتیبانگیریهای افزایشی (incremental)، فایلهای جدید به صورت عادی درون فایل tar ذخیره میشوند. اما هنگامی که فایلی تغییر میکند، به جای ذخیرهٔ یک نسخهٔ کامل از فایل، تنها یک diff که توسط rdiff(1) تولید شده ذخیره میشود. اگر فایلی حذف شود، یک فایل با طول ۰ در tar ذخیره میگردد. بازیابی «دستی» یک بایگانی duplicity با استفاده از tar و سپس cp، rdiff و rm در صورت نیاز، امکانپذیر است. این بایگانیهای duplicity دارای پسوند difftar هستند.
هر دو مجموعه پشتیبان کامل و افزایشی، قالب یکسانی دارند. در عمل، یک مجموعه پشتیبان کامل، همان پشتیبان افزایشی ایجادشده از یک امضای خالی است (به پایین مراجعه کنید). فایلهای موجود در مجموعههای پشتیبان کامل با duplicity-full آغاز میشوند، در حالی که مجموعههای افزایشی با duplicity-inc شروع میگردند. هنگام بازیابی، duplicity وصلهها را به ترتیب اعمال میکند؛ بنابراین به عنوان مثال، حذف یک مجموعه پشتیبان کامل ممکن است مجموعههای افزایشی مرتبط را غیرقابل استفاده کند.
به منظور تعیین این که کدام فایلها حذف شدهاند و برای محاسبه diff فایلهای تغییریافته، duplicity نیاز دارد اطلاعات نشستهای قبلی را پردازش کند. این اطلاعات به صورت فایلهای tar ذخیره میشوند که در آن، دادههای هر مدخل به جای محتوای فایل، حاوی امضای فایل (تولیدشده توسط rdiff) است. این مجموعههای امضا پسوند sigtar دارند.
فایلهای امضا برای بازیابی یک مجموعه پشتیبان الزامی نیستند، اما بدون یک امضای بهروز، duplicity نمیتواند یک پشتیبان افزایشی را به بایگانی موجود ضمیمه کند.
برای صرفهجویی در پهنای باند، duplicity مجموعههای امضای کامل و مجموعههای امضای افزایشی تولید میکند. یک مجموعه امضای کامل برای هر پشتیبان کامل، و یک مجموعه افزایشی برای هر پشتیبان افزایشی ایجاد میشود. این فایلها به ترتیب با duplicity-full-signatures و duplicity-new-signatures شروع میشوند. این امضاها هم به صورت محلی و هم از راه دور ذخیره خواهند شد. اگر رمزنگاری فعال باشد، امضاهای راه دور رمزگذاری میشوند. امضاهای محلی رمزنگاری نخواهند شد و در دایرکتوری بایگانی ذخیره میشوند (ببینید --archive-dir)..SHپیشنیازها (REQUIREMENTS) برنامه Duplicity به یک سیستمعامل شبهپازیکس (POSIX-like) با مفسر نصبشدهٔ python نسخهٔ 3.9+ نیاز دارد. بهتر است از آن تحت GNU/Linux استفاده شود.
برخی بکاندها نیز به مؤلفههای اضافی نیاز دارند (که احتمالاً بهصورت بسته برای پلتفرم خاص شما در دسترس هستند):
- Amazon Drive backend
- python-requests - http://python-requests.org
python-requests-oauthlib - https://github.com/requests/requests-oauthlib - azure backend (سرویس Azure Storage Blob)
- کتابخانه کلاینت Microsoft Azure Storage Blobs برای پایتون - https://pypi.org/project/azure-storage-blob
- boto3 backend (S3 Amazon Web Services, Google Cloud Storage) (پیشفرض)
- boto3 نسخهٔ 1.x - https://github.com/boto/boto3
- box backend (box.com)
- boxsdk - https://github.com/box/box-python-sdk
- cfpyrax backend (Rackspace Cloud) و hubic backend (hubic.com)
- Rackspace CloudFiles Pyrax API - http://docs.rackspace.com/sdks/guide/content/python.html
- idrived backend (IDrive)
- باینری idevsutil_dedup - https://www.idrive.com
- dpbx backend (Dropbox)
- Dropbox Python SDK - https://www.dropbox.com/developers/reference/sdk
- gdocs gdata backend (منسوخ)
- Google Data APIs Python Client Library - http://code.google.com/p/gdata-python-client
- gdocs pydrive backend (پیشفرض)
- بکاند pydrive را ببینید
- gio backend (Gnome VFS API)
- PyGObject - http://live.gnome.org/PyGObject
D-Bus (dbus)- http://www.freedesktop.org/wiki/Software/dbus - jottacloud backend (jottacloud.com)
- jottalib - https://pypi.python.org/pypi/jottalib
- lftp backend (مورد نیاز برای ftp، ftps، fish [بر بستر ssh] - همچنین از sftp و webdav[s] پشتیبانی میکند)
- کلاینت LFTP - http://lftp.yar.ru
- MEGA backend (تنها برای حسابهای ایجاد شده پیش از نوامبر ۲۰۱۸ کار میکند) (mega.nz)
- کلاینت megatools - https://github.com/megous/megatools
- MEGA v2 and v3 backend (برای تمامی حسابهای MEGA کار میکند) (mega.nz)
- کلاینت MEGAcmd - https://mega.nz/cmd
- multi backend
- Multi -- ذخیره در
بیش از یک
بکاند
(همچنین بخش A NOTE ON MULTI BACKEND در زیر را ببینید). - ncftp backend (ftp، انتخاب از طریق ncftp+ftp://)
- NcFTP - http://www.ncftp.com
- OneDrive backend (Microsoft OneDrive)
- python-requests-oauthlib - https://github.com/requests/requests-oauthlib
- Par2 Wrapper Backend
- par2cmdline - http://parchive.sourceforge.net
- pydrive backend
- PyDrive -- یک
کتابخانه
واسط برای
google-api-python-client - https://pypi.python.org/pypi/PyDrive
(همچنین بخش A NOTE ON PYDRIVE BACKEND در زیر را ببینید). - rclone backend
- rclone - https://rclone.org
- rsync backend
- باینری کلاینت rsync - http://rsync.samba.org
- ssh paramiko backend (پیشفرض)
- paramiko (SSH2 برای
پایتون) -
http://pypi.python.org/pypi/paramiko
(دانلودها)؛
http://github.com/paramiko/paramiko (صفحه
پروژه)
pycrypto (Python Cryptography Toolkit) - http://www.dlitz.net/software/pycrypto - ssh pexpect backend (منسوخ)
- باینریهای
کلاینت sftp/scp OpenSSH -
http://www.openssh.com
ماژول پایتون pexpect - http://pexpect.sourceforge.net/pexpect.html - swift backend (OpenStack Object Storage)
- ماژول
پایتون swiftclient -
https://github.com/openstack/python-swiftclient
ماژول پایتون keystoneclient - https://github.com/openstack/python-keystoneclient - sx backend (Skylable SX)
- Skylable SX - http://www.skylable.com
- webdav backend
- فایل
پایگاهداده
مرجع صدور
گواهی (CA)
برای
اعتبارسنجی
گواهی SSL در
اتصالهای
HTTPS - http://curl.haxx.se/docs/caextract.html
(همچنین بخش A NOTE ON SSL CERTIFICATE VERIFICATION را ببینید).
ماژول پایتون kerberos برای احراز هویت kerberos - https://github.com/02strich/pykerberos - MediaFire backend
- MediaFire Python Open SDK - https://pypi.python.org/pypi/mediafire
- xorriso backend
- xorriso - https://www.gnu.org/software/xorriso.SH
"نویسندگان
(AUTHORS)"
نویسنده اصلی - Ben Escoto <bescoto@stanford.edu>
نگهدارنده فعلی - Kenneth Loafman <kenneth@loafman.com>
- مشارکتکنندگان مستمر
- Edgar Soldin, Mike Terry
بیشتر پسانهها بهصورت مستقل مشارکت شدهاند. اطلاعات مربوط به پدیدآورندگان آنها در سرآیند فایل مربوطه قرار دارد.
همچنین مایلیم از همه کسانی که مشکلات را در فهرست پستی یا در launchpad گزارش دادهاند، وصلهها را ارسال کرده یا به اشکال دیگر یاری رساندهاند قدردانی کنیم. duplicity بدون شما تا این اندازه پایدار و سودمند نمیبود.
تشکر ویژهای تقدیم rsync.net، ارائهدهنده ذخیرهسازی ابری با پشتیبانی صریح از duplicity، بهخاطر چند کمک مالی و ارائه تعرفه ویژه “duplicity friends” برای خدمات پشتیبانگیری خارج از محل خود. برای کسب جزئیات به info@rsync.net ایمیل بفرستید.
همچنین ببینید (SEE ALSO)
| August 22, 2026 | Version 3.2.0.2 |