تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

آموزش بکاپ گیری از دایرکتوری‌های حجم بالا با Unison در اوبونتو 24.04


۲۲ خرداد ۱۴۰۴

Unison یک ابزار متن باز است که برای همگام ساختن فایل‌ها از آن استفاده می‌شود. این ابزار عملکرد بسیار بالایی را در بکاپ‌گیری از مجموعه داده‌های بزرگ دارد، به‌خصوص در شرایطی که تعداد کمی از فایل‌ها، اضافه یا به‌روز‌رسانی شده باشند. اما آیا می‌دانید که این شرایط چه زمانی اتفاق می‌افتد؟!

این وضعیت معمولاً در محیط‌هایی مانند فایل‌های Samba یا سرورهای ایمیل رخ می‌دهد. دلیل آن این است که بیشتر فایل‌ها بدون تغییر باقی می‌مانند و تنها تعداد کمی از آن‌ها هر روز اضافه یا ویرایش می‌شوند.

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

با سرور ابونتو لیارا، بدون دردسر سرور خود را تنها با چند کلیک مدیریت کنید.
✅ منابع کاملاً اختصاصی و پایدار✅ سرعت بالا و ترافیک نامحدود✅ امنیت پیشرفته و پشتیبانی 24/7
خرید و راه‌اندازی سرور اوبونتو ساعتی لیارا

آنچه در ادامه خواهید خواند:

  • پیش‌ نیاز های راه‌ اندازی Unison
  • سرور های مورد نیاز برای راه اندازی Unison
  • ساخت کاربران غیر روت برای مدیریت بهتر سرور
  • نصب Unison روی هر دو سرور
  • ساخت کلید SSH و پیکربندی اتصال مطمئن
  • پیکربندی Unison برای بکاپ گیری یک‌ طرفه
  • بکاپ گیری از دایرکتوری با استفاده از Unison
  • اجرای نخست Unison و پیام هشدار اولیه
  • اجرای‌ Unison
  • ساخت فایل لاگ و تنظیم دسترسی
  • افزایش امنیت با محدود سازی دسترسی SSH
  • سوالات متداول
  • جمع بندی

پیش‌ نیاز های راه‌ اندازی Unison

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

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

آموزش بکاپ گیری از دایرکتوری‌های حجم بالا با Unison در اوبونتو 24.04

سرور های مورد نیاز برای راه اندازی Unison

  • سرور اصلی (primary server): سروری که داده‌های اصلی بر روی آن قرار دارد و بنا به این است که از آن‌ها بکاپ‌گیری شود.
  • سرور پشتیبان (backup server): سروری که نسخه پشتیبان داده‌ها روی آن ذخیره می‌شود.
راهنمای نصب و پیکربندی فایروال CSF در اوبونتو
نصب و پیکربندی فایروال CSF در اوبونتو

ساخت کاربران غیر روت برای مدیریت بهتر سرور

برای اینکه بتوانید مدیریت بهتری را در پروژه داشته باشید باید از یک کاربر غیر روت (Non-root) استفاده کنید که دسترسی Sudo را در اختیار و به نام sammy باشد. در این بخش از آموزش باید دو کاربر جدید دیگری را بسازید که یکی از آن‌ها بر روی سرور اصلی و دیگری بر روی سرور پشتیبان ساخته شود. دلیل این عمل این است که از سردرگمی شما در ادامه مراحل کم شود و همچنین اگر در انتهای این آموزش، پیکربندی امنیتی SSH شما فعال شود، کاربر Sudo بتواند جایگزین آن باشد.

برای اینکه بتوانید وارد سرور شوید باید از دو پنجره جداگانه SSH استفاده کنید.

ssh sammy@primary_server_ip
ssh sammy@backup_server_ip

بعد از آن بر روی سرور اصلی، کاربر جدیدی را بسازید که ما در این آموزش نام آن را primary_user گذاشته‌ایم. می‌توانید با توجه به نیازتان این نام را تغییر دهید.

sudo adduser primary_user

در این قسمت دسترسی Sudo را به کاربر خود بدهید، برای این کار از دستور زیر استفاده کنید.

sudo usermod -aG sudo primary_user

در انتها باید به حساب کاربری جدیدی که ساخته‌اید بروید.

su - primary_user

مراحلی که طی کرده‌اید را برای کاربر دیگر هم تکرار کنید و کاربری را با نام backup_user بسازید. دیگر کاربر‌های مورد نیاز سرور خود را در اختیار داشته و این قابلیت را دارید که به مرحله نصب Unison بروید.

نصب Unison روی هر دو سرور

برای اینکه بتوانید نصب را به درستی انجام دهید و بدون هیچ مشکلی آن را پشت سر بگذارید، باید پکیج‌های Unison را بر روی هر دو سرور نصب کنید. برای این کار از ابزارهای مدیریت پکیج apt که اوبونتو دارد استفاده کنید. اما به یاد داشته باشید که برای اینکار باید ابتدای کار فهرست‌های پکیج‌های محلی را به‌روز‌رسانی کنید.

sudo apt-get update

برای نصب Unison از دستور زیر استفاده کنید.

sudo apt-get install unison
آشنایی با قوانین و دستورات رایج فایروال (UFW)
قوانین و دستورات رایج فایروال (UFW)

ساخت کلید SSH و پیکربندی اتصال مطمئن

برای اینکه بتوانید این مرحله را به درستی انجام دهید باید بر روی سرور اصلی یک SSH Keys بسازید، به این دلیل که اتصال SSH از احراز هویت مبتنی بر کلید SSH استفاده می‌کند. مزیتی که این احراز هویت دارد این است که بدون آنکه رمز عبوری را وارد کنید می‌توانید اتصال مطمئنی را داشته باشید. این موضوع در برخی از مواقع از اهمیت بالایی برخوردار است.

بعد از آنکه کلید‌ها را ساختید، کلید عمومی (Public Key) را به سرور پشتیبان‌تان منتقل کنید و ارتباط Unison را از سمت SSH بررسی کنید.

به شما پیشنهاد می‌کنیم که ابتدا مطمئن شوید که پوشه .ssh وجود داشته باشد بعد به ساخت کلید بپردازید.

mkdir .ssh

از دایرکتوری primary_user بر روی سرور اصلی، فرمان زیر را برای آنکه بتوانید کلید‌های SSH را بسازید اجرا کنید.

ssh-keygen -t rsa -b 4096 -f .ssh/unison-primary

در زمان ساخت SSH Keys، باید رمز عبور قوی را در اختیار داشته باشید. اما به این دلیل که Unison خودکار اجرا می‌شود، امکان اینکه رمز را در هر بار وارد کنید نخواهید داشت. بنابراین بدون آنکه رمزی را وارد کنید، کلید را بسازید، برای اینکار تنها کافی است که Enter را فشار دهید.

بعد از آن نیاز دارید که کلید عمومی (Public Key) را به سرور پشتیبان منتقل کنید، برای این کار باید محتویات آن را با دستوری که در ادامه قرار داده ایم بررسی کنید.

cat .ssh/unison-primary.pub

سپس سرور پشتیبان را در دایرکتوری backup_user فایل .ssh/authorized_keys باز کنید و در آن کلید عمومی (Public Key) را قرار دهید.

nano .ssh/authorized_keys

کلید را در ویرایشگر قرار دهید بعد از آن می‌توانید فایل را ذخیره کرده و از آن خارج شوید.

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

ssh -i .ssh/unison-primary backup_user@backup_server_ip

اما هنوز بررسی نکرده‌اید که آیا Unison می‌تواند از طریق SSH ارتباط را بر قرار کند یا خیر؟ برای این کار از دستوری که در ادامه قرار داده‌ایم استفاده کنید.

ssh -i .ssh/unison-primary backup_user@backup_server_ip unison -version

نکته: به یاد داشته باشید که این دستور فقط نسخه Unison را چاپ می‌کند.

اگر همه تنظیمات را به درستی انجام داده باشید باید خروجی که به شما نشان دهند مانند خروجی زیر باشد.

unison version 2.48.3
آموزش نصب برنامه React با استفاده از Nginx بر روی سرور مجازی Ubuntu
نصب برنامه React با استفاده از Nginx بر روی سرور مجازی Ubuntu

پیکربندی Unison برای بکاپ گیری یک‌ طرفه

برای اینکه بتوانید پیکربندی Unison را انجام دهید باید دایرکتوری خاصی را بر روی سرور اصلی، به‌صورت یک‌طرفه تهیه کنید.

ابتدا در دایرکتوری primary_user روی سرور اصلی، پوشه مربوط به پیکربندی Unison را بسازید.

برای اینکار در دایرکتوری primary_user که در سرور اصلی است، پوشه مربوط به پیکربندی Unison را بسازید.

mkdir .unison

بعد از آن فایل پیکربندی default.prf را باز کنید.

nano .unison/default.prf

محتوای زیر را درون فایل قرار دهید.

force = /home/primary_user/data
sshargs = -i /home/primary_user/.ssh/unison-primary

بکاپ گیری از دایرکتوری با استفاده از Unison

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

در آغاز بکاپ‌گیری دایرکتوری داده‌ها را بسازید.

mkdir /home/primary_user/data

بعد از آن 5 فایل خالی را با وارد کردن دستور زیر بسازید.

touch /home/primary_user/data/file{1..5}

عبارت روبه رو file{1..5} از قابلیت brace expansion در Bash استفاده می‌کند تا فایل‌های شماره‌گذاری‌شده از 1 تا 5 به‌سرعت ساخته شوند.

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

unison -batch -auto /home/primary_user/data ssh://backup_user@backup_server_ip//home/backup_user/data
آموزش نصب Odoo با Docker روی سرور مجازی Ubuntu
نصب Odoo با Docker روی سرور مجازی Ubuntu
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری

اجرای نخست Unison و پیام هشدار اولیه

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

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

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

Output
Contacting server...
Connected [//primary_server_ip//home/primary_user/data -> //primary_server_ip//home/backup_user/data]
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
        /home/primary_user/data
        //backup_server_ip//home/backup_user/data
This can happen either
because this is the first time you have synchronized these roots, 
or because you have upgraded Unison to a new version with a different
archive format.  

Update detection may take a while on this run if the replicas are 
large.

Unison will assume that the 'last synchronized state' of both replicas
was completely empty.  This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.

If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.

Donations to the Unison project are gratefully accepted: 
http://www.cis.upenn.edu/~bcpierce/unison

پیام اجرای موفق Unison

Waiting for changes from server
Reconciling changes
dir      ---->            /  
Propagating updates
UNISON 2.48.3 started propagating changes at 16:30:43.70 on 03 Apr 2019
[BGN] Copying  from /home/primary_user/data to //backup_server_ip//home/backup_user/data
[END] Copying  
UNISON 2.48.3 finished propagating changes at 16:30:43.71 on 03 Apr 2019
Saving synchronizer state
Synchronization complete at 16:30:43  (1 item transferred, 0 skipped, 0 failed)

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

راهنمای انتخاب بهترین سیاست فایروال برای حفاظت از سرورها
انتخاب بهترین سیاست فایروال برای حفاظت از سرورها

اجرای‌ Unison

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

Output
Contacting server...
Connected [//primary_server_ip//home/primary_user/data -> //backup_server_ip//home/backup_user/data]
Looking for changes
  Waiting for changes from server
Reconciling changes
Nothing to do: replicas have not changed since last sync.

نکته: برای درک بهتر، file1 در مسیر /data را در نظر بگیرید اگر در سرور اصلی این فایل تغییر کرده باشد. خروجی زیر را به شما نشان خواهد داد.

Output
Contacting server...
Connected [//primary_server_ip//home/primary_user/data -> //backup_server_ip//home/backup_user/data]
Looking for changes
  Waiting for changes from server
Reconciling changes
changed  ---->            file1  
Propagating updates
UNISON 2.48.3 started propagating changes at 16:38:37.11 on 03 Apr 2019
[BGN] Updating file file1 from /home/primary_user/data to //backup_server_ip//home/backup_user/data
[END] Updating file file1
UNISON 2.48.3 finished propagating changes at 16:38:37.16 on 03 Apr 2019
Saving synchronizer state
Synchronization complete at 16:38:37  (1 item transferred, 0 skipped, 0 failed)

نکته حائز اهمیت: در این شرایط هر فایل جدیدی که ساخته‌اید یا تغییراتی که در مسیر داده‌ها در سرور پشتیان داشته‌اید از بین می‌رود.

آموزش نصب سرور OpenLiteSpeed روی سرور مجازی Ubuntu 22.04
نصب سرور OpenLiteSpeed روی سرور مجازی Ubuntu 22.04

ساخت فایل لاگ و تنظیم دسترسی

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

sudo touch /var/log/unison.log

احتمالا نیاز داشته باشید که مالکیت فایل primary_user را تعیین کنید برای این عمل دستور زیر را وارد کنید.

sudo chown primary_user /var/log/unison.log

افزایش امنیت با محدود سازی دسترسی SSH

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

برای اینکه بتوانید این محدودیت را اعمال کنید باید فایل پیکربندی SSH سرور پشتیبان را باز کنید.

sudo nano /etc/ssh/sshd_config

و خطوطی که در ادامه قرار داده‌ایم را به انتهای آن اضافه کنید.

Match User backup_user
  ForceCommand unison -server

این تنظیمات باعث می‌شود کاربر backup_user تنها اجازه اجرای دستور unison -server را داشته باشند.

برای اعمال کردن تمامی تغییراتی که انجام داده‌اید، سرویس SSH را بار دیگر باز کنید.

sudo systemctl reload ssh.service

بعد از آن پیشنهاد ما به شما این است که تنظیمات‌تان را بررسی کنید که آیا اعمال شده است یا خیر؟!

ssh -i .ssh/unison-primary backup_user@backup_server_ip

اگر تنظیمات شما به درستی بر روی آن اعمال شده باشد پیغام زیر را دریافت خواهید کرد.

Unison 2.48

“نکته مهم: به یاد داشته باشید که ارتباط شما فقط در زمان فشردن CTRL + C بر قرار است به این دلیل که منتظر اجرای دستور Unison است “

نگاهی عمیق به معماری Iptables و Netfilter
معماری Iptables و Netfilter

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

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

آیا Unison برای بکاپ‌ گیری در اوبونتو 24.04 مناسب است؟

Unison با اوبونتو 24.04 سازگار است و برای همگام‌سازی دوطرفه یا یک‌طرفه بین دو دایرکتوری، کاربردی و مطمئن است.

اگر هنگام اجرای Unison پیام “No archive files were found” نمایش داده شود، چه باید کرد؟

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

اگر در سرور پشتیبان فایل جدیدی اضافه شود، Unison چه واکنشی نشان می‌ دهد؟

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

چگونه می‌ توان امنیت اتصال SSH برای Unison را افزایش داد؟

می‌توان با تنظیمات فایل /etc/ssh/sshd_config، دسترسی کاربر پشتیبان را محدود کرد تا فقط بتواند دستور unison -server را اجرا کند. این کار از اجرای سایر دستورات توسط آن کاربر از طریق SSH جلوگیری می‌کند و امنیت بیشتری فراهم می‌سازد.

جمع بندی

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

به اشتراک بگذارید

برچسب‌ها: