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

انتقال بکاپ با rsync قطع شد؛ چطور ادامه دهیم و از سالم بودن فایل مطمئن شویم؟

آموزش انتقال امن فایل پشتیبان با rsync، ادامه پس از قطع اتصال، تشخیص خطا و تطبیق هش فایل مبدأ و مقصد.

انتشار:
توسط تیم فنی نت‌آرام
۶ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله انتقال بکاپ با rsync قطع شد؛ چطور ادامه دهیم و از سالم بودن فایل مطمئن شویم؟ در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
انتقال یک فایل پشتیبان بزرگ تقریباً تمام شده که اینترنت قطع می‌شود. حالا چطور بدون اشتباه ادامه دهید و مطمئن شوید نسخه مقصد ناقص نیست؟ ابزار rsync می‌تواند هنگام انتقال، بخش ناتمام را برای استفاده در تلاش بعدی نگه دارد. با این حال سرعت گرفتن انتقال به تنظیمات و باقی‌ماندن فایل ناقص بستگی دارد؛ هر انتقال قطع‌شده‌ای خودبه‌خود قابل ادامه نیست.
در این راهنما یک فایل آماده و ثابت را از سرور مبدأ به مسیر خصوصی سرور مقصد می‌فرستیم. هر دو سرور باید در اختیار شما باشند یا اجازه دسترسی داشته باشید. انتقال فایل با ساختن بکاپ معتبر فرق دارد: پس از کپی، خود بکاپ هم باید جداگانه در محیط امن آزمایش شود.

پیش‌نیازها؛ قبل از شروع این چهار مورد را آماده کنید

  1. فایل ثابت: ساخت فایل بکاپ در مبدأ تمام شده باشد و هنگام انتقال تغییر نکند. فایلی که هنوز در حال نوشته‌شدن است می‌تواند باعث اختلاف یا بکاپ ناسازگار شود.
  2. فضای کافی در مقصد: مسیر خصوصی مقصد باید برای فایل کامل و فایل موقت فضای کافی داشته باشد. بسته به نسخه و شرایط rsync، ممکن است بیش از اندازه یک فایل فضا لازم شود.
  3. دسترسی امن: SSH و rsync روی سیستم‌های لازم در دسترس باشند. از حسابی استفاده کنید که فقط به فایل مبدأ و پوشه مقصد مجاز دسترسی دارد. اثر انگشت SSH مقصد را از راه مطمئن با مدیر سرور تطبیق دهید.
  4. مسیر غیرعمومی: بکاپ و فایل ناتمام را بیرون پوشه سایت و در مسیری نگه دارید که کاربران غیرمجاز نتوانند بخوانند یا تغییر دهند. فایل بکاپ ممکن است رمز و داده مشتری داشته باشد.
مثال‌های زیر فرض می‌کنند نام فایل /home/backup/site-backup.tar.gz و مقصد backupuser@backup.example.com است. این‌ها نمونه‌اند؛ نام کاربر، میزبان و مسیرهای واقعی خود را جایگزین کنید. مسیر مقصد باید از قبل ساخته و متعلق به حساب مجاز باشد. اگر نسخه یا هاست شما rsync و SSH ندارد، از میزبان بخواهید روش انتقال مجاز را اعلام کند.

قدم اول: فضای مقصد و اتصال را بررسی کنید

در ترمینال سرور مبدأ، با حساب مجاز وارد مقصد شوید:
کد / دستورssh backupuser@backup.example.com
در اولین اتصال، اثر انگشت کلید سرور را با مقداری که مستقل از همین اتصال دریافت کرده‌اید مقایسه کنید. اگر کلید ناگهان عوض شده، بدون تأیید آن را نپذیرید. پس از ورود، فضای فایل‌سیستم مسیر بکاپ را ببینید:
کد / دستورdf -h /srv/private-backups
این دستور ظرفیت و فضای آزاد فایل‌سیستم مقصد را نشان می‌دهد. ستون Avail را با اندازه بکاپ و فضای موقت لازم مقایسه کنید. اگر خطای مسیر دیدید، ابتدا مسیر و دسترسی را با مدیر مقصد اصلاح کنید. پس از بررسی با دستور exit به ترمینال مبدأ برگردید.

قدم دوم: انتقال را با نگهداری فایل ناتمام شروع کنید

در مبدأ دستور زیر را با مسیرها و نام‌های واقعی خود اجرا کنید:
کد / دستورrsync -avh --partial-dir=.rsync-partial --info=progress2 /home/backup/site-backup.tar.gz backupuser@backup.example.com:/srv/private-backups/
گزینه -a ویژگی‌های متداول فایل را تا حد امکان حفظ می‌کند، -v اطلاعات انتقال را نشان می‌دهد و -h اندازه‌ها را خواناتر می‌کند. --info=progress2 پیشرفت کلی را نمایش می‌دهد. --partial-dir از rsync می‌خواهد بخش ناتمام را در پوشه جداگانه‌ای در مقصد نگه دارد تا در اجرای بعدی بتواند از آن کمک بگیرد. نسخه‌های قدیمی ممکن است گزینه نمایش پیشرفت متفاوتی داشته باشند؛ با rsync --version نسخه را ببینید.
پوشه مقصد و پوشه فایل ناتمام نباید برای افراد دیگر قابل نوشتن باشند؛ برای فایل حساس، دسترسی خواندن را هم محدود کنید. از یک پوشه عمومی مثل /tmp برای فایل ناقص استفاده نکنید. راهنمای رسمی rsync درباره خطر دسترسی دیگران به پوشه فایل‌های ناقص هشدار می‌دهد.
اگر دستور بدون خطا تمام شد، فایل مقصد آماده بررسی است. اگر اتصال قطع شد و فایل ناتمام واقعاً باقی مانده باشد، پس از رفع مشکل همان دستور با همان مسیرها را دوباره اجرا کنید. rsync تلاش می‌کند از اطلاعات باقی‌مانده استفاده کند؛ بسته به نسخه و وضعیت فایل‌ها ممکن است بخشی دوباره منتقل شود. فایل ناقص را برای بازیابی استفاده نکنید.
اگر دفعه اول از گزینه نگهداری فایل ناتمام استفاده نکرده بودید، ممکن است چیزی برای ادامه باقی نمانده باشد. در این حالت از انتقال دوباره با روش بالا شروع کنید. وجود یک فایل همنام به‌تنهایی ثابت نمی‌کند انتقال سالم تمام شده است.

قدم سوم: هش مبدأ و مقصد را مقایسه کنید

بعد از پایان موفق انتقال، در مبدأ مقدار هش فایل ثابت را بخوانید:
کد / دستورsha256sum /home/backup/site-backup.tar.gz
دستور یک رشته طولانی و نام فایل می‌دهد. حالا وارد سرور مقصد شوید و برای فایل منتقل‌شده همان دستور را اجرا کنید:
کد / دستورsha256sum /srv/private-backups/site-backup.tar.gz
دو رشته باید دقیقاً یکسان باشند. محاسبه روی فایل بزرگ ممکن است زمان ببرد. اگر تفاوت داشتند، مطمئن شوید مسیرهای درست و همان فایل را مقایسه می‌کنید و فایل مبدأ حین انتقال تغییر نکرده است. تا روشن‌شدن علت، فایل مقصد را سالم فرض نکنید؛ وضعیت فضای دیسک و خطاهای انتقال را بررسی و انتقال را تکرار کنید.
برابر بودن هش یعنی محتویات دو فایل در زمان محاسبه تطبیق دارند؛ ثابت نمی‌کند خود بکاپ همه داده‌ها را دارد یا قابل بازیابی است. یک بازیابی آزمایشی در محیط جداگانه و بررسی فایل‌ها و پایگاه داده را طبق روش بکاپ خود انجام دهید.

اگر دوباره قطع شد یا اجازه نوشتن نداشتید

پیام Permission denied می‌تواند به ورود SSH یا دسترسی نوشتن در مقصد مربوط باشد؛ متن کامل را بخوانید و مالک پوشه را با مدیر مقصد بررسی کنید. پیام نبود فضای کافی یعنی باید فضای همان فایل‌سیستم بررسی شود، نه اینکه فایل‌های ناشناس را حذف کنید. اگر ارتباط مرتب قطع می‌شود، زمان و پیام خطا را ثبت کنید و کیفیت مسیر شبکه یا محدودیت سمت سرویس را بررسی کنید.
برای پاک‌سازی پوشه ناقص عجله نکنید؛ ممکن است همان داده برای ادامه انتقال لازم باشد. دستور این مقاله گزینه حذف فایل‌های مقصد ندارد. به‌خصوص --delete را بدون شناخت کامل و بررسی جداگانه اضافه نکنید. اگر بکاپ سرور فروشگاهی را منتقل می‌کنید، زمان تهیه آن و سفارش‌های پس از آن را هم برای برنامه بازیابی نگه دارید. در انتخاب سرور مجازی ایران، فضای مقصد و مسیر امن پشتیبان را جدا از فضای سایت در نظر بگیرید.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام