بکاپ اوبونتو (نحوه Backup گیری در Ubuntu) بکاپ گیری از سرور لینوکس + rsync
لینوکس به عنوان یک سیستم عامل که بسیار قابل تنظیم است و به شدت به تعاملات CLI متکی است، مستعد خرابی های سیستمی است که ناشی از دستورات یا تنظیمات نادرست سیستم است. بنابراین اگر از لینوکس در رایانه اصلی یا vps لینوکس استفاده می کنید، ممکن است اغلب با مشکلاتی مواجه شوید.
خوشبختانه، ابزارهای بازیابی سیستم وجود دارد که snapshot از فایلها و تنظیمات شما ایجاد میکند، که میتوانید آنها را بر روی سیستم خود بازیابی کنید تا در صورتی که هر یک از تنظیمات شما، لینوکس را ناپایدار کند، آن را به نقطه عملکرد قبلی خود برگردانید. پشتیبانگیری از سرور این اطمینان بسیار لازم را فراهم میکند که دادهها از بین نمیروند و در صورت بروز احتمالی خرابی، قابل بازیابی هستند. با این حال، هر سیستم عامل روش متفاوتی برای بکاپ گیری دارد.
در این مقاله انواع روش های بکاپ گیری، ساخت فایل ISO از اوبونتویی که از قبل نصب دارید و همگام سازی اطلاعات رو آموزش میدیم.
بکاپ گیری از لینوکس با Timeshift
برنامه TimeShift لینوکس چیست؟ مانند Windows System Restore و macOS Time Machine که در ویندوز و مک استفاده میشود، لینوکس نیز ابزاری به نام «TimeShift» دارد. ما به راحتی می توانیم این ابزار بازیابی یا پشتیبان گیری سیستم لینوکس را روی اوبونتو، لینوکس مینت و دبیان نصب کنیم. وظیفه کلیدی این ابزار ایجاد snapshot فوری از سیستم فایل لینوکس است که در هنگام بازیابی حالت قبلی را بازیابی می کند.
ابزار Timeshift روی فایلهای سیستمی تمرکز دارد و با استفاده از Rsync از آنها بکاپ میگیرد. این برنامه به طور هوشمند فایلهای شخصی شما در پوشه home (مانند اسناد و دانلودها) را شامل بکاپ نمیکند تا در صورت بازیابی، اطلاعاتتان حذف نشود. البته تنظیمات شخصی برنامهها همراه با سیستم بکاپ گرفته میشوند. Timeshift علاوه بر Rsync، از اسنپشاتهای BTRFS هم پشتیبانی میکند.
آموزش نصب TimeShift در Ubuntu 24.04 | 22.04 LTS | Linux Ubuntu 20.04
دستور به روز رسانی سیستم را اجرا کنید
sudo apt update && sudo apt upgrade
ما برای نصب TimeShift نیازی به افزودن مخزن اضافی نداریم زیرا بسته های آن در مخزن سیستم پیش فرض اوبونتو وجود دارد و به سادگی از مدیر بسته APT برای نصب TimeShift میتوانید استفاده کنید.
sudo apt install timeshift
آموزش نصب TimeShift در Fedora, CentOS و RHEL
sudo dnf install timeshift
اگر از لینوکس با محیط دسکتاپ گرافیکی استفاده میکنین، از لیست app های نصب شده، timeshift رو جستجو کنین و اجرا کنید. بعد از اجرای این برنامه از شما می خواهد که نوع اسنپ شات را بین Rsync و BTRS انتخاب کنید. توجه: برای استفاده از نوع اسنپ شات BTRFS سیستم فایل لینوکس شما باید در BTRFS فرمت شده باشد. در غیر این صورت به سراغ rsync بروید. در متن زیر، توضیحاتی درباره انواع اسنپ شات قرار دادیم.
اسنپ شات RSYNC
- اسنپ شات با ایجاد کپی از فایل های سیستم با استفاده از rsync و پیوند hard-linking بدون تغییر از اسنپ شات قبلی ایجاد می شوند.
- همه فایل ها با ایجاد اولین اسنپ شات کپی می شوند. اسنپ شات بعدی افزایشی هستند. فایلهای بدون تغییر در صورت موجود بودن با اسنپ شات قبلی hard-linking خواهند داشت.
- اسنپ شات را می توان در هر دیسک فرمت شده با یک سیستم فایل لینوکس ذخیره کرد. ذخیره اسنپ شات در دیسکهای غیر سیستمی یا خارجی به سیستم اجازه میدهد حتی اگر دیسک سیستم آسیب دیده یا دوباره قالببندی شود، بازیابی شود.
- فایل ها و دایرکتوری ها را می توان برای صرفه جویی در فضای دیسک حذف کرد.
اسنپ شات BTRFS
- اسنپ شات با استفاده از ویژگی های داخلی سیستم فایل BTRFS ایجاد می شوند.
- اسنپ شات ایجاد و بازیابی فوری انجام میشود. ایجاد Snapshot یک تبادل اتمی در سطح سیستم فایل است.
- اسنپ شات با جایگزینی حجم های فرعی سیستم بازیابی می شوند. از آنجایی که فایل ها هرگز کپی، حذف یا بازنویسی نمی شوند، خطر از دست رفتن داده ها وجود ندارد. سیستم موجود پس از بازیابی به عنوان یک اسنپ شات جدید حفظ می شود.
- اسنپ شات کپی های بایت به بایت کامل سیستم هستند. هیچ چیز مستثنی نیست.
- اسنپ شات روی همان دیسکی که از آن ایجاد شده اند (دیسک سیستم) ذخیره می شوند. ذخیره سازی روی دیسک های دیگر پشتیبانی نمی شود. اگر دیسک سیستم از کار بیفتد، اسنپ شات های ذخیره شده روی آن به همراه سیستم از بین می روند.
- اندازه اسنپ شات BTRFS در ابتدا صفر است. همانطور که فایل های سیستم به تدریج با گذشت زمان تغییر می کنند، داده ها در بلوک های داده جدید که فضای دیسک را اشغال می کنند (کپی در نوشتن) نوشته می شود. فایلهای موجود در اسنپ شات همچنان به فضای دیسک اشاره میکنند (کپی در نوشتن). Ales در اسنپ شات همچنان به بلوک های داده اصلی اشاره می کند.
- سیستم عامل باید بر روی یک پارتیشن BTRFS با Ubuntu-type subvolume layout از نوع Ubuntu (subvolumes @ و @home) نصب شود. layouts دیگر پشتیبانی نمی شوند.
دستورات CLI timeshift برای لینوکس سرور
علاوه بر نسخه دسکتاپ لینوکس، میتونین از دستورات cli timeshift در نسخه های سروری این سیستم عامل در سرور مجازی امارات یا سرور مجازی آمریکا یا هر موقعیت دیگه ای اجرا کنید.
مشاهده لیست اسنپ شات ها
sudo timeshift --list
ساخت اسنپ شات (در صورتیکه زمانبندی scheduled ایجاد کرده باشید)
sudo timeshift --check
ساخت اسنپ شات (در صورتیکه زمانبندی scheduled ایجاد نکرده باشید)
sudo timeshift --create
ریستور اسنپ شات (با انتخاب اینکه کدام فایل اسنپ شات را میخواهید انتخاب کنید)
sudo timeshift --restore
ریستور اسنپ شات خاص
sudo timeshift --restore --snapshot '[snapshot]'
حذف اسنپ شات
sudo timeshift --delete --snapshot '[snapshot]'
--tags D مخفف Daily Backup - بکاپ روزانه است --tags W مخفف Weekly Backup - بکاپ هفتگی است --tags M مخفف Monthly Backup - بکاپ ماهانه است --tags O مخفف On-demand Backup - بکاپ لحظه ای است
(ایجاد یک اسنپ شات ممکن است چند دقیقه طول بکشد، بستگی به اندازه فایل ها و منابع سخت افزاری شما دارد)
ساخت ISO با اوبونتو Ubuntu 24.04, 22.04, 20.04
برنامه های مختلف third-party وجود دارد که به شما امکان می دهد ISO یی از نصب فعلی در اوبونتو 22.04 ایجاد کنید. در این بخش 3 برنامه رو به شما آموزش میدیم.
نصب Brasero
Brasero یک برنامه disk burning اوپن سورس برای سیستم عامل های مبتنی بر لینوکس است. این برنامه یک رابط گرافیکی ساده و تمیز دارد که به شما امکان می دهد یک فایل ISO از سیستم عامل فعلی ایجاد کنید. برای نصب Brasero در Ubuntu 22، ترمینال را باز کرده و سپس دستور زیر را اجرا کنید.
sudo apt install brasero
پس از اتمام نصب، Brasero را با استفاده از دستور “Brasero” در ترمینال اجرا کنید. همچنین می توانید با جستجوی نام Brasero، برنامه را از نوار جستجوی برنامه Ubuntu اجرا کنید.
Mkisofs
یک ابزار دیگر به نام MKISOFS وجود دارد که به شما امکان می دهد ISOیی از نصب فعلی اوبونتو 22.04 ایجاد کنید. این ابزار در ترمینال اوبونتو اجرا می شود و دستورات اصلی در ترمینال در زیر آورده شده است :
mkisofs -o <file_name.iso> <path_of_directory>
دستور بالا فایل “backup.iso” را در پوشه Home ایجاد می کند که حاوی محتویات تمام پوشه های موجود در پوشه Backup است.
ابزار Rsync: راهکاری قدرتمند برای همگامسازی فایلها
ابزار rsync یکی از قدرتمندترین و پرکاربردترین ابزارها در لینوکس برای همگامسازی و پشتیبانگیری از فایلها است. وجه تمایز اصلی rsync، الگوریتم هوشمند آن است: این ابزار فقط تفاوتها (delta) بین فایلهای مبدأ و مقصد را منتقل میکند. این رویکرد باعث افزایش چشمگیر سرعت و کاهش مصرف منابع (مانند پهنای باند و CPU) میشود.
برای درک بهتر، این مثال را در نظر بگیرید:
فرض کنید یک پوشه 10 گیگابایتی از فایلهای وبسایت خود دارید. اولین باری که از rsync برای کپی کردن این پوشه به مقصد بکاپ استفاده میکنید، تمام 10 گیگابایت منتقل میشود.
حالا تصور کنید روز بعد، فقط یک فایل 5 کیلوبایتی را ویرایش میکنید. اگر دوباره دستور rsync را اجرا کنید، این ابزار هوشمندانه متوجه میشود که تنها 5 کیلوبایت داده تغییر کرده و فقط همین 5 کیلوبایت را به مقصد منتقل میکند. این در حالی است که یک کپی معمولی، کل 10 گیگابایت را دوباره کپی میکرد.
علاوه بر این، rsync بسیار انعطافپذیر است:
- حفظ ویژگیها: این ابزار میتواند تمام ویژگیهای فایل مانند مجوزهای دسترسی (permissions)، مالکیت و زمان ویرایش (timestamps) را حفظ کند که برای بکاپهای سیستمی حیاتی است.
- انعطاف در انتقال: هم به صورت محلی (بین دو پوشه در یک سیستم) و هم به صورت ریموت (از طریق پروتکل SSH به یک سرور دیگر) قابل استفاده است.
- قابلیت حذف: میتواند فایلهایی را در مقصد حذف کند که دیگر در مبدأ وجود ندارند تا دو مسیر کاملاً با هم همگام باقی بمانند.
نصب rsync
برای نصب rsync میتوانید از دستورات زیر متناسب با توزیع خود استفاده کنید:
# For Debian/Ubuntu & Mint sudo apt-get install rsync For Arch Linux sudo pacman -S rsync For Fedora/CentOS/RHEL sudo yum install rsync
ساختار دستورات Rsync
Local to Local: rsync [OPTION]... [SRC]... DEST Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST] OPTION - گزینهها و تنظیمات rsync. SRC - دایرکتوری مبدأ. DEST - دایرکتوری مقصد. USER - نام کاربری سیستم ریموت. HOST - آدرس IP یا نام هاست سیستم ریموت.
مثال زیر نحوه ایجاد یک نسخه پشتیبان محلی از فایلهای وبسایت را نشان میدهد (رنگ آبی آدرس فایلهای وبسایت و رنگ نارنجی، آدرس پوشهای است که بکاپها در آنجا منتقل میشوند):
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
استفاده از Rsync برای انتقال اطلاعات به سرور دیگر
برای استفاده از rsync جهت همگامسازی با یک سیستم از راه دور، مانند سرور مجازی آلمان، فقط به دسترسی SSH بین دستگاههای محلی و راه دور و همچنین نصب بودن rsync در هر دو سیستم نیاز دارید. پس از تأیید دسترسی SSH، میتوانید با استفاده از دستور زیر، پوشه dir1 را به یک دستگاه راه دور همگامسازی کنید. توجه داشته باشید که برای انتقال خود دایرکتوری، اسلش انتهایی را از نام آن حذف میکنیم:
rsync -a ~/dir1 username@remote_host:destination_directory
این فرآیند، عملیات “push” نامیده میشود، زیرا یک دایرکتوری را از سیستم محلی به یک سیستم راه دور ارسال میکند. عمل مخالف آن “pull” است که برای همگامسازی یک دایرکتوری راه دور با سیستم محلی استفاده میشود. اگر دایرکتوری dir1 در سیستم راه دور قرار داشت و میخواستید آن را به سیستم محلی خود منتقل کنید، دستور به شکل زیر خواهد بود:
rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
Rsync گزینههای زیادی برای تغییر رفتار پیشفرض خود فراهم میکند. برای مثال، اگر فایلهایی که منتقل میکنید از قبل فشرده نشدهاند (مانند فایلهای متنی)، میتوانید با افزودن گزینه `-z`، دادهها را حین انتقال فشرده کرده و مصرف پهنای باند را کاهش دهید:
rsync -az source destination
برای اینکه دو دایرکتوری واقعاً همگام (sync) باشند، لازم است فایلهایی که از مبدأ حذف شدهاند، از دایرکتوری مقصد نیز حذف شوند. به طور پیشفرض، rsync چیزی را از مقصد حذف نمیکند. میتوانید این رفتار را با گزینه `–delete` تغییر دهید. قبل از استفاده از این گزینه، میتوانید از `-n` یا `–dry-run` برای انجام یک اجرای آزمایشی استفاده کنید تا از حذف ناخواسته دادهها جلوگیری شود:
rsync -an --delete source destination
برای نمایش پیشرفت انتقال دادهها، میتوانید از گزینه `–progress` استفاده کنید. این گزینه، لیست فایلها و زمان باقیمانده برای تکمیل فرآیند را نمایش میدهد.
rsync -avzhe ssh --progress /root/rpmpkgs [email protected]:/root/rpmpkgs
در نهایت، گزینه `–backup` را میتوان برای نگهداری نسخههای قدیمیتر فایلها استفاده کرد. این گزینه معمولاً به همراه `–backup-dir` به کار میرود که مسیر دایرکتوری برای ذخیره فایلهای جایگزین شده را مشخص میکند:
rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destination
بکاپگیری خودکار با Rsync و Cron Job
اجرای دستی دستورات `rsync` برای بکاپگیری منظم میتواند خستهکننده و مستعد خطای انسانی باشد. یک استراتژی پشتیبانگیری قابل اعتماد باید کاملاً خودکار باشد. اینجا است که با ترکیب قدرت `rsync` و ابزار زمانبندی `cron` در لینوکس، میتوان یک سیستم پشتیبانگیری هوشمند و اتوماتیک ایجاد کرد.
`cron` یک سرویس زمانبندی کارها (job scheduler) در سیستمعاملهای مبتنی بر یونیکس است که به شما امکان میدهد دستورات یا اسکریپتها را در زمانها و فواصل مشخص به صورت خودکار اجرا کنید.
مرحله ۱: نوشتن یک اسکریپت بکاپ
بهترین روش برای خودکارسازی، قرار دادن دستور `rsync` در یک فایل اسکریپت `shell` است. این کار مدیریت و خطایابی را سادهتر میکند.
یک فایل جدید برای اسکریپت خود ایجاد کنید:
sudo nano /usr/local/bin/backup_script.sh
محتویات زیر را در آن کپی کنید. فراموش نکنید که مقادیر `SOURCE_DIR` و `DEST_DIR` را با مسیرهای مورد نظر خود جایگزین کنید:
#!/bin/bash مسیری که میخواهید از آن بکاپ بگیرید SOURCE_DIR="/path/to/source/directory/" مسیری که بکاپ در آن ذخیره میشود DEST_DIR="/path/to/backup/destination/" نام فایل لاگ برای ثبت وقایع LOG_FILE="/var/log/rsync_backup.log" اجرای دستور rsync rsync -av --delete " 𝑆 𝑂 𝑈 𝑅 𝐶 𝐸 𝐷 𝐼 𝑅 " " SOURCE D IR"" DEST_DIR" >> "$LOG_FILE" 2>&1 ثبت زمان اتمام در فایل لاگ echo "Backup completed on LOG_FILE"
در این اسکریپت، گزینه `-a` برای حالت آرشیو (حفظ تمام ویژگیهای فایل)، `-v` برای نمایش جزئیات عملیات (که در فایل لاگ ثبت میشود) و `–delete` برای حذف فایلهایی از مقصد که دیگر در مبدا وجود ندارند، استفاده شده است.
سپس، اسکریپت را قابل اجرا کنید:
sudo chmod +x /usr/local/bin/backup_script.sh
مرحله ۲: زمانبندی اسکریپت با Cron
اکنون باید به `cron` بگوییم که این اسکریپت را به طور منظم اجرا کند. برای ویرایش فایل `crontab` کاربر فعلی، دستور زیر را اجرا کنید:
crontab -e
سپس خط زیر را به انتهای فایل اضافه کنید تا اسکریپت هر شب ساعت ۲:۳۰ بامداد اجرا شود:
30 2 * * * /usr/local/bin/backup_script.sh
این دستور به `cron` میگوید که اسکریپت را هر روز در ساعت 2:30 بامداد اجرا کند. تمام خروجیها و خطاهای احتمالی برای بررسیهای بعدی در فایل لاگ ذخیره میشوند.
مرحله ۳: تست و تأیید عملکرد
قبل از اینکه به سیستم خودکار اعتماد کنید، بهتر است اسکریپت را به صورت دستی اجرا کرده و از صحت عملکرد آن مطمئن شوید.
sudo /usr/local/bin/backup_script.sh
سپس، محتوای پوشه مقصد و فایل لاگ را بررسی کنید تا مطمئن شوید که فرآیند بدون خطا انجام شده است.
ls -l /path/to/backup/destination/ cat /var/log/rsync_backup.log
با این روش، شما یک سیستم پشتیبانگیری خودکار، کارآمد و قابل اعتماد راهاندازی کردهاید که به طور منظم از دادههای حیاتی شما محافظت میکند.
استراتژی بکاپ گیری، نیازمند یک سرور پایدار است.
همانطور که در این مقاله مشاهده کردید، پیادهسازی بکاپهای حرفهای و خودکار با ابزارهایی مانند rsync و cron، نیازمند دسترسی کامل به سرور و منابع پایدار است. سرورهای مجازی (VPS) بلوسرور دقیقا همین سطح از کنترل، امنیت و قدرت را برای شما فراهم میکنند تا با خیال راحت از دادههای خود محافظت کنید.
فهرست تیترها
نویسنده: ایرج زاهدی، بنیانگذار و معمار فنی بلوسرور. محتوای این مقالات بر پایه تجربه عملی در طراحی، پیادهسازی و مدیریت پروژههای متنوع میزبانی وب در ایران و خارج از کشور، در طول بیش از یک دهه فعالیت مداوم نوشته شده است. به عنوان متخصص در بهینهسازی عملکرد و عیبیابی سیستمهای هاستینگ (از VPS تا هاست اشتراکی)، هدف من به اشتراکگذاری تجربیات و راهکارهای فنی است؛ همان دانشی که امروز ستون اصلی پایداری و کیفیت در سرویسهای بلوسرور محسوب میشود.
