امیر توحیدی
امیر توحیدی
خواندن ۳ دقیقه·۳ سال پیش

آموزش sync کردن دو فولدر در Centos

بک آپ گیری با rsync
بک آپ گیری با rsync


برای بک اپ گیری چند سناریو قابل انجام هست

اما من موردی که خودم انجام دادم به نظرم کاربردی بوده اینجا براتون توضیح میدم

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

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

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

خوبی این دستور این هست که لازم نیست همه ی اطلاعات دوباره دریافت شود و Rsync فولدر بررسی می کند و فایل های تغییر کرده و یا جدید دوباره دریافت می کند .


rsync -avz -e 'ssh -p PORTSSH' root@IPSERVER:/var/www /home/backup

اول مقادیر بالارو توضیح بدم

PORTSSH = به صورت دیفالت مقدار 22 هست و شما می توانید در صورتی که از پورت دیفالت استفاده نمی کنید این مقدار را مشخص نمایید
IPSERVER = ای پی سروری است که شما قصد دریافت اطلاعات از آن را دارید
/var/www = محل فولدری که قصد کپی آن را دارید
/home/backup= محلی که فولدر کپی شده را قرار میدهید.

خوب تا اینجا مورد خاصی نبوده

حالا شما می خواید این موارد به صورت خودکار در بازه های زمانی مشخص انجام شود .

برای این کار باز راه های مختلفی وجود دارد کاری که بنده تست کردم به این صورت بود.

یک فایل bash ساختم و به این صورت نوشتم

#!/usr/bin/expect
rsync -avz -e 'ssh -p PORTSSH' root@IPSERVER:/var/www /home/backup
exit 1

خوب این دستور وقتی اجرا کنید برای ارتباط با سرور promptبرای دریافت پسورد باز می شود و شما مجبور هستید پسورد دستی وارد کنید و به صورت خودکار اجرا نخواهد شد .

برای راه حل این مشکل میتنید sshpass استفاده کنید

برای نصب این پکیج از yum به این صورت عمل می کنید.

yum install sshpass

برای استفاده از این دستور فایل bash ساخته شده به صورت زیر اصلاح می کنیم.

#!/usr/bin/expect
sshpass -p &quotPASSWORD&quot rsync -avz -e 'ssh -p PORTSSH' root@IPSERVER:/var/www /home/backup
exit 1

خوب حالا میتونید این طریق این دستور فایل بدون نیاز به پسورد اجرا کنید .

به صورت مثال فایل ما اگر backup-script.sh باشد با دستور

bash backup-script.sh

فایل اجرا کنید

تا اینجا ما تونستیم اسکریپت برای دریافت اطلاعات به درستی انجام بدیم و بسازیم

خوب برای خودکار اجرا شدنش میتونیم از ساختار crontab بر روی سرور Centos استفاده کنیم

با دستور

crontab -e

برای نوشتن دستور مورد نظر باز میشه

در صورتی که فایل مورد نظر شما در فولدر home باشد و اسم فایل bacup-script.sh

دستور به این صورت می شود برای اجرا روزانه ساعت 1 صبح

0 1 * * * /home/backup-script.sh >> backup.logs

با دستور بالا هر روز ساعت 1 صبح این دستور اجرا می شود و خروجی در فولدر backup.logs ذخیره یم کند.

و بعد از وارد کردن این دستور با زدن esc و :wq می تونید از صفحه خارج بشید


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


امیدوارم به کارتون بیاد :)

centosautomate backuprsynccrontab
امیر توحیدی هستم. برنامه نویس و توسعه دهنده یا هر چیزی که شما بگید. :)
شاید از این پست‌ها خوشتان بیاید