بکاپ و بازیابی فایلهای لینوکس با rsync و tar

بکاپ لینوکس با rsync و tar برای حفاظت از فایلها مفید است، اما صرف کپیشدن چند فایل به معنی داشتن برنامهٔ بازیابی نیست. tar آرشیو میسازد و rsync فایلها را هماهنگ میکند. باید مقصد مستقل، تاریخ نسخه و روش بازیابی را هم مشخص کنید.
۱. داده و مقصد را مشخص کنید
فایلهای سایت، تنظیمات و دادهٔ برنامه را فهرست کنید. مقصد روی همان VPS در برابر حذف یا خرابی خود VPS کافی نیست. دسترسی مقصد را محدود کنید و حجم آزاد را بررسی کنید. برای دیتابیس فعال از dump یا ابزار بکاپ سازگار همان دیتابیس استفاده کنید؛ کپی خام فایلهای در حال تغییر ممکن است نسخهای ناسازگار بسازد.
۲. یک آرشیو آزمایشی بسازید
این مثال فقط پوشهٔ آزمایشی در خانهٔ کاربر ایجاد میکند و فایلهای سیستم را تغییر نمیدهد:
mkdir -p ~/backup-demo/source ~/backup-demo/archives ~/backup-demo/restore
printf "PXCloud backup test\n" > ~/backup-demo/source/example.txt
tar -czf ~/backup-demo/archives/files.tar.gz -C ~/backup-demo/source .
tar -tzf ~/backup-demo/archives/files.tar.gz
گزینهٔ c ساخت، z فشردهسازی gzip، f نام فایل و t فهرستکردن محتواست. با -C مسیر پایه را تعیین کردهایم تا نامهای داخل آرشیو نسبی باشند. آرشیو مقصد را داخل پوشهای که از آن بکاپ میگیرید نسازید.
۳. بازیابی را در پوشهٔ جدا امتحان کنید
tar -xzf ~/backup-demo/archives/files.tar.gz -C ~/backup-demo/restore
cat ~/backup-demo/restore/example.txt
sha256sum ~/backup-demo/archives/files.tar.gz
x برای استخراج است. پیش از استخراج آرشیو ناشناس، فهرست محتوا و مسیرها را بررسی کنید و آن را با root روی ریشهٔ سیستم استخراج نکنید. هش برای تشخیص تغییر فایل مفید است، اما صحت منطقی بکاپ یا امکان اجرای برنامه را ثابت نمیکند. فایل بازیابیشده و در نهایت عملکرد برنامه را هم آزمایش کنید.
۴. انتقال با rsync؛ ابتدا dry-run
روی دستگاهی که rsync و دسترسی SSH به مقصد دارد، مقصد متعلق به خودتان را وارد کنید. پوشهٔ مقصد باید از قبل وجود داشته و برای کاربر مقصد قابل نوشتن باشد؛ rsync معمولاً در هر دو طرف لازم است:
rsync -avhn -e "ssh -p 22" ~/backup-demo/archives/ BACKUP_USER@BACKUP_HOST:/backup/my-vps/
n یعنی فقط پیشنمایش. پس از بررسی مسیر و فایلها، همان دستور را بدون n اجرا کنید:
rsync -avh -e "ssh -p 22" ~/backup-demo/archives/ BACKUP_USER@BACKUP_HOST:/backup/my-vps/
اسلش انتهای مسیر مبدأ مهم است: اینجا محتوای archives منتقل میشود. انتقال روی SSH رمزگذاری میشود، ولی فایل ذخیرهشده در مقصد لزوماً رمزگذاریشده نیست. حفظ مالکیت و مجوزها به دسترسی مقصد بستگی دارد؛ برای بکاپ سیستمی باید ACL، xattr و نیاز برنامه جدا بررسی شوند.
۵. چرا –delete را در مثال نگذاشتیم؟
این گزینه میتواند فایلهای مقصد را که در مبدأ نیستند حذف کند. در اشتباه مسیر یا حذف ناخواستهٔ مبدأ، خطر از دستدادن نسخهٔ پشتیبان وجود دارد. برای شروع، مقصدهای تاریخدار و نگهداری چند نسخه انتخاب کنید. همگامسازی یک پوشه بهتنهایی از حذف اتفاقی یا خرابشدن محتوا محافظت کامل نمیکند.
۶. زمانبندی را پس از آزمون دستی اضافه کنید
ابتدا اسکریپت بکاپ را دستی اجرا و کد خروج و لاگ را بررسی کنید. سپس با cron یا systemd timer، با مسیرهای مطلق و کاربر دارای حداقل مجوز زمانبندی کنید. برای انتقال خودکار، کلید اختصاصی و محدودشده به مقصد لازم است؛ رمز را داخل اسکریپت ننویسید. اجرای همزمان دو نوبت، پرشدن دیسک و شکست شبکه باید کنترل و گزارش شوند.
زمانبندی بدون پایش خطا، اطمینان کاذب میدهد. دورهای یک فایل و سپس یک مجموعهٔ کامل را در محیط جدا بازیابی کنید. سیاست نگهداری را با حجم و اهمیت داده تنظیم کنید؛ پاکسازی نسخههای قدیمی باید فقط پس از تأیید نسخهٔ سالم جدید انجام شود.
۷. بازیابی واقعی چه ترتیبی دارد؟
نسخهٔ مناسب را انتخاب، محتوا و سلامت آرشیو را بررسی، در مسیر جدا استخراج و مالکیت و مجوزها را تطبیق دهید. برنامه و دیتابیس باید در وضعیت سازگار بازیابی شوند. تنها پس از آزمون، در بازهٔ نگهداری جایگزینی را انجام دهید. اگر دیسک پر است، ابتدا راهنمای بررسی مصرف منابع را بخوانید.
منابع و ادامهٔ یادگیری
مبنای مثالهای سرور، اوبونتو ۲۴٫۰۴ LTS است؛ نام سرویسها و روش نصب در توزیعهای دیگر ممکن است متفاوت باشد. تصویر مقاله مفهومی است. این دستورها هنگام تهیهٔ مقاله روی سرویس واقعی مشتری اجرا نشدهاند.
منابع رسمی: مرجع rsync، راهنمای GNU tar
برای انتخاب زیرساخت، سرورهای لینوکس و چکلیست خرید VPS را ببینید. آموزشهای مکمل در مرکز آموزش پرشین کلود در دسترساند.


