DUPLICITY(1) User Manuals DUPLICITY(1)

duplicity - پشتیبان‌گیری افزایشی رمزگذاری‌شده در فضای ذخیره‌سازی محلی یا دوردست

برای توضیحات تفصیلی پیرامون هر عمل، بخش 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

برنامهٔ duplicity به صورت افزایشی از فایل‌ها و پوشه‌ها در قالب حجم‌هایی با فرمت tar که با GnuPG رمزگذاری شده‌اند نسخهٔ پشتیبان تهیه کرده و آن‌ها را در یک بستر ذخیره‌سازی دوردست (یا محلی) قرار می‌دهد. برای فهرستی از تمام بسترهای پشتیبانی‌شده و نحوهٔ آدرس‌دهی آن‌ها، بخش URL FORMAT را ببینید. از آنجا که duplicity از librsync استفاده می‌کند، پشتیبان‌گیری‌های افزایشی از نظر مصرف فضا بهینه هستند و تنها بخش‌هایی از فایل‌ها را که از زمان آخرین پشتیبان‌گیری تغییر کرده‌اند ثبت می‌کنند. در حال حاضر duplicity از فایل‌های حذف‌شده، مجوزهای کامل یونیکس، uid/gid، دایرکتوری‌ها، پیوندهای نمادین، fifos و غیره پشتیبانی می‌کند، اما از پیوندهای سخت پشتیبانی نمی‌کند.

اگر از دایرکتوری ریشه / پشتیبان می‌گیرید، به یاد داشته باشید که /proc را با --exclude مستثنی کنید، در غیر این صورت احتمالاً duplicity به دلیل موارد نامتعارف موجود در آن متوقف خواهد شد.

در اینجا نمونه‌ای از یک پشتیبان‌گیری آورده شده است که با استفاده از sftp از /home/me در some_dir روی ماشین other.host پشتیبان تهیه می‌کند:

duplicity /home/me sftp://uid@other.host/some_dir

اگر دستور بالا به طور مکرر اجرا شود، اولین بار یک پشتیبان کامل (full) خواهد بود و دفعات بعد به صورت افزایشی (incremental) انجام می‌شوند. برای اجبار به تهیهٔ یک پشتیبان کامل، از عمل full استفاده کنید:

duplicity full /home/me sftp://uid@other.host/some_dir

یا اجبار به تهیهٔ پشتیبان کامل پس از دوره‌های مشخص با --full-if-older-than <time> ، برای نمونه یک پشتیبان کامل در هر ماه:

duplicity --full-if-older-than 1M /home/me sftp://uid@other.host/some_dir

اکنون فرض کنید تصادفاً /home/me را حذف کرده‌ایم و می‌خواهیم آن را به همان صورتی که در زمان آخرین پشتیبان‌گیری بود بازیابی کنیم:

duplicity sftp://uid@other.host/some_dir /home/me

برنامهٔ duplicity وارد حالت بازیابی می‌شود چرا که URL پیش از دایرکتوری محلی قرار گرفته است. اگر بخواهیم تنها فایل “Mail/article” را در /home/me به همان شکلی که سه روز پیش بود در /home/me/restored_file بازیابی کنیم:

duplicity -t 3D --path-to-restore Mail/article sftp://uid@other.host/some_dir /home/me/restored_file

عمل زیر آخرین پشتیبان را با فایل‌های فعلی مقایسه می‌کند:

duplicity verify sftp://uid@other.host/some_dir /home/me

در نهایت، duplicity چندین گزینهٔ گنجاندن/مستثنی کردن (include/exclude) را می‌شناسد. برای نمونه، دستور زیر از دایرکتوری ریشه پشتیبان تهیه می‌کند، اما /mnt، /tmp و /proc را مستثنی می‌سازد:

duplicity --exclude /mnt --exclude /tmp --exclude /proc / file:///usr/local/backup

توجه داشته باشید که در این حالت مقصد، دایرکتوری محلی /usr/local/backup است. دستور زیر تنها از دایرکتوری‌های /home و /etc در ریشه پشتیبان می‌گیرد:

duplicity --include /home --include /etc --exclude '**' / file:///usr/local/backup

همچنین duplicity می‌تواند از طریق ftp به یک مخزن دسترسی پیدا کند. اگر نام کاربری مشخص شده باشد، متغیر محیطی BACKEND_PASSWORD برای تعیین گذرواژه خوانده می‌شود:

BACKEND_PASSWORD=mypassword duplicity /local/dir ftp://user@other.host/some_dir.SH "عملیات‌ها (ACTIONS)" برنامه Duplicity از عملیات‌ها استفاده می‌کند، که می‌توانند به شکل کوتاه یا بلند مشخص شوند و با گزینه‌ها تنظیم دقیق گردند.
عملیات‌های 'backup' یا 'restore' می‌توانند به‌طور ضمنی از ترتیب قرارگیری مسیر محلی و url دوردست استنباط شوند. سایر عملیات‌ها باید به‌صورت صریح مشخص گردند. برای موارد نادری که مسیر محلی ممکن است نام یک عملیات معتبر duplicity باشد، می‌توانید یک '/' به انتهای نام مسیر محلی اضافه کنید تا دیگر با یک عملیات اشتباه گرفته نشود.

نکته: توضیحات زیر برخی از گزینه‌هایی را که می‌توان در ارتباط با آن عملیات استفاده کرد شرح می‌دهند، اما نه همهٔ آن‌ها را. برای توضیحات دقیق‌تر به بخش گزینه‌ها (OPTIONS) مراجعه کنید.

انجام یک پشتیبان‌گیری. Duplicity اگر امضاهای قدیمی یافت شوند به‌طور خودکار یک پشتیبان‌گیری افزایشی انجام می‌دهد. در غیر این صورت یک زنجیرهٔ پشتیبان‌گیری جدید آغاز می‌شود.
انجام یک پشتیبان‌گیری کامل. حتی اگر امضاها برای یک پشتیبان‌گیری افزایشی در دسترس باشند، یک زنجیرهٔ پشتیبان‌گیری جدید آغاز می‌شود.
در صورت درخواست، یک پشتیبان‌گیری افزایشی انجام خواهد شد. اگر هیچ امضای قدیمی یافت نشود، Duplicity لغو خواهد شد.
عملیات verify یکپارچگی آرشیوهای پشتیبان را در مکان دوردست با بارگیری هر فایل و بررسی این‌که هم بتواند آرشیو را بازیابی کند و هم فایل بازیابی‌شده با امضای آن فایل که در پشتیبان ذخیره شده مطابقت داشته باشد (یعنی فایل آرشیو‌شده را با مقدار هش آن در زمان آرشیو مقایسه می‌کند)، آزمایش می‌نماید. Verify در واقع بازیابی انجام نمی‌دهد و هیچ فایل محلی را بازنویسی نخواهد کرد. Duplicity در صورتی که هر فایلی با امضای ذخیره‌شده در آرشیو برای آن فایل مطابقت نداشته باشد، با یک سطح خطای غیرصفر خارج خواهد شد. در سطح پرگویی (verbosity) ۴ یا بالاتر، پیامی برای هر فایلی که با امضای ذخیره‌شده تفاوت دارد ثبت می‌کند. برای مقایسهٔ فایل‌ها، آن‌ها باید روی رایانهٔ محلی بارگیری شوند. Verify نسخهٔ پشتیبان‌گیری‌شدهٔ فایل را با نسخهٔ محلی فعلی فایل‌ها مقایسه نمی‌کند، مگر این‌که گزینهٔ --compare-data استفاده شود (پایین را ببینید).
گزینهٔ --path-to-restore عملیات verify را به آن فایل یا پوشه محدود می‌کند. گزینهٔ --time امکان انتخاب یک نسخهٔ پشتیبان برای اعتبارسنجی را فراهم می‌سازد. گزینهٔ --compare-data مقایسهٔ داده‌ها را فعال می‌کند (پایین را ببینید).
وضعیت مخزن پشتیبان را با چاپ زنجیره‌ها و مجموعه‌های پیداشده، و تعداد حجم‌ها در هر یک خلاصه می‌کند.
گزینهٔ --file-changed تغییرات فایل را (در جدیدترین زنجیرهٔ پشتیبان‌گیری) خلاصه می‌کند. گزینهٔ --show-changes-in-set تمام تغییرات فایل را در indexاُمین مجموعهٔ پشتیبان خلاصه می‌کند (که در آن index برابر 0 به معنای جدیدترین مجموعه، 1 به معنای مجموعه ماقبل آخر، و غیره است). گزینهٔ --jsonstat تغییرات را در قالب json چاپ می‌کند و در صورتی که پشتیبان‌ها با --jsonstat ایجاد شده باشند، آمار را از فایل‌های jsonstat نمایش می‌دهد. اگر <index> روی -1 تنظیم شود، آمار کل زنجیرهٔ پشتیبان چاپ می‌شود.
فهرست فایل‌های موجود در تازه‌ترین پشتیبان یا پشتیبان در زمان مشخص‌شده را نمایش می‌دهد. این اطلاعات از فایل‌های امضا استخراج خواهد شد، نه از خود داده‌های آرشیو. بنابراین نیازی به بارگیری کل آرشیو نیست، اما از سوی دیگر اگر آرشیو حذف شده یا آسیب دیده باشد، این عملیات آن را تشخیص نخواهد داد.
می‌توانید همه چیز را به‌طور کامل یا پوشه‌ها/فایل‌های انتخاب‌شده را از یک زمان مشخص بازیابی کنید. از مسیر نسبی همان‌طور که توسط list-current-files چاپ می‌شود استفاده کنید.
برای پالایش بازیابی مبتنی بر الگو، گزینه‌های انتخاب فایل مانند --include، --exclude، --include-regexp، و --exclude-regexp نیز مسیرها را نسبت به ریشهٔ آرشیو، همان‌طور که توسط list-current-files چاپ می‌شود، مطابقت می‌دهند. این گزینه‌های انتخاب فایل را نمی‌توان با --path-to-restore ترکیب کرد. معمولاً نیازی به مشخص کردن این عملیات نیست زیرا duplicity هنگامی که تشخیص دهد URL پیش از پوشهٔ محلی آمده است، به‌طور خودکار وارد حالت بازیابی می‌شود.
حذف تمام مجموعه‌های پشتیبان که از زمان داده‌شده قدیمی‌تر هستند. اگر مجموعه‌های پشتیبان جدیدتر از time به آن‌ها وابسته باشند، مجموعه‌های پشتیبان قدیمی حذف نخواهند شد. برای اطلاعات بیشتر بخش قالب‌های زمان (TIME FORMATS) را ببینید. توجه داشته باشید که این عملیات را نمی‌توان با backup یا عملیات‌های دیگر مانند cleanup ترکیب کرد. همچنین توجه داشته باشید که --force برای حذف فایل‌ها به جای صرفاً فهرست کردن آن‌ها مورد نیاز خواهد بود.
حذف تمام مجموعه‌های پشتیبانی که از countاُمین پشتیبان کاملِ آخر قدیمی‌تر هستند (به عبارت دیگر، نگه‌داشتن count پشتیبان کامل آخر و مجموعه‌های افزایشی مرتبط با آن‌ها). count باید بزرگ‌تر از صفر باشد. مقدار 1 به این معنی است که تنها تازه‌ترین زنجیرهٔ پشتیبان نگه‌داشته خواهد شد. توجه داشته باشید که --force برای حذف فایل‌ها به جای صرفاً فهرست کردن آن‌ها مورد نیاز خواهد بود.
حذف مجموعه‌های افزایشی تمام مجموعه‌های پشتیبانی که از countاُمین پشتیبان کاملِ آخر قدیمی‌تر هستند (به عبارت دیگر، نگه‌داشتن تنها پشتیبان‌های کامل قدیمی و نه افزایشی‌های آن‌ها). count باید بزرگ‌تر از صفر باشد. مقدار 1 به این معنی است که تنها تازه‌ترین زنجیرهٔ پشتیبان دست‌نخورده باقی خواهد ماند. توجه داشته باشید که --force برای حذف فایل‌ها به جای صرفاً فهرست کردن آن‌ها مورد نیاز خواهد بود.
حذف فایل‌های اضافه و زائد duplicity در backend مشخص‌شده. فایل‌های غیر duplicity یا فایل‌های موجود در مجموعه‌های دادهٔ کامل حذف نخواهند شد. این کار معمولاً تنها پس از آن لازم است که یک نشست duplicity با شکست مواجه شود یا پیش از موعد متوقف گردد. توجه داشته باشید که --force برای حذف فایل‌ها به جای صرفاً فهرست کردن آن‌ها مورد نیاز خواهد بود..SH "گزینه‌ها (OPTIONS)"
در صورت تلاش برای استفاده از همان دایرکتوری آرشیو یا backend دوردست برای پشتیبان‌گیری از دایرکتوری‌های متفاوت، عملیات متوقف نمی‌شود. duplicity در صورت نیاز به این سوئیچ، به شما اطلاع خواهد داد.
دایرکتوری آرشیو.
نکته: این گزینه در نگارش 0.6.0 تغییر یافته است. دایرکتوری آرشیو اکنون برای مدیریت ماندگاری داده‌ها جهت بهبودهای فعلی و آتی ضروری است. به این ترتیب، این گزینه اکنون تنها برای تغییر مکان دایرکتوری آرشیو استفاده می‌شود. دایرکتوری آرشیو نباید حذف شود، وگرنه duplicity ناچار خواهد بود آن را از مخزن دوردست بازسازی کند (که ممکن است به رمزگشایی محتوای پشتیبان نیاز داشته باشد).

هنگام پشتیبان‌گیری یا بازیابی، این گزینه مشخص می‌کند که دایرکتوری آرشیو محلی باید در 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
(منسوخ‌شده) این گزینه به دلیل ناپایداری منسوخ شده است. `--concurrency` جایگزین جدید آن است.
سطح ذخیره‌سازی استاندارد (storage tier) مورد استفاده برای فایل‌های پشتیبان (Hot|Cool|Cold|Archive).
بزرگ‌ترین اندازه بارگذاری پشتیبانی‌شده را مشخص می‌کند که در آن کتابخانه Azure تنها یک فراخوانی put انجام می‌دهد. اگر اندازه محتوا مشخص و کمتر از این مقدار باشد، کتابخانه Azure تنها یک درخواست put را برای بارگذاری یک بلوک اجرا خواهد کرد. انتظار می‌رود این عدد بر حسب بایت باشد.
اندازه بلوک مورد استفاده توسط کتابخانه Azure را برای بارگذاری blobها در صورتی که به چندین بلوک تقسیم شده باشند، مشخص می‌کند. حداکثر اندازه بلوکی که این سرویس پشتیبانی می‌کند 104857600 (100MiB) و مقدار پیش‌فرض 4194304 (4MiB) است.
حداکثر تعداد اتصالات را برای انتقال یک blob به Azure در صورتی که اندازه blob از 64MB فراتر رود، مشخص می‌کند. مقدار پیش‌فرض 2 است.
باعث می‌شود duplicity به جای حذف فایل‌ها در B2، آن‌ها را پنهان کند. در ترکیب با قوانین چرخه حیات (lifecycle rules) در B2 مفید است.
تعداد ثانیه‌هایی را مشخص می‌کند که duplicity پس از وقوع یک خطا، پیش از تلاش مجدد برای تکرار عملیات، منتظر می‌ماند.
امکان انتخاب صریح backend برای cloudfiles را فراهم می‌کند. مقدار پیش‌فرض pyrax است. از طرف دیگر می‌توانید cloudfiles را انتخاب کنید.
تعداد فرایندهای پس‌زمینه‌ای را مشخص می‌کند که باید برای اجرای هم‌زمان وظایف backend استفاده شوند. این کار عملیات محلی مانند رمزگذاری/رمزگشایی، ساخت حجم و غیره را از انتقال به/از backendها تفکیک می‌کند. نتیجه نهایی مورد نظر، پشتیبان‌گیری سریع‌تر است، زیرا پردازنده محلی (CPU) و پهنای باند شما می‌توانند به صورت پیوسته‌تری مورد استفاده قرار گیرند. استفاده از این گزینه مستلزم نیاز به فضای دیسک بیشتر در محل ذخیره‌سازی موقت است؛ به جای این که در هر زمان تنها نیاز به ذخیره یک حجم باشد، فضای ذخیره‌سازی کافی برای نگهداری 1+n حجم نیاز خواهد بود. بسته به backend و شبکه، عملیات موازی می‌توانند روند کار را تسریع کنند. یک نقطه شروع مناسب برای concurrency مقدار ۱ تا ۴ است. برای تنظیم دقیق، آمار duplicity را بررسی کنید. در بیشتر موارد این مقدار نباید از تعداد پردازنده‌های سیستم شما منهای یک فراتر رود.
امکان انتخاب دایرکتوری پیکربندی duplicity را فراهم می‌سازد. مقدار پیش‌فرض ~/.config/duplicity است.
امکان انتخاب اندازه بلوک بر حسب کیلوبایت را جهت استفاده در رونوشت‌برداری فراهم می‌کند. افزایش این مقدار ممکن است کپی فایل‌های بزرگ را تسریع کند. پیش‌فرض 128 است.
مقایسه داده‌های فایل‌های عادی را در عملیات verify فعال می‌کند. این کار یک صحت‌سنجی (verify) را همان‌گونه که در بالا تشریح شد برای بررسی درستی آرشیوهای پشتیبان انجام می‌دهد، اما افزون بر آن فایل‌های بازیابی‌شده را با فایل‌های موجود در target_directory مقایسه می‌کند. duplicity هیچ فایلی را در target_directory جایگزین نخواهد کرد. چنانچه صحت فایل‌ها به درستی تأیید نشود یا هر فایلی از آرشیو با فایل معادل آن در target_directory تفاوت داشته باشد، duplicity با یک کد خطای غیر صفر خارج می‌شود. در سطح پرگویی (verbosity) ۴ یا بالاتر، پیامی برای هر فایلی که با معادل خود در target_directory مغایرت داشته باشد ثبت خواهد شد.
پیوندهای نمادین (symlinks) را حین پشتیبان‌گیری دنبال و بازگشایی می‌کند. فعال‌سازی این گزینه به جای خود پیوند نمادین، داده‌های فایل/پوشه مقصد پیوند را بازگشایی و پشتیبان‌گیری می‌کند که می‌تواند به طور بالقوه حجم نسخه پشتیبان را افزایش دهد.
محاسبه می‌کند که چه کارهایی انجام خواهد شد، اما هیچ عملیاتی روی backend انجام نمی‌دهد.
هنگام پشتیبان‌گیری، به جای استفاده از رمزگذاری متقارن (سنتی)، با کلید عمومی ارائه‌شده رمزگذاری می‌کند. می‌تواند چندین بار مشخص شود. شناسه کلید (key-id) را می‌توان در هر یک از قالب‌های پشتیبانی‌شده توسط GnuPG وارد کرد؛ برای جزئیات به gpg(1)، بخش "HOW TO SPECIFY A USER ID" مراجعه کنید.
این گزینه تنها همراه با --encrypt-key قابل استفاده است، و مسیر keyring محرمانه را برای کلید رمزگذاری به filename تغییر می‌دهد. این keyring هنگام ایجاد پشتیبان استفاده نمی‌شود. در صورت عدم تعیین، از keyring محرمانه پیش‌فرض که معمولاً در .gnupg/secring.gpg قرار دارد استفاده می‌شود.
پارامتر تسهیل‌کننده؛ یکسان با --encrypt-key key-id --sign-key key-id.
فایل یا فایل‌های منطبق بر shell_pattern را مستثنی می‌کند. اگر یک دایرکتوری مطابقت یابد، فایل‌های زیر آن دایرکتوری نیز مطابقت داده می‌شوند. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید..TP --exclude-device-files استثنا کردن تمام فایل‌های دستگاه (device files). این گزینه می‌تواند به دلایل امنیتی/مجوزها یا در صورتی که duplicity فایل‌های دستگاه را به‌درستی مدیریت نمی‌کند، مفید باشد.
فایل‌های فهرست‌شده در filename را مستثنی می‌کند؛ به‌طوری که هر خط از فهرست فایل‌ها مطابق با همان قوانین --include و --exclude تفسیر می‌شود. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
استثنا کردن دایرکتوری‌ها در صورت وجود filename. به کاربر امکان می‌دهد پوشه‌هایی را که مایل به پشتیبان‌گیری از آن‌ها نیست، با افزودن یک فایل مشخص (مانند “.nobackup”) به‌جای نگهداری یک فهرست جامع exclude/include، مشخص کند.
استثنا کردن هر فایلی که تاریخ تغییر آن قدیمی‌تر از time مشخص‌شده باشد. از این گزینه می‌توان برای ایجاد یک پشتیبان جزئی که فقط شامل فایل‌های به‌تازگی تغییریافته است استفاده کرد. برای اطلاعات بیشتر بخش TIME FORMATS را ببینید.
استثنا کردن فایل‌های روی سیستم‌های فایلی (شناسایی‌شده با شماره دستگاه) غیر از سیستم فایلی که ریشهٔ دایرکتوری منبع روی آن قرار دارد.
استثنا کردن فایل‌های منطبق با regexp داده‌شده. برخلاف گزینهٔ --exclude این گزینه با فایل‌های درون دایرکتوری‌ای که با آن تطابق یافته، مطابقت داده نمی‌شود. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
یک پیشوند به تمام فایل‌ها یا تنها به فایل‌های manifest، archive، signature، jsonstat یا statistics اضافه می‌کند. همان مجموعه پیشوندها باید هنگام پشتیبان‌گیری و بازیابی مشخص شوند.
اگر هر دو پیشوند عمومی و ویژهٔ نوع تنظیم شده باشند، پیشوند عمومی پیش از پیشوندهای ویژهٔ نوع قرار خواهد گرفت.

همچنین ببینید A NOTE ON FILENAME PREFIXES

خواندن فهرستی از فایل‌ها برای پشتیبان‌گیری از filename به‌جای جستجو در کل دایرکتوری منبع پشتیبان. سایر عملیات مانند حالت عادی است، تنها روی زیرمجموعه مشخص‌شده از دایرکتوری منبع پشتیبان انجام می‌شود.

فایل‌ها باید خط‌به‌خط و به‌صورت نسبی نسبت به دایرکتوری منبع پشتیبان مشخص شوند. هرگونه مسیر مطلق خطایی ایجاد خواهد کرد. تمام نویسه‌های هر خط معنی‌دار هستند و به‌عنوان بخشی از مسیر در نظر گرفته می‌شوند، از جمله فاصله‌های خالی ابتدا و انتهای خط. خطوط با نویسهٔ خط جدید یا null جدا می‌شوند، بسته به اینکه آیا سوئیچ --null-separator داده شده باشد یا خیر.

نیازی به گنجاندن دایرکتوری والدِ فایل‌های فهرست‌شده نیست، گنجاندن آن‌ها به‌طور ضمنی انجام می‌شود. با این حال، محتوای هر دایرکتوری که به‌صراحت فهرست شده باشد، به‌طور ضمنی گنجانده نمی‌شود. هنگام استفاده از این گزینه، تمام فایل‌های مورد نیاز باید فهرست شوند.

تغییر نحوهٔ تفسیر الگوهای داده‌شده به آرگومان‌های گزینه‌های شرط انتخاب فایل --exclude و --include (و گونه‌های مختلف آن‌ها، از جمله فهرست‌های فایل). این گزینه‌ها می‌توانند چندین بار برای جابجایی بین تطبیق سراسری پوسته (shell globbing، پیش‌فرض)، رشته‌های تحت‌اللفظی (literal strings) و عبارات باقاعده (regular expressions)، با حساسیت به حروف بزرگ و کوچک (پیش‌فرض) یا بدون آن، به کار روند. تفسیر مشخص‌شده برای تمام شرایط انتخاب بعدی تا گزینهٔ بعدیِ --filter اعمال می‌شود.

برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.

ادامه دادن حتی در صورتی که ممکن است از دست رفتن داده‌ها رخ دهد. duplicity زمانی که این گزینه لازم باشد به کاربر اطلاع خواهد داد.
استفاده از اتصالات دادهٔ غیرفعال (PASV). حالت پیش‌فرض استفاده از غیرفعال است، اما در صورت شکست اتصال غیرفعال یا اتمام مهلت زمانی، به حالت عادی بازمی‌گردد.
استفاده از اتصالات دادهٔ عادی (PORT).
انجام یک پشتیبان‌گیری کامل در صورتی که پشتیبان‌گیری افزایشی درخواست شده باشد، اما آخرین پشتیبان‌گیری کامل در مجموعه قدیمی‌تر از time داده‌شده باشد. برای اطلاعات بیشتر بخش TIME FORMATS را ببینید.
انجام یک پشتیبان‌گیری کامل در صورتی که پشتیبان‌گیری افزایشی درخواست شده باشد، اما آخرین زنجیرهٔ پشتیبان‌گیری در حال حاضر دارای number یا بیشتر نسخهٔ پشتیبان افزایشی باشد.
استفاده از بک‌اند GIO و تفسیر هر URL همانند GIO.
چاپ یک پیام راهنما و خروج.
به شما امکان می‌دهد duplicity را مجبور کنید تا از file_path به‌عنوان باینری خط فرمان gpg استفاده کند. می‌تواند یک مسیر فایل مطلق یا نسبی یا نام یک فایل باشد. مقدار پیش‌فرض 'gpg' است. باینری از طریق متغیر محیطی PATH پیدا خواهد شد.

به شما امکان می‌دهد گزینه‌ها را به رمزنگاری 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) را ببینید.

تلاش برای نادیده‌گرفتن خطاهای خاص در صورت وقوع. این گزینه تنها برای این منظور در نظر گرفته شده است که امکان بازیابی یک نسخه پشتیبان را در مواجهه با مشکلات خاصی که در غیر این صورت منجر به شکست پشتیبان‌گیری می‌شوند، فراهم کند. استفاده از این گزینه هرگز توصیه نمی‌شود، مگر اینکه در شرایطی باشید که سعی در بازیابی از پشتیبان دارید و عملیات به دلیل مشکلی که می‌خواهید duplicity آن را نادیده بگیرد با شکست مواجه می‌شود. حتی در این صورت نیز بسته به نوع مشکل، این گزینه ممکن است بی‌اثر باشد.

لطفاً توجه داشته باشید در حالی که خطاهای نادیده‌گرفته‌شده ثبت می‌شوند، هیچ خلاصه‌ای در پایان عملیات برای اعلام مواردی که احیاناً نادیده گرفته شده‌اند ارائه نخواهد شد. اگر از این گزینه برای بازیابی اضطراری داده‌ها استفاده می‌شود، توصیه می‌شود پشتیبان را به‌گونه‌ای اجرا کنید که بتوانید گزارش لاگ آن را بازبینی کنید (به دنبال خطوط حاوی رشته IGNORED_ERROR بگردید).

اگر مجبور شدید به دلایلی که برایتان نامشخص است یا مشخص است ولی در حیطه مسئولیت شما نیست از این گزینه استفاده کنید، لطفاً با نگه‌دارندگان duplicity تماس بگیرید. نیاز به استفاده از این گزینه در محیط‌های عملیاتی معمولاً یک باگ تلقی می‌شود.

نشانی کامل ایمیل برای نام کاربری هنگام ورود به سرور imap. در صورت عدم ارائه، تنها بخش نام کاربری نشانی ایمیل استفاده می‌شود.
امکان مشخص‌کردن یک صندوق پستی (mailbox) متفاوت را فراهم می‌کند. پیش‌فرض "INBOX" است. زبان‌های دیگر ممکن است به صندوق پستی متفاوتی نسبت به مقدار پیش‌فرض نیاز داشته باشند.
سرویس idrived از مفهوم دایرکتوری "fakeroot" استفاده می‌کند که از طریق سوئیچ --idr-fakeroot=... تعریف می‌شود. این می‌تواند یک دایرکتوری موجود باشد، یا اینکه دایرکتوری در زمان اجرا بر روی ریشه سیستم فایل (میزبان) ایجاد شود. (هشدار: شما باید دسترسی نوشتن به ریشه را داشته باشید!). دایرکتوری‌های ایجادشده در زمان اجرا، هنگام خروج به‌طور خودکار حذف می‌شوند!
بنابراین در طرح بالا، می‌توانیم این‌گونه عمل کنیم:
duplicity --idr-fakeroot=nicepath idrived://DUPLICITY
فایل‌های ما در نهایت در این مسیر قرار می‌گیرند:
<MYBUCKET>/DUPLICITY/nicepath
مشابه --exclude است، اما در عوض فایل‌های منطبق را شامل (include) می‌کند. برعکس --exclude، این گزینه دایرکتوری‌های والد فایل‌های منطبق را نیز مطابقت می‌دهد (اگرچه لزوماً محتوای آن‌ها را شامل نمی‌شود). برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
مانند --exclude-filelist است، اما در عوض فایل‌های فهرست‌شده را شامل می‌کند. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
شامل کردن فایل‌های منطبق با عبارت باقاعده regexp. تنها فایل‌هایی که صراحتاً توسط regexp تطبیق داده شوند توسط این گزینه لحاظ خواهند شد. برای اطلاعات بیشتر بخش FILE SELECTION را ببینید.
ثبت داده‌های آماری مشابه آمارهای پیش‌فرضی که در انتهای یک عملیات پشتیبان‌گیری چاپ می‌شود؛ علاوه بر این، شامل برخی فراداده‌ها درباره زنجیره پشتیبان است، مانند اینکه چه زمانی پشتیبان کامل ایجاد شده و چه تعداد پشتیبان افزایشی پیش از آن گرفته شده است. قالب خروجی json است. این داده‌ها با سطح notice در stdout نوشته می‌شوند (مانند آمارهای کلاسیک) و آمارها به عنوان یک فایل مجزا در کنار manifest اما با پسوند "jsonstat" نگهداری می‌شوند. collection-status --show-changes-in-set <index> --jsonstat داده‌های جمع‌آوری‌شده در عملیات پشتیبان را اضافه کرده و قالب خروجی را به json تغییر می‌دهد. اگر <index> روی -1 تنظیم شود، آمار کل زنجیره پشتیبان چاپ می‌شود.
نوشتن نسخه‌های با قالب‌بندی ویژه از پیام‌های خروجی در توصیف‌کننده فایل (file descriptor) مشخص‌شده. قالب استفاده‌شده به گونه‌ای طراحی شده است که به آسانی توسط سایر برنامه‌ها پردازش‌پذیر باشد.
نوشتن نسخه‌های با قالب‌بندی ویژه از پیام‌های خروجی در فایل مشخص‌شده. قالب استفاده‌شده به گونه‌ای طراحی شده است که به آسانی توسط سایر برنامه‌ها پردازش‌پذیر باشد.
نوشتن لاگ به همراه برچسب زمان (timestamp) و سطح لاگ پیش از متن پیام، مشابه syslog.
حداکثر اندازه بلوک‌های بررسی‌شده برای تغییرات در طول فرآیند diff را محدود می‌کند.

به‌طور پیش‌فرض، ریشه دوم صحیح طول فایل به عنوان اندازه بلوک librsync استفاده می‌شود. حداقل مقدار ۵۱۲ بایت است و حداکثری ندارد مگر اینکه --max-blocksize مشخص شود. اندازه بلوک به سمت بالا و به نزدیک‌ترین مرز ۵۱۲ بایتی گرد می‌شود.

اگر max_blocksize بزرگ‌تری تعیین کنید، فایل‌های difftar شما بزرگ‌تر و فایل‌های sigtar کوچک‌تر خواهند شد. اگر max_blocksize کوچک‌تری مشخص کنید، عکس این حالت رخ می‌دهد.

گزینه --max-blocksize باید مضربی از ۵۱۲ باشد.

حداکثر اندازه بلوک به‌طور پیش‌فرض تعیین‌نشده است.

گزینه‌ای برای mediafire جهت پاک‌سازی قطعی فایل‌ها هنگام حذف، به جای انتقال آن‌ها به سطل زباله.
اندازه قطعه (segment size) در پسانه Swift بر حسب مگابایت.
تنظیم نام نمادین پشتیبانی که عملیات روی آن در حال انجام است. هدف این است که برای هر نسخه پشتیبانِ از نظر منطقی مجزا، یک نام جداگانه استفاده شود. برای نمونه، ممکن است فردی از "home_daily_s3" برای پشتیبان‌گیری روزانه دایرکتوری خانگی به Amazon S3 استفاده کند. ساختار نام به عهده کاربر است، و تنها متمایز بودن نام‌ها اهمیت دارد. این نام نمادین در حال حاضر تنها بر باز شدن (expansion) --archive-dir اثر می‌گذارد، اما ممکن است در آینده برای ویژگی‌های بیشتری به کار رود. به کاربرانی که بیش از یک نسخه پشتیبان متمایز را اجرا می‌کنند توصیه می‌شود از این گزینه استفاده کنند.

در صورت عدم تعیین، مقدار پیش‌فرض یک درهم‌سازی (hash) از URL پسانه خواهد بود.

غیرفعال‌سازی اعتبارسنجی manifest راه دور. بررسی این مورد پیش‌فرض است. عدم بررسی به شما اجازه می‌دهد بدون کلید خصوصی پشتیبان‌گیری کنید، اما به این معنی خواهد بود که manifest راه دور ممکن است وجود داشته و مخدوش باشد، که این امر احتمال غیرقابل‌بازیابی بودن پشتیبان را به همراه دارد.
عدم استفاده از GZip برای فشرده‌سازی فایل‌ها در سیستم راه دور.
عدم استفاده از GnuPG برای رمزگذاری فایل‌ها در سیستم راه دور.
به‌طور پیش‌فرض duplicity نام فایل‌ها و اقدامات تغییر (add، del، chg) را حین پشتیبان‌گیری در حافظه جمع‌آوری می‌کند. این کار می‌تواند حافظه بسیار زیادی مصرف کند، به‌ویژه در حضور میلیون‌ها فایل کوچک. این پرچم آن جمع‌آوری را غیرفعال می‌کند. این بدان معناست که گزینه --file-changed برای collection-status هیچ چیزی برنمی‌گرداند.
به‌طور پیش‌فرض duplicity پس از یک پشتیبان‌گیری موفق، آماری را درباره نشست فعلی چاپ می‌کند. این سوئیچ آن رفتار را غیرفعال می‌سازد.
شناسه کاربری/گروهی (uid/gid) را از آرشیو نادیده می‌گیرد و مشخصات کاربر فعلی را حفظ می‌کند. استفاده از این گزینه برای بازیابی داده‌ها به سیستم فایل‌های متصل‌شده‌ای (mounted) که از مالکیت یونیکس پشتیبانی نمی‌کنند، یا زمانی که دسترسی‌های ریشه (root) در دسترس نیست، توصیه می‌شود..TP --null-separator استفاده از نویسه‌های تهی (\0) به جای خطوط جدید (\n) به‌عنوان جداکننده خط، که ممکن است هنگام کار با نام‌فایل‌های حاوی خط جدید مفید باشد. این گزینه بر قالب مورد انتظار فایل‌های مشخص‌شده با سوئیچ‌های --{include|exclude}-filelist و گزینه --{files-from} و همچنین قالب فایل آمار دایرکتوری تأثیر می‌گذارد.
هنگام بازیابی، همیشه از uid/gid عددی موجود در بایگانی استفاده می‌کند و نه نام‌های کاربر/گروه بایگانی‌شده که رفتار پیش‌فرض است. برای بازیابی از دیسک‌های زنده (Live CD) که ممکن است کاربرانی با نام‌های یکسان ولی uid/gid متفاوت داشته باشند، توصیه می‌شود.
تعداد دفعات تلاش مجدد در صورت بروز خطا، پیش از انصراف.
گزینه‌های عین به عین (verbatim) برای ارسال به par2.

نکته: مقدار این گزینه باید با '=' متصل شود، مانند:

--par2-options='-a -b'

برای جزئیات بیشتر به ARGPARSE PROBLEM مراجعه کنید.

تنظیم سطح افزونگی برحسب percent (درصد) برای فایل‌های بازیابی Par2 (پیش‌فرض ۱۰٪).
تعداد جلدهای Par2 برای ایجاد (پیش‌فرض ۱).
این گزینه ممکن است در حالت بازیابی مشخص شود و باعث می‌شود به جای کل محتوای بایگانی پشتیبان، تنها path بازیابی شود. path باید به صورت نسبی نسبت به ریشه دایرکتوری پشتیبان‌گیری‌شده داده شود.
در صورت انتخاب، duplicity پیشرفت فعلی بارگذاری و زمان تخمینی بارگذاری را نمایش می‌دهد. برای برآورد تغییرات، ابتدا یک اجرای آزمایشی (dry-run) را قبل از پشتیبان‌گیری کامل یا افزایشی انجام داده و سپس عملیات واقعی را همراه با تخمین پیشرفت واقعی بارگذاری اجرا می‌کند.
نرخ به‌روزرسانی پیام‌های پیشرفت بارگذاری توسط duplicity را تعیین می‌کند (نیازمند گزینه --progress است). پیش‌فرض، چاپ وضعیت در هر ۳ ثانیه است.
با مسیر orig در پشتیبان به‌گونه‌ای رفتار می‌کند که گویی مسیر new است. می‌تواند چندین بار داده شود. یک مثال:

duplicity restore --rename Documents/metal Music/metal sftp://uid@other.host/some_dir /home/me

امکان ارسال گزینه‌ها به بک‌اند 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 مراجعه کنید.

نشانی URL نقطه پایانی (endpoint URL) فضای ذخیره‌سازی S3 را مشخص می‌کند.
اندازه قطعه (به مگابایت، پیش‌فرض 20MB) مورد استفاده برای بارگذاری‌های چندبخشی S3. این مقدار را برای بیشینه‌سازی بهره‌وری از پهنای باند تنظیم کنید. برای مثال، اندازه قطعه 10MB و مقدار volsize برابر با 100MB منجر به ۱۰ قطعه در هر بارگذاری جلد می‌شود.

نکته: این مقدار برای کارایی بهینه ترجیحاً باید مضرب صحیحی از --volsize شما باشد.

همچنین به A NOTE ON AMAZON S3 در زیر مراجعه کنید.

حداکثر تعداد بارگذاری‌های هم‌روند هنگام انجام بارگذاری چندبخشی. پیش‌فرض ۴ است. می‌توانید این عدد را برای بیشینه‌سازی بهره‌وری از پهنای باند و پردازنده تنظیم کنید.

نکته: بارگذاری‌های هم‌روندِ بیش از اندازه ممکن است بازدهی نزولی داشته باشد.

همچنین به A NOTE ON AMAZON S3 در زیر مراجعه کنید.

منطقه (region) فضای ذخیره‌سازی S3 را مشخص می‌کند. معمولاً در صورتی که باکت در منطقه خاصی ساخته شده باشد، اجباری است.
غیرفعال کردن SSL برای اتصالات به S3. این کار ممکن است سرعت را به میزان چشمگیری افزایش دهد، اما به بهای کاهش محرمانگی اطلاعات است.

با فعال بودن این گزینه، هر کسی میان رایانه شما و S3 می‌تواند ترافیک را پایش کند و قادر خواهد بود بفهمد: شما از Duplicity استفاده می‌کنید، نام باکت، شناسه AWS Access Key ID شما، تاریخ‌های پشتیبان‌های افزایشی و حجم داده‌ها در هر مرحله افزایشی.

این گزینه تنها بر اتصال تأثیر می‌گذارد، نه بر رمزنگاری GPG فایل‌های افزایشی پشتیبان. مگر اینکه آن هم غیرفعال شده باشد، یک ناظر قادر به دیدن نام یا محتوای فایل‌ها نخواهد بود.

همچنین به A NOTE ON AMAZON S3 در زیر مراجعه کنید.

ذخیره‌سازی جلدها با استفاده از 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 ذخیره می‌شوند.

ذخیره‌سازی جلدها با استفاده از Glacier Flexible Storage هنگام بارگذاری در Amazon S3. این کلاس ذخیره‌سازی هزینه نگهداری کمتری دارد اما هزینه هر درخواست آن بیشتر است و از زمان ارسال درخواست بازیابی، تأخیرهایی تا ۱۲ ساعت به همراه دارد. این هزینه ذخیره‌سازی بر پایه حداقل دوره نگهداری ۹۰ روزه محاسبه می‌شود. طبق گفته Amazon این فضا با ارائه پایایی ۹۹٫۹۹۹۹۹۹۹۹۹٪ برای بایگانی داده‌ها و پشتیبان‌گیری بلندمدت ایده‌آل است. برای بازیابی یک نسخه پشتیبان، باید تمام داده‌های ذخیره‌شده در AWS Glacier را به صورت دستی به Standard S3 بازگردانید و منتظر بمانید تا AWS عملیات انتقال را تکمیل کند.

نکته: ابزار Duplicity فایل‌های manifest.gpg و sigtar.gpg مربوط به پشتیبان‌های کامل و افزایشی را در فضای ذخیره‌سازی استاندارد AWS S3 نگهداری می‌کند تا بازیابی سریع را برای پشتیبان‌های افزایشی بعدی میسر سازد؛ بقیه داده‌ها در S3 Glacier ذخیره می‌شوند.

ذخیره‌سازی جلدها با استفاده از 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، این کلاس ذخیره‌سازی برای نگهداری طولانی‌مدت فایل‌ها، پشتیبان‌گیری‌ها و بازیابی پس از سانحه ایده‌آل است.

ذخیره جلدها با استفاده از One Zone - Infrequent Access هنگام بارگذاری در Amazon S3. این ذخیره‌سازی مشابه Standard - Infrequent Access است، اما داده‌های شیء را تنها در یک Availability Zone ذخیره می‌کند.
ذخیره جلدها با استفاده از Reduced Redundancy Storage هنگام بارگذاری در Amazon S3. این کار هزینه ذخیره‌سازی را کاهش می‌دهد اما پایایی (durability) جلدهای ذخیره‌شده را به جای پایداری ۹۹٫۹۹۹۹۹۹۹۹۹٪ ارائه‌شده توسط Standard Storage در S3، به ۹۹٫۹۹٪ کاهش می‌دهد.
فعال‌سازی رمزگذاری سمت سرور.
فعال‌سازی رمزگذاری سمت سرور با استفاده از سرویس مدیریت کلید (key management service).
به‌طور پیش‌فرض، اگر هیچ فایلی تغییر نکرده باشد، یک پشتیبان افزایشی خالی ایجاد می‌شود. تنظیم این گزینه در صورتی که هیچ داده‌ای تغییر نکرده باشد، از ایجاد پشتیبان صرف‌نظر می‌کند. هیچ داده‌ای به مقصد ارسال نخواهد شد و اطلاعاتی نیز کَش نمی‌شود.
(تنها در ssh pexpect backend با فعال بودن --use-scp)
دستور command به جای "scp" برای ارسال یا دریافت فایل‌ها استفاده خواهد شد. برای فهرست کردن و حذف فایل‌های موجود، از دستور sftp استفاده می‌شود.
همچنین بخش SSH pexpect backend در A NOTE ON SSH BACKENDS را ببینید.
(تنها در ssh pexpect backend)
دستور command به جای "sftp" استفاده خواهد شد.
همچنین بخش SSH pexpect backend در A NOTE ON SSH BACKENDS را ببینید.
این گزینه می‌تواند هنگام پشتیبان‌گیری، بازیابی یا اعتبارسنجی (verifying) استفاده شود. هنگام پشتیبان‌گیری، تمامی فایل‌های پشتیبان با شناسه کلید key امضا خواهند شد. هنگام بازیابی، duplicity در صورتی که هر فایل دوردست با key-id مشخص‌شده امضا نشده باشد، یک خطا صادر خواهد کرد. key-id را می‌توان در هر یک از قالب‌های پشتیبانی‌شده توسط GnuPG ارائه داد؛ برای جزئیات به gpg(1)، بخش "HOW TO SPECIFY A USER ID" مراجعه کنید. این گزینه باید تنها یک بار مشخص شود، زیرا در حال حاضر تنها از یک کلید امضا پشتیبانی می‌شود. آخرین ورودی، بر تمام ورودی‌های دیگر اولویت دارد.
همچنین بخش A NOTE ON SYMMETRIC ENCRYPTION AND SIGNING را ببینید.
به ssh backend می‌گوید در صورتی که گذرواژه در url مقصد تعریف نشده باشد و هیچ متغیر محیطی BACKEND_PASSWORD تنظیم نشده باشد، از کاربر برای گذرواژه سیستم ریموت درخواست کند. این گذرواژه همچنین برای کلیدهای ssh محافظت‌شده با عبارت عبور (passphrase) استفاده می‌شود.
امکان ارسال گزینه‌ها را به ssh backend فراهم می‌کند. می‌تواند چندین بار یا به صورت فهرستی از گزینه‌ها که با فاصله از هم جدا شده‌اند مشخص شود. فهرست options باید به شکل "-oOpt1='parm1' -oOpt2='parm2'" باشد که در آن رشته گزینه در نقل‌قول قرار گرفته و تنها فاصله‌های مجاز، بین گزینه‌ها است. رشته گزینه عیناً به هر دو دستور scp و sftp ارسال خواهد شد؛ از آنجا که نحو خط فرمان آن‌ها کمی متفاوت است، بنابراین گزینه‌ها باید در قالب گزینه طولانی شرح‌داده‌شده در ssh_config(5) داده شوند.
مثال برای یک فهرست:
duplicity --ssh-options="-oProtocol=2 -oIdentityFile='/my/backup/id'" /home/me scp://user@host/some_dir
مثال با چندین پارامتر:
duplicity --ssh-options="-oProtocol=2" --ssh-options="-oIdentityFile='/my/backup/id'" /home/me scp://user@host/some_dir

نکته: در حال حاضر ssh paramiko backend تنها از تنظیمات -i یا -oIdentityFile یا -oUserKnownHostsFile یا -oGlobalKnownHostsFile پشتیبانی می‌کند. در صورت نیاز، گزینه‌های خاص‌تر میزبان را از طریق فایل ssh_config فراهم کنید.

نکته ۲: مقدار این گزینه باید مانند زیر با '=' متصل شود:

--ssh-options='-oProtocol=2 -oIdentityFile=/my/backup/id'

برای جزئیات بیشتر بخش ARGPARSE PROBLEM را ببینید.

(تنها در webdav backend و lftp backend) ارائه یک فایل cacert برای اعتبارسنجی گواهی ssl.

همچنین بخش A NOTE ON SSL CERTIFICATE VERIFICATION را ببینید.

(تنها در webdav backend با پایتون 2.7.9+ یا lftp+webdavs و یک نسخه جدید lftp) ارائه مسیری به یک پوشه حاوی فایل‌های cacert برای اعتبارسنجی گواهی ssl.

همچنین بخش A NOTE ON SSL CERTIFICATE VERIFICATION را ببینید.

(تنها در webdav backend و lftp backend) غیرفعال‌سازی اعتبارسنجی گواهی ssl.

همچنین بخش A NOTE ON SSL CERTIFICATE VERIFICATION را ببینید.

استفاده از این خط‌مشی ذخیره‌سازی هنگام کار روی مخازن Swift.

همچنین بخش A NOTE ON SWIFT (OPENSTACK OBJECT STORAGE) ACCESS را ببینید.

مقدار پیش‌فرض این گزینه 'partial' است، اما می‌توانید آن را روی 'full' تنظیم کنید

برای جلوگیری از همگام‌سازی فراداده برای زنجیره‌های پشتیبانی که قصد استفاده از آن‌ها را ندارید، از 'partial' استفاده کنید. این کار در زمان بازیابی برای اولین بار صرفه‌جویی می‌کند و به شما امکان می‌دهد تنها با ارائه عبارت عبور مقصد، یک پشتیبان قدیمی را که با عبارت عبور متفاوتی رمزگذاری شده بود، بازیابی کنید.

برای همگام‌سازی فراداده تمام زنجیره‌های پشتیبان در مقصد ریموت، از 'full' استفاده کنید..TP --tempdir directory استفاده از این دایرکتوری موجود برای فایل‌های موقت duplicity به جای پیش‌فرض سیستم، که معمولاً دایرکتوری /tmp است. این گزینه بر هر متغیر محیطی اولویت دارد.

همچنین ببینید ENVIRONMENT VARIABLES.

مشخص کردن زمانی که فایل‌ها از آن بازیابی یا فهرست می‌شوند.

برای جزئیات به بخش TIME FORMATS مراجعه کنید.

استفاده از char به‌عنوان جداکننده زمان در نام فایل‌ها به جای دونقطه (":").

نکته: این گزینه تنها برای عملیات‌های از نوع بازیابی (recovery) و وضعیت (status) اعمال می‌شود. ما دیگر نام فایل‌هایی با جداکننده زمان ایجاد نکرده یا نمی‌نویسیم، اما نسخه‌های پشتیبان قدیمی‌تری را که ممکن است به این گزینه نیاز داشته باشند، خواهیم خواند.

استفاده از seconds به‌عنوان مقدار زمان انتظار (timeout) سوکت در صورتی که duplicity در طول عملیات‌های شبکه با پایان مهلت زمانی مواجه شود. پیش‌فرض ۳۰ ثانیه است.
اگر این گزینه مشخص شود، آنگاه --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 استفاده کند.

اگر این گزینه مشخص شود، فرآیند رمزنگاری GnuPG به جای gpg از باینری gpgsm استفاده می‌کند. این باینری بخشی از مجموعه GnuPG است، اما از قالب فایل Cryptographic Message Syntax (یا CMS؛ همچنین با عنوان PKCS#7 نیز شناخته می‌شود، که با ابزارهای دیگری مانند openssl smime نیز سازگار است) استفاده می‌کند.

فایل‌های رمزگذاری‌شده به جای پسوند .gpg، دارای پسوند .p7m خواهند بود. هر عملیاتی که نیاز به رمزگشایی داشته باشد (مانند restore،‏ list-current-files و غیره) نیز باید --use-gpgsm را مشخص کند.

ابزار gpgsm از رمزنگاری متقارن (گذرواژه) یا گیرندگان پنهان پشتیبانی نمی‌کند.

مشخص کردن سطح پرگویی خروجی (سطح لاگ). سطوح نام‌گذاری‌شده و مقادیر متناظر عبارتند از: 0 Error (خطا)، 2 Warning (هشدار)، 4 Notice (اعلان - پیش‌فرض)، 8 Info (اطلاعات)، 9 Debug (اشکال‌زدایی - پرجزئیات‌ترین).
مقدار level همچنین می‌تواند این موارد باشد:
یک نویسه: e, w, n, i, d
یک کلمه: error, warning, notice, info, debug

گزینه‌های -v4،‏ -vn و -vnotice از نظر عملکردی معادلند، همان‌طور که نسخه‌های ترکیبی/حروف بزرگ -vN،‏ -vNotice و -vNOTICE نیز معادل یکدیگر هستند.

نمایش نسخه duplicity و خروج.
تغییر اندازه حجم (volume) به number مگابایت. پیش‌فرض 200MB است.
قالب ورودی، فهرستی از جفت‌های key,value جداشده با کاما است. می‌توان از قالب استاندارد CSV استفاده کرد.

برای مثال برای تنظیم یک Cookie از 'Cookie,name=value' یا '"Cookie","name=value"' استفاده کنید.

می‌توانید چندین سرآیند را مشخص کنید، مانند '"Cookie","name=value","Authorization","xxx"'..SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)"

به ترتیب نزولی اولویت، دایرکتوری مورد استفاده برای فایل‌های موقت را مشخص می‌کنند (به ارث رسیده از ماژول tempfile در Python). در نهایت، گزینه --tempdir بر هر یک از این موارد تقدم دارد.
توسط اکثر backendهایی که از گذرواژه پشتیبانی می‌کنند، پذیرفته می‌شود. این روش امن‌تر از وارد کردن آن در URL مربوط به backend است (که ممکن است در فهرست فرایندهای سیستم‌عامل برای سایر کاربران همان ماشین قابل مشاهده باشد).
این عبارت عبور به GnuPG منتقل می‌شود. اگر این متغیر تنظیم نشده باشد، عبارت عبور از کاربر درخواست خواهد شد. GPG برای رمزنگاری عبارت عبور از روش رمزنگاری AES استفاده می‌کند.
عبارت عبوری که برای --sign-key استفاده می‌شود. اگر تعیین نشود و کلید امضا هم‌زمان یکی از کلیدهای رمزنگاری نیز باشد، PASSPHRASE به جای آن دوباره استفاده خواهد شد. در غیر این صورت، چنانچه عبارت عبور لازم باشد ولی تنظیم نشده باشد، از کاربر درخواست می‌شود. GPG برای رمزنگاری عبارت عبور از روش رمزنگاری AES استفاده می‌کند.

ممکن است متغیرهای محیطی دیگری نیز برای پیکربندی backendهای خاص استفاده شوند. یادداشت‌های مربوط به backend مورد نظر را مشاهده کنید.

برنامه 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 به شرح زیر است:

scheme://[[user[:password]@]host[:port]/][/]path

یا

scheme://[/]path

قرار دادن گذرواژه در خط فرمان، مثلاً به عنوان بخشی از URL مقصد، توصیه نمی‌شود؛ زیرا می‌تواند برای هر فردی که مجوز مشاهده فهرست فرایندها را دارد فاش شود. با این وجود، انجام این کار امکان‌پذیر است.

به جای آن، تنظیم متغیر محیطی BACKEND_PASSWORD یا سایر متغیرهای محیطی مختص بک‌اند را در نظر بگیرید که دچار نقص امنیتی ذکرشده در بالا نیستند.

در پروتکل‌هایی که پشتیبانی می‌کنند، مسیر ممکن است با یک اسلش تکی، یا با یک اسلش دوگانه، '//path'، برای نشان دادن یک مسیر مطلق در فایل‌سیستم مشخص شود.

نکته: دسترسی طرح‌واره (پروتکل) ممکن است توسط بیش از یک بک‌اند ارائه شود. در صورتی که بک‌اند پیش‌فرض دارای باگ است یا در یک حالت خاص کار نمی‌کند، ارزش دارد یک پیاده‌سازی جایگزین را امتحان کنید. بک‌اندهای جایگزین می‌توانند با افزودن نام بک‌اند جایگزین به عنوان پیشوند به طرح‌واره (scheme) انتخاب شوند؛ برای مثال ncftp+ftp:// و در زیر خلاصه نحو هر طرح‌واره به آن‌ها اشاره شده است.

قالب‌ها برای هر یک از بک‌اندها در ادامه آمده است:

بک‌اند Amazon Drive
ad://some_dir

همچنین ببینید: A NOTE ON AMAZON DRIVE

azure://container-name

همچنین ببینید: A NOTE ON AZURE ACCESS

b2://account_id[:application_key]@bucket_name/[folder/]
box:///some_dir[?config=path_to_config]

همچنین ببینید: A NOTE ON BOX ACCESS

cf+http://container_name

همچنین ببینید: A NOTE ON CLOUD FILES ACCESS

dpbx:///some_dir

حتماً ابتدا بخش A NOTE ON DROPBOX ACCESS را بخوانید!

file://[relative|/absolute]/local/path
fish://user[:password]@other.host[:port]/[relative|/absolute]_path
ftp[s]://user[:password]@other.host[:port]/some_dir

نکته: برای اجبار به استفاده از یک بک‌اند خاص از پیشوندهای +lftp یا +ncftp استفاده کنید، پیش‌فرض lftp+ftp://... است.

s3://bucket[/path]

جهت اطلاع از گزینه endpoint و متغیرهای محیطی مورد نیاز برای احراز هویت، بخش A NOTE ON GOOGLE CLOUD STORAGE را ببینید.

gdocs://user[:password]@other.host/some_dir

نکته: برای اجبار به استفاده از یک بک‌اند خاص از پیشوندهای +pydrive یا +gdata استفاده کنید، پیش‌فرض pydrive+gdocs://... است.

gdrive://<service account' email address>@developer.gserviceaccount.com/some_dir

همچنین A NOTE ON GDRIVE BACKEND را در زیر ببینید.

hsi://user[:password]@other.host/some_dir
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
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_PASSWORD
multi 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) را ببینید.

pca://container_name[/prefix]

همچنین نکته‌ای درباره دسترسی به PCA (A NOTE ON PCA ACCESS) را ببینید.

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://user[:password]@host.com[:port]::[/]module/some_dir
rsync://user@host.com[:port]/[relative|/absolute]_path
فضای ذخیره‌سازی S3 (Amazon)
s3:///bucket_name[/path]

همچنین در ادامه نکته‌ای درباره AMAZON S3 (A NOTE ON AMAZON S3) را ببینید.

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-id]

همچنین نکته‌ای درباره پس‌زمینه SLATE (A NOTE ON SLATE BACKEND) را ببینید.

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://alias/directory
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" همگی به معنای ۵ مارس ۲۰۰۲ هستند.

هنگامی که duplicity اجرا می‌شود، دایرکتوری مبدأ داده‌شده را جستجو کرده و از تمام فایل‌های مشخص‌شده توسط سامانه انتخاب فایل پشتیبان‌گیری می‌کند، مگر اینکه --files-from مشخص شده باشد که در این صورت فهرست ارائه‌شده از فایل‌های منفرد به‌جای آن استفاده می‌شود. در هنگام بازیابی، گزینه‌های پشتیبانی‌شده انتخاب فایل، مسیرهای وابسته به آرشیو را فیلتر می‌کنند، با نام‌های چاپ‌شده توسط list-current-files تطبیق می‌یابند، و با --path-to-restore مانعة‌الجمع (ناسازگار) هستند. الگوهای انتخاب فایل برای بازیابی باید نسبت به ریشه آرشیو نسبی باشند، می‌توانند اختیاری با ./ آغاز شوند، و نباید مطلق باشند یا شامل مولفه‌های مسیر . یا .. باشند. گزینه‌هایی که نیازمند رفتار سیستم‌فایل زنده مبدأ هستند، مانند --exclude-if-present، --exclude-other-filesystems، و --files-from، در هنگام بازیابی پشتیبانی نمی‌شوند.

سامانه انتخاب فایل شامل تعدادی شرایط انتخاب فایل است که با استفاده از یکی از گزینه‌های خط فرمان زیر تنظیم می‌شوند:

--exclude
--exclude-device-files
--exclude-if-present
--exclude-filelist
--exclude-regexp
--include
--include-filelist
--include-regexp

برای هر فایل جداگانه‌ای که در دایرکتوری مبدأ پیدا می‌شود، شرایط انتخاب فایل به ترتیبی که در خط فرمان مشخص شده‌اند بررسی می‌شوند. در صورت تطابق یک شرط انتخاب، فایل مطابق با آن لحاظ یا مستثنی می‌شود و سامانه انتخاب فایل بدون بررسی شرایط باقی‌مانده به سراغ فایل بعدی می‌رود.

بنابراین در مواردی که چند شرط با یک فایل معین تطابق داشته باشند، آرگومان‌های جلوتر اولویت دارند و از این رو معمولاً به ترتیب کاهش جزئیات (از خاص به عام) مشخص می‌شوند. اگر هیچ شرط انتخابی با یک فایل مشخص تطابق نیابد، آن فایل به صورت ضمنی لحاظ می‌شود.

برای نمونه،

duplicity --include /usr --exclude /usr /usr scp://user@host/backup

دقیقاً مشابه دستور زیر است:

duplicity /usr scp://user@host/backup

زیرا دستورالعمل --include با تمام فایل‌های دایرکتوری مبدأ پشتیبان‌گیری مطابقت دارد و به دلیل تقدم مکانی، بر گزینه متناقض --exclude اولویت می‌یابد.

به عنوان مثالی کاربردی‌تر،

duplicity --include /usr/local/bin --exclude /usr/local /usr scp://user@host/backup

از دایرکتوری /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-globbing
--filter-literal
--filter-regexp

این آرگومان‌ها تفسیر الگوهای به‌کاررفته در شرایط انتخاب را تغییر داده و بر تمامی گزینه‌های انتخاب فایل بعدی در خط فرمان تأثیر می‌گذارند. آن‌ها را می‌توان برحسب نیاز چندین بار مشخص کرد تا نحوه تفسیر الگوها تغییر یابد.

رشته‌های لفظی (literal) با globها تفاوت دارند زیرا الگو باید دقیقاً با نام فایل مطابقت داشته باشد. این امر زمانی مفید است که نام‌های فایل حاوی نویسه‌هایی باشند که در globهای شل یا عبارات باقاعده معنای خاصی دارند. در صورت ارسال فهرست‌های فایل پویا به duplicity با استفاده از گزینه‌های --include-filelist یا --exclude-filelist، استفاده از --filter-literal توصیه می‌شود، مگر اینکه عبارات باقاعده یا تطبیق شل مشخصاً مورد نیاز باشد.

زبان عبارت باقاعده مورد استفاده برای شرایط انتخابی که با --include-regexp ، --exclude-regexp ، یا هنگامی که --filter-regexp فعال است مشخص می‌شوند، مطابق پیاده‌سازی کتابخانه استاندارد Python است.

الگوهای گسترش‌یافته تطبیق شل ممکن است شامل موارد زیر باشند: *، **، ?، و [...] (محدوده‌های نویسه‌ای). همانند یک شل معمولی، * می‌تواند به هر رشته‌ای از نویسه‌ها که شامل "/" نباشد بسط یابد، ? به هر تک‌نویسه‌ای به‌جز "/" بسط می‌یابد، و [...] به یک نویسه منفرد از میان نویسه‌های مشخص‌شده بسط پیدا می‌کند (بازه نویسه‌ها مجاز است). الگوی ** به هر رشته‌ای از نویسه‌ها، چه شامل "/" باشد و چه نباشد، بسط می‌یابد.

علاوه بر آرگومان‌های حالت فیلتر بالا، موارد زیر را می‌توان به همان شیوه برای فعال‌سازی (پیش‌فرض) یا غیرفعال‌سازی حساسیت به بزرگی و کوچکی حروف در بررسی شرایط انتخاب فایل به کار برد:

--filter-ignorecase
--filter-strictcase

نمونه‌ای از تغییر حالت فیلتر شامل نادیده گرفتن بزرگی و کوچکی حروف عبارت است از:

--filter-ignorecase --include /usr/bin/*.PY --filter-literal --filter-include /usr/bin/special?file*name --filter-strictcase --exclude /usr/bin

که از فایل‌های *.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.
فایل دایرکتوری‌ای باشد که حاوی فایلی مطابق با این گزینه است.

برای مثال،

--exclude /usr/local

برای نمونه با /usr/local، /usr/local/lib و /usr/local/lib/netscape مطابقت دارد. این معادل با --exclude /usr/local --exclude '/usr/local/**' است.

از سوی دیگر

--include /usr/local

مشخص می‌کند که از /usr، /usr/local، /usr/local/lib و /usr/local/lib/netscape (اما نه /usr/doc) همگی نسخهٔ پشتیبان تهیه شود. بنابراین نیازی نیست نگران گنجاندن دایرکتوری‌های والد برای اطمینان از قرارگیری زیردایرکتوری‌های مشمول باشید.

در نهایت،

--include ignorecase:'/usr/[a-z0-9]foo/*/**.py'

با فایلی مانند /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 ، گزینه‌های عبارت باقاعده با فایل‌های دربرگیرنده یا قرارگرفته درون فایل‌های منطبق مطابقت پیدا نمی‌کنند. بنابراین برای نمونه

--include-regexp '[0-9]{7}(?!foo)'
با هر فایلی که نام مسیر کامل آن شامل ۷ رقم متوالی باشد که بلافاصله پس از آن‌ها 'foo' نیامده باشد، مطابقت می‌یابد. با این حال، با /home مطابقت نخواهد داشت حتی اگر /home/ben/1234567 وجود داشته باشد..SH "نکته‌ای درباره AMAZON DRIVE (A NOTE ON AMAZON DRIVE)"
1.
کلیدهای API استفاده‌شده برای Amazon Drive دارای سقف محدودیت عملیاتی (production limits) نیستند. شرکت Amazon اعلام نکرده است که سقف محدودیت‌های محیط توسعه چقدر است و به درخواست‌های افزودن duplicity به فهرست سفید (whitelist) پاسخی نمی‌دهد. ابزار مرتبط دیگر، acd_cli، به محدودیت‌های توسعه تنزل یافت، اما همچنان به‌جز در موارد استفاده بیش‌ازحد، به‌خوبی کار می‌کند. اگر هنگام استفاده از این بک‌اند با throttling (محدودسازی نرخ) و مشکلات مشابه در Amazon Drive مواجه شدید، لطفاً آن‌ها را به لیست پستی گزارش دهید.
2.
اگر پیش‌تر از بک‌اند acd+acdcli استفاده می‌کردید، اکیداً توصیه می‌شود که به‌جای آن به بک‌اند ad مهاجرت کنید، چرا که این بک‌اند مستقیماً با Amazon Drive ارتباط برقرار می‌کند. لازم است یک‌بار دیگر OAuth را تنظیم کنید، اما در غیر این صورت می‌توانید نسخه‌های پشتیبان و پیکربندی خود را حفظ نمایید.

تهیه نسخه پشتیبان در 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_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY

بک‌اند boto3 نمونه خط فرمان پشتیبان‌گیری با استفاده از متغیرهای محیطی:

AWS_ACCESS_KEY_ID=<key_id> AWS_SECRET_ACCESS_KEY=<access_key> duplicity /some/path s3:///<bucket>/<subfolder>

نمونه پیکربندی با استفاده از فایل اطلاعات ورود AWS‏ (~/.aws/credentials):

[default]
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_REQUEST_CHECKSUM_CALCULATION=when_required
AWS_RESPONSE_CHECKSUM_VALIDATION=when_required

یا آن‌ها را به فایل پیکربندی AWS خود (~/.aws/config) اضافه کنید:

[default]
request_checksum_calculation = when_required
response_checksum_validation = when_required
برای جزئیات بیشتر به https://gitlab.com/duplicity/duplicity/-/issues/870 مراجعه فرمایید.

می‌توانید گزینه --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 نیازمند نصب بودن boxsdk به همراه پشتیبانی از jwt روی سیستم است. بخش REQUIREMENTS را ببینید.

این پشتانه از متغیر محیطی BOX_CONFIG_PATH (اختیاری) استفاده می‌کند. این رشته شامل مسیر فایل config.json برنامهٔ سفارشی box است. باید یا این متغیر محیطی یا پارامتر پرسمان config در url مشخص شود؛ در صورتی که هر دو مشخص شده باشند، اولویت با پارامتر پرسمان خواهد بود.

برای استفاده از پشتانهٔ 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) دسترسی‌های لازم را به برنامه اعطا کند.

ابزار 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 وجود داشته باشد. بسته به نوع توکن دسترسی، این مسیر می‌تواند یکی از موارد زیر باشد:
Full Dropbox: مسیر مطلق است و از پوشهٔ ریشهٔ «Dropbox» آغاز می‌شود.
App Folder: مسیر وابسته به پوشهٔ اختصاصی برنامه است. کلاینت Dropbox آن را در این مسیر نشان خواهد داد: ~/Dropbox/Apps/<app-name>
3.
هنگام استفاده از Dropbox برای ذخیره‌سازی، به یاد داشته باشید که تمام فایل‌ها، از جمله موارد موجود در پوشهٔ Apps، با تمام رایانه‌های متصل همگام‌سازی خواهند شد. شاید ترجیح دهید یک حساب Dropbox جداگانه مخصوص نسخه‌های پشتیبان اختصاص دهید و هیچ رایانه‌ای را به آن حساب متصل نکنید. همچنین می‌توانید قابلیت selective sync را در تمامی رایانه‌ها پیکربندی کنید تا از همگام‌سازی فایل‌های پشتیبان جلوگیری شود.

پیشوندهای نام فایل می‌توانند در multi backend همراه با حالت mirror برای تعریف قواعد وابستگی (affinity rules) استفاده شوند. همچنین می‌توان آن‌ها را در ترکیب با قواعد چرخهٔ حیات S3 (S3 lifecycle rules) به کار گرفت تا فایل‌های آرشیو به Glacier منتقل شوند، در حالی که متادیتا (فایل‌های امضا و مانیفست) همچنان در S3 باقی بمانند.

duplicity نیازی به دسترسی به فایل‌های آرشیو ندارد، مگر در زمان بازیابی (restore) از نسخهٔ پشتیبان.

دسترسی duplicity به GCS در حال حاضر بر Interoperability API آن (اساساً همان S3 برای GCS) متکی است. پیش از امکان دسترسی، این قابلیت باید صراحتاً فعال شود. برای جزئیات، بخش بعدی یعنی آماده‌سازی‌ها (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

AWS_ACCESS_KEY_ID=<keyid> AWS_SECRET_ACCESS_KEY=<secret> duplicity collection-status s3:///<bucket>/<folder> --s3-endpoint-url=https://storage.googleapis.com

بک‌اند :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 در بالا را ببینید.

در طول نخستین اجرا، از شما خواسته می‌شود نشانی اینترنتی (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 استفاده می‌کند: “idevsutil_dedup” که هنگام راه‌اندازی حساب کاربری بر روی سیستم شما نصب خواهد شد. همچنین می‌توان آن را مستقیماً از IDrive بارگیری کرد.

برای کارکرد این پس‌فرست، باید متغیرهای محیطی زیر را تنظیم کنید:

1.
IDEVSPATH - مسیر مطلق به فایل راه‌انداز (idevsutil_dedup).
2.
IDRIVEID - نام حساب کاربری (نام ورود).
3.
IDBUCKET - نام باکت (bucket) مورد نظر برای این نشست پشتیبان‌گیری.
4.
IDPWDFILE - مسیر مطلق به فایلی که حاوی گذرواژه حساب است.
5.
IDKEYFILE - (اختیاری) مسیر مطلق به فایلی که حاوی کلید رمزنگاری سفارشی است.

همچنین گزینه --idr-fakeroot را ببینید.

می‌توان از یک حساب IMAP به‌عنوان مقصدی برای بارگذاری استفاده کرد. شناسه‌کاربری (userid) می‌تواند مشخص شود و گذرواژه درخواست خواهد شد.

مقدار from_address_prefix می‌تواند مشخص شود (و احتمالاً بهتر است مشخص شود). این متن به‌عنوان نشانی “From” در کارساز IMAP استفاده خواهد شد. سپس در عملیات بازیابی (یا فهرست‌کردن)، from_address_prefix بین نسخه‌های پشتیبان مختلف تمایز قائل می‌شود.

این پس‌فرست نیازمند نصب بودن کتابخانه پایتون mediafire بر روی سیستم است. بخش REQUIREMENTS را ببینید.

برای نام کاربری (و گذرواژه، در صورت ارائه از طریق خط فرمان) از نویسه‌های گریز URL استفاده کنید:

mf://duplicity%40example.com@mediafire.com/some_folder

در صورتی که پوشه مقصد وجود نداشته باشد، برای شما ایجاد خواهد شد.

پس‌فرست 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
ترتیب پارامترها اهمیتی ندارد، اما پارامترهای ناشناخته یک خطا محسوب می‌شوند.
این حالت (پیش‌فرض) دسترسی نوبتی (round-robin) را به فهرست پشتانه‌ها (backends) برقرار می‌کند. در این حالت، تمام پشتانه‌ها باید قابل اعتماد باشند، زیرا از دست رفتن یکی از آن‌ها به معنای از دست رفتن یکی از فایل‌های آرشیو خواهد بود.
این حالت مانند یک فضای ذخیره‌سازی RAID1 به پشتانه‌ها دسترسی پیدا می‌کند؛ به این صورت که تمام فایل‌ها در همه پشتانه‌ها ذخیره می‌شوند و خواندن فایل‌ها از نخستین پشتانه موفق صورت می‌گیرد. از دست رفتن هر پشتانه‌ای نباید موجب بروز شکست شود. توجه داشته باشید پشتانه‌هایی که بعداً اضافه می‌شوند تنها فایل‌های جدید را دریافت می‌کنند و ممکن است نیاز به همگام‌سازی دستی با یکی دیگر از پشتانه‌های فعال داشته باشند.
این تنظیم (پیش‌فرض) تمام عملیات نوشتن را بر اساس نهایت تلاش (best-effort) ادامه می‌دهد. هر گونه شکست موجب امتحان کردن پشتانه بعدی می‌شود. شکست تنها زمانی گزارش می‌شود که همه پشتانه‌ها در عملیات داده‌شده ناموفق باشند، به همراه نتیجه خطای ناشی از آخرین شکست.
این تنظیم هرگونه شکست در نوشتن روی پشتانه را به عنوان شرایط خاتمه‌دهنده در نظر می‌گیرد و خطا را گزارش می‌کند. عملیات خواندن داده‌ها و فهرست کردن فایل‌ها از این قاعده مستقل هستند و در صورت شکست، پشتانه بعدی را امتحان خواهند کرد.

[
 {
  "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:// هم با حساب‌های کاربری شخصی و تجاری onedrive و هم با درایوهای sharepoint کار می‌کند. در نخستین استفاده، یک URL به شما ارائه می‌شود تا با یک حساب microsoft متصل شوید. آن را در مرورگر وب خود باز کنید.

پس از احراز هویت، URL بازهدایت‌شده را کپی کرده و به duplicity بازگردانید. برنامه duplicity یک توکن را دریافت کرده و در ~/.duplicity_onedrive_oauthtoken.json ذخیره می‌کند. این مسیر را می‌توان با تنظیم متغیر محیطی DUPLICITY_ONEDRIVE_TOKEN بازنویسی کرد.

برنامه duplicity از یک App ID پیش‌فرض که در Microsoft Azure AD ثبت شده است استفاده می‌کند. در حساب‌های تجاری، این شناسه باید توسط مدیر Tenant مربوط به Office365 شما تأیید شود.

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 می‌تواند در ترکیب با تمام پس‌زمینه‌های دیگر برای ایجاد فایل‌های بازیابی استفاده شود. کافی است par2+ را پیش از یک طرح‌واره (scheme) معمولی اضافه کنید (برای نمونه par2+ftp://user@host/dir یا par2+s3+http://bucket_name ). این کار فایل‌های بازیابی par2 را برای هر بایگانی ایجاد کرده و همه آن‌ها را در پس‌زمینه کپسوله‌شده بارگذاری می‌کند.

پیش از بازیابی، بایگانی‌ها اعتبارسنجی خواهند شد. در صورت وجود بلوک‌های بازیابی کافی، بایگانی‌های آسیب‌دیده به‌صورت زنده تعمیر می‌شوند.

از --par2-redundancy percent برای تنظیم اندازه (و افزونگی) فایل‌های بازیابی برحسب percent استفاده کنید.

سرویس 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 نیازمند نصب بودن بسته پایتون 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 یک ابزار خط فرمانی قدرتمند برای همگام‌سازی فایل‌ها و دایرکتوری‌ها به و از ارائه‌دهندگان مختلف فضای ذخیره‌سازی ابری است.

هنگامی که یک ریموت rclone را از طریق

rclone config

پیکربندی کردید و یک ریموت را با موفقیت راه‌اندازی نمودید (به‌عنوان مثال gdrive برای Google Drive)، با فرض اینکه می‌توانید فایل‌های ریموت خود را با

rclone ls gdrive:mydocuments

فهرست کنید، می‌توانید پشتیبان‌گیری خود را با

duplicity /mydocuments rclone://gdrive:/mydocuments

آغاز کنید. لطفاً به اسلش بعد از دونقطهٔ دوم توجه داشته باشید. برخی ارائه‌دهندگان فضای ذخیره‌سازی با یا بدون وجود اسلش بعد از دونقطه کار می‌کنند، اما برخی دیگر کار نمی‌کنند. از آنجا که duplicity در صورت نبود اسلش خطای ناهنجار بودن URL می‌دهد، همیشه آن را بعد از دونقطه قرار دهید؛ بک‌اند خودش آن را مدیریت خواهد کرد.

توجه داشته باشید که تمام گزینه‌های rclone می‌توانند از طریق متغیرهای محیطی نیز تنظیم شوند. این مورد به‌خوبی در اینجا مستند شده است:

اما به‌طور خلاصه باید نام بلند گزینه را بردارید، -- ابتدایی را حذف کنید، - را به _ تبدیل کنید، حروف را بزرگ (UPPERCASE) کرده و _RCLONE را به ابتدای آن اضافه نمایید. برای مثال

معادل '--stats 5s' متغیر محیطی RCLONE_STATS=5s خواهد بود

سه متغیر محیطی با بک‌اند 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://[slate-id]

برای مثال، پشتیبان‌گیری کامل از دایرکتوری جاری در slate:

duplicity full . "slate://6920df43-5c3w-2x7i-69aw-2390567uav75"

یک پیش‌نمایش در اینجا موجود است: https://gitlab.com/Shr1ftyy/duplicity/uploads/675664ef0eb431d14c8e20045e3fafb6/slate_demo.mp4

بک‌اندهای 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 نیازمند است که گاهی اوقات امکان‌پذیر نیست.

اعتبارسنجی گواهی در حال حاضر [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
~/duplicity_cacert.pem
/etc/duplicity/cacert.pem

برنامه duplicity به همین ترتیب در آن مسیرها جستجو می‌کند و در صورت نیافتن آن ناموفق خواهد بود. با این وجود می‌توانید گزینه --ssl-cacert-file <file> را مشخص کنید تا duplicity به نسخه‌ای در مکانی دیگر هدایت شود.

در نهایت، گزینه --ssl-no-check-certificate برای غیرفعال کردن کامل اعتبارسنجی گواهی وجود دارد، در صورتی که کتابخانه ssl ناموجود باشد یا اعتبارسنجی مد نظر نباشد. با احتیاط از آن استفاده کنید، چرا که حتی با سرورهای دارای گواهی خودامضا (self-signed)، فراهم کردن دستی گواهی ca خصوصی مسلماً گزینه امن‌تری است.

سرویس Swift همان سرویس ذخیره‌سازی شیء (Object Storage) در OpenStack است.
این backend به نصب بودن python-switclient بر روی سیستم نیاز دارد. همچنین python-keystoneclient برای استفاده از سرویس هویت Keystone در OpenStack مورد نیاز است. بخش REQUIREMENTS را ببینید.

این سرویس از متغیرهای محیطی زیر برای احراز هویت استفاده می‌کند:

SWIFT_USERNAME (الزامی)،
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 برای الحاق پشتیبان‌ها به رسانه‌های نوری یا تصاویر ISO9660 استفاده می‌کند.

از متغیرهای محیطی زیر برای اعمال تنظیمات بیشتر استفاده کنید:

XORRISO_PATH، تعیین یک مسیر جایگزین برای فایل اجرایی xorriso
XORRISO_WRITE_SPEED، مشخص کردن سرعت نوشتن روی دیسک نوری. یکی از مقادیر [min, max]
XORRISO_ASSERT_VOLID، مشخص کردن شناسه حجم (volume ID) الزامی برای ISO. در صورتی که شناسه حجم واقعی متفاوت باشد، عملیات لغو می‌شود.
XORRISO_ARGS، فقط برای کاربران حرفه‌ای. ارسال آرگومان‌های دلخواه به xorriso. مثال: XORRISO_ARGS='-md5 all'

از زمانی که تجزیهٔ خط فرمان را از optparse به argparse تغییر دادیم، یک باگ همواره تلاش‌های ما را با چالش مواجه کرده است. مقدارهایی که شبیه به گزینه‌ها هستند، به عنوان گزینه تفسیر می‌شوند. این بدان معناست که دستوری مانند:

--gpg-options '--homedir=/home/user'

نه به عنوان یک گزینه و مقدار متناظر با آن، بلکه به عنوان دو گزینهٔ مجزا تفسیر می‌شود که باعث می‌شود --gpg-options خطا دهد که مقدار خود را دریافت نکرده است. برای دور زدن این مشکل، باید آن‌ها را با '=' پیوند دهید، مانند:

--gpg-options="--homedir=/home/user"

گزارش باگ argparse در این پیوند قرار دارد:

https://github.com/python/cpython/issues/53580 .

در صورت تمایل، می‌توانید به آنجا مراجعه کرده و با ثبت نظری حمایتی، پیگیر اصلاح آن شوید. با رأی‌های مثبت کافی ممکن است این باگ برطرف شود.

توجه داشته باشید که در خود گزارش باگ، راهکار جایگزین '=' هرگز ذکر نشده است، اما ما دریافته‌ایم که این روش، تمیزترین و خواناترین راهکار موجود است.

پیوندهای سخت (Hard links) در حال حاضر پشتیبانی نمی‌شوند (با آن‌ها مانند فایل‌های عادی بدون پیوند رفتار خواهد شد).

با امضاهای نامعتبر به جای ثبت پیام خطای مناسب، به عنوان امضای خالی رفتار خواهد شد.

این بخش عملکرد پایه‌ای 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 استفاده شود.

برخی بک‌اندها نیز به مؤلفه‌های اضافی نیاز دارند (که احتمالاً به‌صورت بسته برای پلتفرم خاص شما در دسترس هستند):

python-requests - http://python-requests.org
python-requests-oauthlib - https://github.com/requests/requests-oauthlib
کتابخانه کلاینت Microsoft Azure Storage Blobs برای پایتون - https://pypi.org/project/azure-storage-blob
boto3 نسخهٔ 1.x - https://github.com/boto/boto3
boxsdk - https://github.com/box/box-python-sdk
Rackspace CloudFiles Pyrax API - http://docs.rackspace.com/sdks/guide/content/python.html
باینری idevsutil_dedup - https://www.idrive.com
Dropbox Python SDK - https://www.dropbox.com/developers/reference/sdk
Google Data APIs Python Client Library - http://code.google.com/p/gdata-python-client
بک‌اند pydrive را ببینید
gio backend (Gnome VFS API)
PyGObject - http://live.gnome.org/PyGObject
D-Bus (dbus)- http://www.freedesktop.org/wiki/Software/dbus
jottalib - https://pypi.python.org/pypi/jottalib
کلاینت LFTP - http://lftp.yar.ru
کلاینت megatools - https://github.com/megous/megatools
کلاینت MEGAcmd - https://mega.nz/cmd
Multi -- ذخیره در بیش از یک بک‌اند
(همچنین بخش A NOTE ON MULTI BACKEND در زیر را ببینید).
NcFTP - http://www.ncftp.com
python-requests-oauthlib - https://github.com/requests/requests-oauthlib
par2cmdline - http://parchive.sourceforge.net
pydrive backend
PyDrive -- یک کتابخانه واسط برای google-api-python-client - https://pypi.python.org/pypi/PyDrive
(همچنین بخش A NOTE ON PYDRIVE BACKEND در زیر را ببینید).
rclone - https://rclone.org
باینری کلاینت rsync - http://rsync.samba.org
paramiko (SSH2 برای پایتون) - http://pypi.python.org/pypi/paramiko (دانلودها)؛ http://github.com/paramiko/paramiko (صفحه پروژه)
pycrypto (Python Cryptography Toolkit) - http://www.dlitz.net/software/pycrypto
باینری‌های کلاینت sftp/scp OpenSSH - http://www.openssh.com
ماژول پایتون pexpect - http://pexpect.sourceforge.net/pexpect.html
ماژول پایتون swiftclient - https://github.com/openstack/python-swiftclient
ماژول پایتون keystoneclient - https://github.com/openstack/python-keystoneclient
Skylable SX - http://www.skylable.com
فایل پایگاه‌داده مرجع صدور گواهی (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 - 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 ایمیل بفرستید.

python(1), rdiff(1).

August 22, 2026 Version 3.2.0.2