مهندسین/محققین از فایل‌هایتان پشتیبان بگیرید!

دسته‌بندی: برنامه‌نویسی

آرش صمدی

ایجاد: دوشنبه 03 آذر 1404 16:58

بروزرسانی: دوشنبه 03 آذر 1404 17:33

این مقاله به معرفی Awesome Backup Tool می‌پردازد؛ ابزاری سبک و مبتنی بر پایتون که برای انجام پشتیبان‌گیری طراحی شده است. این ابزار با بهره‌گیری از مقایسه زمان آخرین تغییر فایل‌ها، تنها فایل‌های جدید یا اصلاح‌شده را کپی کرده و فایل‌های حذف‌شده را به‌صورت خودکار در یک پوشه آرشیوی ذخیره می‌کند. ساختار ساده، اجرای سریع، و عدم نیاز به تنظیمات پیچیده، این اسکریپت را به انتخابی مناسب برای پژوهشگران، توسعه‌دهندگان و کاربرانی تبدیل می‌کند که به یک روش امن و کارآمد برای مدیریت بک‌آپ نیاز دارند. این مقاله ضمن تشریح سازوکار عملکرد ابزار، مزایا و نحوه استفاده از آن را نیز ارائه می‌کند.

معرفی Awesome Backup Tool*

ابزاری ساده، قابل‌شخصی‌سازی و سبک برای ساختن نسخه پشتیبان از یک پوشه خاص

در بسیاری از پروژه‌ها، فایل‌های تحقیقاتی، اسناد کاری و داده‌های حساس (به‌ویژه در محیط‌های مهندسی و دانشگاهی و به ویژه برای دانشجویان ارشد/دکتری) نیاز به یک روش مطمئن، سریع و بدون پیچیدگی برای پشتیبان‌گیری وجود دارد. نرم‌افزارهای موجود معمولاً سنگین یا بیش از حد پیچیده‌اند، درحالی‌که نیاز اصلی بسیاری از کاربران، صرفاً این است:

«هر بار فقط فایل‌های جدید یا تغییر یافته کپی شود، و فایل‌های حذف شده هم جایی آرشیو شوند تا هیچ چیز از دست نرود.»

به همین دلیل، کد Awesome Backup Tool را نوشتم! آیا این یک شاهکار نرم افزاریست؟ خیر! آیا این کد دارای ویژگی منحصر به فردی نسبت به سایر موارد مشابه است؟ حتی چک هم نکردم که ببینم هست یا خیر :دی! اما این کد یک ابزار پشتیبان‌گیری بوده که با پایتون توسعه داده شده و در عین سادگی، عملکردی سرراست و قابل شخصی‌سازی (به دلیل متن باز بودن کد) برای بک‌آپ‌گیری از فایل‌ها ارائه می‌کند.


اما چرا اصلا این کد را نوشتم؟

در بک‌آپ‌گیری‌های ساده (Copy/Paste) دو مشکل اساسی وجود دارد:

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

  2. اگر فایلی از روی سیستم حذف شود، در بک‌آپ هم حذف می‌شود
    و این یعنی از دست رفتن اطلاعات.

Awesome Backup Tool با رویکرد Incremental Backup این دو مشکل را کاملاً رفع می‌کند:

  • فقط فایل‌های جدید یا فایل‌های تغییر یافته کپی می‌شوند.

  • فایل‌هایی که از منبع حذف شده‌اند، در مقصد آرشیو می‌شوند (نه اینکه حذف شوند).

  • زمان آخرین تغییر هر فایل در یک فایل metadata ذخیره می‌شود، بنابراین کد همیشه از وضعیت آخرین بک‌آپ مطلع است.


سازوکار عملکرد ابزار:

فرایند پشتیبان‌گیری در این ابزار شامل سه مرحله اصلی است:

1. شناسایی فایل‌های جدید یا تغییر یافته

ابزار با بررسی آخرین زمان اصلاح (Modification Time) هر فایل تعیین می‌کند که:

  • آیا فایل جدید است؟

  • آیا نسخه قبلی تغییر کرده است؟

اگر پاسخ مثبت باشد، فایل با copy2 (به همراه متادیتای اصلی) کپی می‌شود.


2. جابه‌جایی فایل‌های حذف‌شده به یک آرشیو ایمن

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

  • حذف نمی‌کند

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

/deleted/YYYYMMDD_HHMMSS/relative_path

این کار به شما اجازه می‌دهد همیشه نسخه‌های قبلی را نگه دارید.


3. ذخیره متادیتای نسخه جدید

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


روش استفاده

در ساده‌ترین حالت کافی است مسیر منبع (پس از عبارت s- آدرس آن نوشته میشود) و مقصد (پس از عبارت d- آدرس آن نوشته میشود) را مشخص کنید:

py backup_v2.py -s "C:/Users/Arash/Desktop/Academic" -d "G:/theAcademicBackup"

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

این یعنی:

  • اجرای روزانه آن بسیار سریع است

  • حجم بک‌آپ‌ها کنترل‌شده باقی می‌ماند

  • هیچ فایلی بدون آرشیو شدن حذف نمی‌شود

  • نکته ایمنی 1: اطمینان حاصل فرمایید که فایل مقصد حتما و حتما خالی باشد تا سبب جایگزین شدن فایل های موجود با فایل های جدید و یا از دست رفتن اطلاعات نشود.

  • نکته ایمنی 2: فایل های حذف شده به صورت خودکار بازیابی نمی‌شوند.

  • نکته ایمنی 3: بهتر است قبل از استفاده از کد، آن را به دقت مطالعه بفرمایید و از سازوکار و چرایی توابع و دستورات آن مطلع شوید، به طور کلی استفاده از این برنامه به افرادی که آشنایی چندانی با برنامه نویسی ندارند، توصیه نمی‌شود*.


 مزایای کلیدی Awesome Backup Tool

  • بک‌آپ افزایشی واقعی (True Incremental)

  • آرشیو خودکار فایل‌های حذف‌شده

  • بدون نیاز به دیتابیس یا تنظیمات پیچیده

  • سازگار با تمام سیستم‌عامل‌ها

  • مبتنی بر Python، سبک و قابل توسعه

این ابزار می‌تواند برای پژوهشگران، توسعه‌دهندگان، کاربران خانگی یا سیستم‌های خودکار مورد استفاده قرار گیرد.


 دریافت برنامه و مشارکت

کد کامل پروژه در گیت‌هاب موجود است:

GitHub:

https://github.com/arashsamadi/awesome-backup-tool


سخن پایانی

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


* توجه: این ابزار «به همان شکل که هست» (AS IS) ارائه می‌شود و هیچ‌گونه تضمین، تعهد یا مسئولیتی (چه صریح و چه ضمنی) در خصوص عملکرد، دقت، قابلیت اطمینان، امنیت، سازگاری، پایداری یا مناسب‌بودن آن برای هرگونه کاربرد خاص ارائه نمی‌گردد.

توسعه‌دهنده هیچ مسئولیتی در قبال هرگونه خسارت مستقیم، غیرمستقیم، اتفاقی، تبعی، یا از دست رفتن داده (اعم از آن‌که ناشی از استفاده از این ابزار، عدم امکان استفاده از آن، خطای کاربری، اشکال نرم‌افزاری، اشکالات سخت‌افزاری، تنظیمات نادرست، یا هر عامل دیگری باشد) نمی‌پذیرد. تمامی خطرات و پیامدهای استفاده از این ابزار، به‌طور کامل بر عهده کاربر است.

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

ثبت نظر:



وبسایت Vδ

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

آدرس کانال تلگرام

Channel ID: @vdelta_ir

آخرین مطالب

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

آرش صمدی

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

سایر مقالات درباره نویسنده