لینوکس

بکاپ‌گیری داده به Object Storage با استفاده از Restic

مقدمه

Restic یک کلاینت بکاپ متن-باز نوشته‌شده با Go است که بکاپ‌های رمزنگاری‌شده، افزایشی (Incremental) و Deduplicate-شده را به انواع Backendهای ذخیره‌سازی پشتیبانی می‌کند. می‌توانید با Restic از داده‌ها به سرویس ذخیره‌سازی Objectای مثل Object Storage پارمین کلود، Amazon S3 یا هر Endpoint سازگار با S3 بکاپ بگیرید.

Restic همه داده‌ها را قبل از ارسال به Backend، به‌صورت محلی با AES-256 در حالت Counter همراه با احراز Poly1305-AES رمزنگاری می‌کند. یعنی داده‌های بکاپ‌تان—even وقتی روی سرور ریموتِ غیرقابل-اعتماد ذخیره می‌شوند—امن می‌مانند. Restic هم‌چنین Chunking و Deduplication تعریف‌شده-بر-محتوا را انجام می‌دهد؛ پس بعد از بکاپ کاملِ اولیه، فقط بلوک‌های داده جدید یا تغییرکرده منتقل می‌شوند؛ که هم مصرف پهنای باند و هم هزینه‌های ذخیره‌سازی را کم می‌کند.

در این آموزش، Restic را روی سرور لینوکسی نصب، اعتبارنامه‌ها را برای سرویس ذخیره‌سازی Object سازگار با S3 پیکربندی، مخزن بکاپِ رمزنگاری‌شده را مقداردهی اولیه، از فایل‌ها بکاپ می‌گیرید؛ Snapshotها را بازرسی و بازیابی، سیاست‌های نگهداری را با restic forget و restic prune تنظیم، یکپارچگی مخزن را با restic check تأیید و بکاپ‌های تکرارشونده را با cron خودکار می‌کنید.

نکات کلیدی

  • Restic همه داده‌های بکاپ را قبل از آپلود به هر Backendای، به‌صورت محلی با AES-256 رمزنگاری می‌کند؛ پس فایل‌های‌تان—even روی ذخیره‌سازی شخص ثالث—خصوصی می‌مانند.
  • بکاپ‌های افزایشی و Chunking تعریف‌شده-بر-محتوا یعنی بعد از اولین بکاپ، فقط بلوک‌های داده تغییرکرده منتقل می‌شوند؛ که پهنای باند و هزینه ذخیره‌سازی را ذخیره می‌کند.
  • دستور restic forget --prune به شما اجازه تعریف سیاست‌های نگهداری ریزبینانه (ساعتی، روزانه، هفتگی، ماهانه) برای حذف خودکار Snapshotهای منقضی را می‌دهد.
  • اجرای منظم restic check یکپارچگی ساختاری مخزن‌تان را تأیید و تصدیق می‌کند که داده‌های بکاپ-گرفته-شده قابل بازیابی‌اند.
  • می‌توانید کل روند کاری بکاپ و Prune را با یک Cron Job یا Timer سیستم‌امند برای حفاظت داده بدون-دست‌زدن خودکار کنید.

پیش‌نیازها

قبل از شروع این آموزش به این موارد نیاز دارید:

  • سروری اجراکننده اوبونتو 22.04 یا جدیدتر با کاربر غیر root دارای دسترسی sudo. می‌توانید با دنبال کردن راهنمای راه‌اندازی اولیه سرور با اوبونتو در پارمین کلود این را راه بیندازید. Restic روی macOS و توزیع‌های دیگر لینوکس هم اجرا می‌شود. دستورات این آموزش روی هر سیستم مبتنی بر UNIX کار می‌کنند.
  • حداقل ۱ گیگابایت رم. Restic حین عملیات‌ها داده‌های Index را در حافظه بارگذاری می‌کند؛ پس سیستم‌های با حافظه کمتر ممکن است روی مخازن بزرگ با خطا روبه‌رو شوند.
  • Bucket ذخیره‌سازی Object سازگار با S3 و اعتبارنامه‌های زیر:
    • Access Key
    • Secret Key
    • URL سرور (Endpoint)
    • نام Bucket

اگر از Object Storage پارمین کلود استفاده می‌کنید، می‌توانید با دنبال کردن مستندات محصول Object Storage پارمین کلود، یک Storage بسازید و کلیدهای API تولید کنید. Object Storage پارمین کلود ذخیره‌سازی Object سازگار با S3 با CDN داخلی فراهم می‌کند.

وقتی اعتبارنامه‌های ذخیره‌سازی Object خودتان را داشتید، به گام بعد بروید تا Restic را نصب کنید.

گام ۱ — نصب Restic

Restic باینری‌های از-پیش-کامپایل‌شده را برای لینوکس، macOS و ویندوز توزیع می‌کند. می‌توانید یک Executable منفرد دانلود و بدون نصب وابستگی‌های اضافی یا استفاده از مدیر پکیج اجرایش کنید.

اول، به صفحه آخرین Release مربوط به Restic در گیت‌هاب بروید. تا زمان نگارش، آخرین نسخه پایدار 0.18.1 است که در سپتامبر ۲۰۲۵ منتشر شد. زیر بخش Assets، فایلی را که با سیستم‌عامل و معماری‌تان مطابقت دارد پیدا کنید:

  • برای لینوکس ۶۴-بیتی: restic_0.18.1_linux_amd64.bz2
  • برای macOS (اینتل): restic_0.18.1_darwin_amd64.bz2
  • برای macOS (اپل سیلیکون): restic_0.18.1_darwin_arm64.bz2

فایل را با curl دانلود کنید. اگر روی پلتفرم دیگری هستید نام فایل را جایگزین کنید:

cd ~
curl -LO https://github.com/restic/restic/releases/download/v0.18.1/restic_0.18.1_linux_amd64.bz2

فایل دانلودشده را Decompress کنید:

bunzip2 restic_0.18.1_linux_amd64.bz2

باینری را به /usr/local/bin کپی و قابل اجرا کنید:

sudo cp restic_0.18.1_linux_amd64 /usr/local/bin/restic
sudo chmod a+x /usr/local/bin/restic

نصب را با چک کردن نسخه تأیید کنید:

restic version
Output
restic 0.18.1 compiled with go1.23.6 on linux/amd64

اگر خروجی نسخه را دیدید، Restic نصب و آماده استفاده است. می‌توانید Restic را از طریق مدیر پکیج سیستم‌تان هم نصب کنید (apt install restic روی دبیان/اوبونتو، brew install restic روی macOS)؛ هرچند این مخازن ممکن است نسخه قدیمی‌تری داشته باشند.

نکته: اگر Restic نسخه 0.9.4 یا بعدتر را نصب کرده‌اید، می‌توانید هر وقت بخواهید با اجرای sudo restic self-update به جدیدترین Release به‌روزرسانی کنید. این آخرین باینری را مستقیم از گیت‌هاب دانلود و موجود را جایگزین می‌کند.

گام ۲ — پیکربندی اعتبارنامه‌های Object Storage

Restic جزئیات اتصال و رمز عبور مخزن را از متغیرهای محیطی می‌خواند. ذخیره این‌ها در فایل اختصاصی، اعتبارنامه‌های‌تان را از تاریخچه شل خارج و برای اسکریپت‌های خودکار در دسترس نگه می‌دارد.

در دایرکتوری خانه‌تان فایل پیکربندی بسازید:

nano ~/.restic-env

خطوط زیر را اضافه کنید؛ و مقادیر Placeholder را با اعتبارنامه‌های واقعی ذخیره‌سازی Object خودتان جایگزین کنید:

~/.restic-env
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export RESTIC_REPOSITORY="s3:server-url/bucket-name"
export RESTIC_PASSWORD="a-strong-password"

هر متغیر این‌ها را کنترل می‌کند:

  • AWS_ACCESS_KEY_ID و AWS_SECRET_ACCESS_KEY: اعتبارنامه‌ها برای احراز هویت با ارائه‌دهنده ذخیره‌سازی سازگار با S3 شما. برای Object Storage پارمین کلود، این‌ها را از صفحه کلیدهای دسترسی در پنل کنترل تولید کنید. ساخت جفت کلید اختصاصی برای Restic را در نظر بگیرید تا در صورت به‌خطرافتادن کلیدها بتوانید دسترسی را مستقل لغو کنید.
  • RESTIC_REPOSITORY: مسیر کامل به مخزن بکاپ شما. برای Object Storage پارمین کلود، قالب s3:region.parmincloud.ir/bucket-name است. مثلاً: s3:nyc3.parmincloud.ir/my-backups. اگر لازم است روی HTTP ساده یا پورت غیراستاندارد وصل شوید، آن را در URL بگنجانید: s3:http://example-server:3000/bucket-name.
  • RESTIC_PASSWORD: passphraseای که Restic برای استخراج کلیدهای رمزنگاری مخزن‌تان استفاده می‌کند. همه داده‌ها قبل از آپلود با AES-256-CTR همراه با احراز Poly1305-AES به‌صورت محلی رمزنگاری می‌شوند. رمز عبور قوی و یکتایی انتخاب و نسخه‌ای را در مکان امنی مثل مدیر رمز عبور ذخیره کنید. اگر این رمز را از دست بدهید، بکاپ‌های‌تان قابل رمزگشایی یا بازیابی نیستند.

رمز عبور تصادفی قوی با openssl تولید کنید:

openssl rand -base64 24
Output
j8CGOSdz8ibUYK137wtdiD0SJiNroGUp

خروجی را در فیلد RESTIC_PASSWORD کپی کنید. وقتی تمام شد فایل را ذخیره و ببندید.

مجوزهای فایل را طوری محدود کنید که فقط کاربر شما بتواند بخواندش:

chmod 600 ~/.restic-env

نکته: برای محیط‌های پروداکشن، ذخیره اعتبارنامه‌ها در مدیر Secretهایی مثل HashiCorp Vault یا استفاده از ابزارهای مدیریت فایل .env خاص-محیط را در نظر بگیرید. از Commit کردن فایل‌های اعتبارنامه به مخازن Version Control بپرهیزید.

گام ۳ — مقداردهی اولیه مخزن Restic روی Object Storage

قبل از اینکه بتوانید بکاپ بسازید، باید مخزن Restic را در Bucket ذخیره‌سازی Object خودتان مقداردهی اولیه کنید. این ساختار دایرکتوری و متادیتای رمزنگاری‌ای که Restic لازم دارد را می‌سازد.

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

source ~/.restic-env

درست بارگذاری شدن URL مخزن را تأیید کنید:

echo $RESTIC_REPOSITORY

باید URL مخزن‌تان را در ترمینال چاپ‌شده ببینید. حالا مخزن را مقداردهی اولیه کنید:

restic init
Output
created restic repository 57f73c1afc at s3:nyc3.parmincloud.ir/my-backups

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.

مخزن حالا مقداردهی اولیه شده و آماده دریافت داده‌های بکاپ است. Restic چندین دایرکتوری داخل Bucket شما (config، data، index، keys، locks، snapshots) ساخته است که ساختار مخزن و متادیتا را مدیریت می‌کنند.

گام ۴ — اجرای اولین بکاپ

با مقداردهی اولیه‌شده بودن مخزن، می‌توانید با اجرای دستور restic backup از داده‌ها به سرویس ذخیره‌سازی Object بکاپ بگیرید. اولین بکاپ همه فایل‌های انتخاب‌شده را به مخزن می‌فرستد. بکاپ‌های بعدی افزایشی‌اند؛ یعنی Restic فقط بلوک‌های داده‌ای که جدیدند یا از آخرین Snapshot تغییر کرده‌اند را آپلود می‌کند.

اگر با سیستم جدیدی تست می‌کنید و داده نمونه لازم دارید، فایل متنی بسازید:

echo "Restic backs up data to object storage with encryption and deduplication." >> ~/testfile.txt

از دایرکتوری خانه‌تان بکاپ بگیرید:

restic backup ~
Output
repository 57f73c1a opened (version 2, compression level auto)
[0:02] 100.00%  4 / 4 index files loaded

Files:           14 new,     0 changed,     0 unmodified
Dirs:             4 new,     0 changed,     0 unmodified
Data Blobs:      13 new
Tree Blobs:       5 new
Added to the repository: 10.214 MiB (9.875 MiB stored)

processed 14 files, 10.230 MiB in 0:04
snapshot a1b2c3d4 saved

Restic خلاصه پیشرفت را نمایش و وقتی بکاپ کامل شد شناسه Snapshot را چاپ می‌کند. هر Snapshot، تصویر کامل نقطه-در-زمان از دایرکتوری بکاپ-گرفته-شده را نشان می‌دهد.

نکته: برای بکاپ گرفتن از دایرکتوری دیگر، ~ را با مسیر هدف جایگزین کنید. اگر دایرکتوری متعلق به کاربر دیگری است، دستور را با sudo مقدم کنید. یادتان باشد اگر لازم است مالکیت و مجوزهای اصلی فایل حفظ شود، حین عملیات بازیابی هم دوباره از sudo استفاده کنید.

هم‌چنین می‌توانید از فلگ --tag برای برچسب‌گذاری Snapshotها راحت‌تر شناسایی و فیلتر شوند استفاده کنید:

restic backup ~ --tag daily --tag production

گام ۵ — فهرست‌کردن و بازرسی Snapshotها

برای دیدن همه بکاپ‌های ذخیره‌شده در مخزن‌تان، از زیردستور snapshots استفاده کنید:

restic snapshots
Output
repository 57f73c1a opened (version 2, compression level auto)
ID        Time                 Host         Tags        Paths          Size
-----------------------------------------------------------------------------------
a1b2c3d4  2026-03-17 10:15:00  backup-srv                /home/sammy   10.230 MiB
-----------------------------------------------------------------------------------
1 snapshots

خروجی شناسه، تایم‌استمپ، نام هاست، تگ‌ها، مسیرهای بکاپ-گرفته-شده و حجم هر Snapshot را نشان می‌دهد. می‌توانید Snapshotها را بر اساس هاست، تگ یا مسیر فیلتر کنید:

restic snapshots --tag daily

برای دیدن اینکه بین دو Snapshot چه چیزی تغییر کرده، از restic diff استفاده کنید:

restic diff snapshot-id-1 snapshot-id-2

ستون Host کمک می‌کند وقتی چند ماشین داده را به همان مخزن می‌فرستند بکاپ‌ها تفکیک شوند. هر ماشینی به رمز مخزن دسترسی لازم دارد؛ و می‌توانید با restic key add چند رمز برای کنترل دسترسی ریزبینانه‌تر راه بیندازید. برای جزئیات بیشتر، مستندات مدیریت کلید Restic را ببینید.

گام ۶ — پیکربندی سیاست نگهداری با restic forget و prune

در طول زمان، مخزن‌تان Snapshotهای زیادی انباشته می‌کند. دستور restic forget متادیتای Snapshot را بر اساس قوانین نگهداری‌ای که تعریف می‌کنید حذف می‌کند؛ و فلگ --prune بلوک‌های داده واقعی‌ای که دیگر به هیچ Snapshot باقی‌مانده‌ای ارجاع نمی‌شوند را حذف می‌نماید.

اینجا مثالی آمده که آخرین ۲۴ Snapshot ساعتی، ۷ Snapshot روزانه، ۴ Snapshot هفتگی و ۶ Snapshot ماهانه را نگه می‌دارد:

restic forget --prune --keep-hourly 24 --keep-daily 7 --keep-weekly 4 --keep-monthly 6
Output
repository 57f73c1a opened (version 2, compression level auto)
Applying Policy: keep 24 hourly, 7 daily, 4 weekly, 6 monthly snapshots

keep 1 snapshots:
ID        Time                 Host         Tags        Reasons        Paths
------------------------------------------------------------------------------------
a1b2c3d4  2026-03-17 10:15:00  backup-srv               hourly snapshot /home/sammy
------------------------------------------------------------------------------------
1 snapshots

[0:01] 100.00%  1 / 1 packs deleted

Done

فلگ‌های نگهداری موجود:

فلگتوضیح
--keep-last nآخرین n Snapshot را نگه دار
--keep-hourly nآخرین n Snapshot ساعتی را نگه دار
--keep-daily nآخرین n Snapshot روزانه را نگه دار
--keep-weekly nآخرین n Snapshot هفتگی را نگه دار
--keep-monthly nآخرین n Snapshot ماهانه را نگه دار
--keep-yearly nآخرین n Snapshot سالانه را نگه دار
--keep-tag tagهمه Snapshotهای با تگ مشخص‌شده را نگه دار

می‌توانید چند فلگ را در دستور منفردی ترکیب کنید. Restic همه قوانین را ارزیابی و هر Snapshotای را که با حداقل یکی مطابقت یابد نگه می‌دارد.

نکته: دستور restic forget فقط ارجاعات Snapshot را حذف می‌کند. اجرای restic forget بدون --prune پک‌های داده زیرین را در مخزن باقی می‌گذارد. همیشه --prune را بگنجانید یا بعداً restic prune را جداگانه اجرا کنید تا فضای ذخیره‌سازی بازیابی شود.

گام ۷ — تأیید یکپارچگی مخزن

چک‌های منظم یکپارچگی تأیید می‌کنند مخزن بکاپ‌تان سازگار است و داده‌های ذخیره‌شده در آن قابل بازیابی موفق‌اند. دستور restic check ساختار مخزن، Indexها و—اختیاری—محتوای پک‌های داده را تأیید می‌کند.

چک ساختاری پایه اجرا کنید:

restic check
Output
repository 57f73c1a opened (version 2, compression level auto)
using temporary cache in /tmp/restic-check-cache-123456789
create exclusive lock for repository
load indexes
check all packs
check snapshots, trees and blobs
[0:00] 100.00%  1 / 1 snapshots
no errors were found

برای تأیید هم‌چنین اینکه داده واقعی درون فایل‌های Pack سالم و قابل خواندن است، فلگ --read-data را اضافه کنید:

restic check --read-data

این همه پک‌های داده در مخزن را دانلود و تأیید می‌کند؛ که برای مخازن بزرگ می‌تواند طولانی باشد و پهنای باند قابل توجهی مصرف کند. برای استفاده منظم، restic check پایه کافی است. --read-data را برای تأیید عمیق دوره‌ای—مثلاً ماهی یک‌بار—نگه دارید.

اگر restic check خطا گزارش کرد، می‌توانید تعمیرات خودکار را با این امتحان کنید:

restic repair index
restic repair snapshots

این دستورات فایل‌های Index آسیب‌دیده را بازسازی و ارجاعات به Blobهای داده مفقود را حذف می‌کنند. برای جزئیات بیشتر مستندات عیب‌یابی Restic را ببینید.

گام ۸ — بازیابی داده از Snapshot

می‌توانید کل Snapshot یا فایل‌های خاصی را از مخزن بکاپ‌تان بازیابی کنید. از خروجی restic snapshots شناسه Snapshot بردارید.

بازیابی Snapshot کامل به دایرکتوری هدف:

restic restore a1b2c3d4 --target /tmp/restore
Output
repository 57f73c1a opened (version 2, compression level auto)
restoring <Snapshot a1b2c3d4 of [/home/sammy] at 2026-03-17 10:15:00 +0000 UTC by sammy@backup-srv> to /tmp/restore
Summary: Restored 18 files/dirs (10.230 MiB) in 0:03

به دایرکتوری بازیابی‌شده بروید و محتویات را تأیید کنید:

ls /tmp/restore/home/sammy/
Output
testfile.txt  .restic-env

می‌توانید از فلگ‌های --include و --exclude برای بازیابی فقط فایل‌ها یا دایرکتوری‌های خاص استفاده کنید:

restic restore a1b2c3d4 --target /tmp/restore --include "/home/sammy/testfile.txt"

Restic هم‌چنین Mount کردن Snapshot به‌عنوان فایل‌سیستم فقط-خواندنیِ FUSE را پشتیبانی می‌کند؛ که به شما اجازه مرور و کپی فایل‌های منفرد بدون بازیابی کل Snapshot را می‌دهد:

mkdir /tmp/restic-mount
restic mount /tmp/restic-mount

این همه Snapshotها را زیر /tmp/restic-mount/snapshots/ در دسترس می‌کند. سپس می‌توانید در ساختار دایرکتوری ناوبری و فایل‌های لازم را کپی کنید. برای Unmount وقتی تمام شد Ctrl+C را بزنید.

نکته: دستور restic mount نیازمند نصب FUSE روی سیستم شماست. روی اوبونتو با sudo apt install fuse نصبش کنید. روی macOS، macFUSE را نصب کنید.

گام ۹ — خودکارسازی بکاپ‌ها

اجرای دستی بکاپ‌ها برای تست کار می‌کند؛ اما سیستم‌های پروداکشن به بکاپ‌های خودکار و زمان‌بندی‌شده نیاز دارند. می‌توانید از سرویس سیستمی cron برای اجرای وظایف بکاپ و Prune در برنامه تکرارشونده استفاده کنید. برای اطلاعات بیشتر درباره سینتکس و پیکربندی cron، راهنمای «نحوه استفاده از Cron برای خودکارسازی وظایف روی اوبونتو» در پارمین کلود را ببینید.

Crontab کاربر خودتان را برای ویرایش باز کنید:

crontab -e

اگر درخواست شد، ویرایشگر متنی (مثل nano) انتخاب کنید؛ سپس خط زیر را در انتهای فایل اضافه کنید:

crontab
. . .
42 * * * * . /home/sammy/.restic-env; /usr/local/bin/restic backup -q /home/sammy; /usr/local/bin/restic forget -q --prune --keep-hourly 24 --keep-daily 7 --keep-weekly 4 --keep-monthly 6 >> /home/sammy/restic-backup.log 2>&1

این ورودی cron این کارها را می‌کند:

  • 42 * * * * وظیفه را در دقیقه ۴۲ هر ساعت اجرا می‌کند.
  • . /home/sammy/.restic-env متغیرهای محیطی را بارگذاری می‌کند (معادل source).
  • restic backup -q /home/sammy بکاپ Quiet از دایرکتوری خانه اجرا می‌کند.
  • restic forget -q --prune --keep-hourly 24 --keep-daily 7 --keep-weekly 4 --keep-monthly 6 سیاست نگهداری را اعمال و داده بدون-ارجاع را Prune می‌کند.
  • >> /home/sammy/restic-backup.log 2>&1 هم خروجی استاندارد و هم خطاها را برای عیب‌یابی به فایل لاگی اضافه می‌کند.

Crontab را ذخیره و ببندید. دیمن cron برنامه را فوراً فعال می‌کند.

جایگزین: خودکارسازی با Timerهای systemd

اگر سیستم‌تان از systemd استفاده می‌کند، می‌توانید به‌جای Cron Job، واحد Timer بسازید. Timerهای systemd لاگینگ بهتری از طریق journalctl، مدیریت وابستگی و زمان‌بندی دقیق‌تر فراهم می‌کنند.

فایل واحد سرویس بسازید:

sudo nano /etc/systemd/system/restic-backup.service

محتوای زیر را اضافه کنید:

/etc/systemd/system/restic-backup.service
[Unit]
Description=Restic backup to object storage
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
User=sammy
EnvironmentFile=/home/sammy/.restic-env
ExecStart=/usr/local/bin/restic backup -q /home/sammy
ExecStartPost=/usr/local/bin/restic forget -q --prune --keep-hourly 24 --keep-daily 7 --keep-weekly 4 --keep-monthly 6

واحد Timer متناظر را بسازید:

sudo nano /etc/systemd/system/restic-backup.timer
/etc/systemd/system/restic-backup.timer
[Unit]
Description=Run Restic backup hourly

[Timer]
OnCalendar=hourly
Persistent=true
RandomizedDelaySec=300

[Install]
WantedBy=timers.target

Timer را فعال و شروع کنید:

sudo systemctl daemon-reload
sudo systemctl enable --now restic-backup.timer

فعال بودن Timer را تأیید کنید:

systemctl list-timers restic-backup.timer

برای چک خروجی اخیرین اجرای بکاپ:

journalctl -u restic-backup.service --no-pager -n 20

برای جزئیات بیشتر درباره واحدها و پیکربندی Timer سیستم‌امند، راهنمای «درک واحدها و فایل‌های یونیت systemd» در پارمین کلود را ببینید.

بعد از چند ساعت، restic snapshots را اجرا کنید تا تأیید کنید Snapshotهای جدید خودکار ساخته می‌شوند.

مقایسه Restic با ابزارهای جایگزین بکاپ

هنگام انتخاب ابزار بکاپ برای ذخیره‌سازی Object، کمک می‌کند بفهمید Restic چگونه با سایر گزینه‌های محبوب مقایسه می‌شود. جدول زیر تفاوت‌های کلیدی را خلاصه می‌کند:

ویژگیResticBorgBackupDuplicityrclone
رمزنگاریAES-256-CTR + Poly1305-AESAES-256-CTR + HMAC-SHA256GnuPG (GPG)اختیاری (از طریق remote مربوط به crypt)
DeduplicationChunking تعریف‌شده-بر-محتواChunking تعریف‌شده-بر-محتواسطح-فایلهیچ (ابزار sync)
پشتیبانی S3نیتیونه (rclone mount لازم دارد)بله (از طریق boto)نیتیو
فشرده‌سازیZstd (از 0.14)LZ4، Zstd، ZlibGZipبسته به remote متغیر
چند هاست به مخزنبلهبلهنهN/A
FUSE mountبلهبلهنهبله
نوشته‌شده باGoPython/CPythonGo

Restic و BorgBackup اصول طراحی زیادی را شریک‌اند؛ اما پشتیبانی نیتیو S3 مربوط به Restic آن را بدون پیکربندی اضافی برای بکاپ‌گیری داده به سرویس ذخیره‌سازی Object سازگار با S3 مناسب قوی می‌سازد. اگر ابزار Sync—نه ابزار بکاپ نسخه‌دار—لازم دارید، rclone ممکن است انتخاب بهتری باشد. هم‌چنین می‌توانید rclone را به‌عنوان Backend برای Restic با طرح URL مخزن rclone: استفاده کنید؛ که به شما دسترسی به بیش از ۷۰ ارائه‌دهنده ذخیره‌سازی ابری را می‌دهد.

برای درک تفاوت‌های Object Storage و Block Storage و تعیین اینکه کدام برای مورد استفاده‌تان درست است، راهنمای «مقایسه سرویس‌های Object Storage و Block Storage» را در پارمین کلود ببینید.

سوالات متداول

۱. Restic از چه رمزنگاری‌ای برای امن کردن بکاپ‌ها استفاده می‌کند؟

Restic همه داده‌های بکاپ را با AES-256 در حالت Counter (CTR) رمزنگاری و با Poly1305-AES احراز می‌کند. رمزنگاری و احراز هویت به‌صورت محلی روی ماشین شما قبل از خروج هر داده‌ای به مخزن ریموت رخ می‌دهد. کلیدهای رمزنگاری از رمز مخزن‌تان با تابع استخراج کلید scrypt گرفته می‌شوند؛ که حملات Brute-Force را از نظر محاسباتی پرهزینه می‌کند. هر فایل در مخزن بردار مقداردهی اولیه تصادفی ۱۶-بایتی و کد احراز پیام ۱۶-بایتی حمل می‌کند.

۲. آیا Restic می‌تواند مستقیم به Object Storage پارمین کلود بکاپ بگیرد؟

بله. Object Storage پارمین کلود با S3 سازگار است؛ پس Restic با طرح URL مخزن s3: به‌صورت نیتیو به آن وصل می‌شود. RESTIC_REPOSITORY را روی s3:region.parmincloud.ir/bucket-name تنظیم کنید (مثلاً s3:nyc3.parmincloud.ir/my-backups) و Access Key و Secret Key مربوط به Object Storageتان را از طریق متغیرهای محیطی AWS_ACCESS_KEY_ID و AWS_SECRET_ACCESS_KEY فراهم کنید.

۳. Deduplication در Restic چیست و چگونه بر هزینه‌های ذخیره‌سازی اثر می‌کند؟

Restic فایل‌ها را با الگوریتم Chunking تعریف‌شده-بر-محتوا (اثرانگشت‌گذاری Rabin) به قطعات طول-متغیر تقسیم می‌کند. هر قطعه با هش SHA-256 خودش شناسایی می‌شود. اگر همان قطعه در چند فایل یا بین چند Snapshot بکاپ ظاهر شود، Restic فقط یک‌بار ذخیره‌اش می‌کند. این Deduplication قبل از رمزنگاری رخ می‌دهد و فضای ذخیره‌سازی کلِ لازم را—to‌ویژه برای بکاپ‌های افزایشی که بیشتر داده تغییر نکرده—به‌طور قابل توجهی کم می‌کند.

۴. چطور از رمز مخزنِ گم‌شده یا فراموش‌شده بازیابی کنم؟

نمی‌توانید. Restic همه کلیدهای رمزنگاری را از رمز مخزن می‌گیرد. هیچ درب پشتی، کلید بازیابی یا سازوکار Reset رمزی وجود ندارد. اگر رمز را از دست بدهید، داده‌های بکاپ‌تان برای همیشه غیرقابل دسترس است. همیشه رمز مخزن‌تان را در مدیر رمز عبور ذخیره و بکاپ جداگانه آفلاینی از رمز را در مکان فیزیکی امنی نگه دارید.

۵. دستور restic forget چه تفاوتی با restic prune دارد؟

دستور restic forget متادیتای Snapshot (اشاره‌گرهایی که به وضعیت‌های بکاپ خاص ارجاع می‌دهند) را بر اساس قوانین نگهداری‌ای که فراهم می‌کنید حذف می‌کند. پک‌های داده زیرین را حذف نمی‌کند. دستور restic prune مخزن را برای پک‌های داده‌ای که دیگر به هیچ Snapshot باقی‌مانده‌ای ارجاع نمی‌شوند اسکن و آن‌ها را حذف می‌کند. اجرای restic forget --prune هر دو عملیات را در قدم منفردی ترکیب می‌کند؛ که رویکرد توصیه‌شده است.

نتیجه‌گیری

در این آموزش، Restic را نصب، اعتبارنامه‌های ذخیره‌سازی Object سازگار با S3 را پیکربندی، مخزن بکاپ رمزنگاری‌شده را مقداردهی اولیه، بکاپ‌ها را ساخت و بازیابی، سیاست‌های نگهداری را راه‌اندازی، یکپارچگی مخزن را تأیید و روند کاری بکاپ را خودکار کردید. ترکیب رمزنگاری AES-256، Deduplication افزایشی و پشتیبانی نیتیو S3 مربوط به Restic، آن را به ابزاری عملی برای حفاظت داده روی سرویس‌های Object Storageای مثل Object Storage پارمین کلود تبدیل می‌کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا