در این پست با استفاده از کانتینر میکروتیک فایل بکاپ رو از طریق ربات تلگرام برای خودمون ارسال میکنیم ، تو این آموزش فقط ابزار گفته نمیشه و کل کار رو با bash script جلو میبریم
تغییرات کانتینر
قبل از هر کاری اول از همه شما باید قابلیت کانتینر رو در میکروتیک فعال و کانتینر pihole رو نصب کرده باشید برای انجام این مراحل به پست ( نصب x-ui در میکروتیک ) مراجعه کنید و تا مرحله فعال سازی pihole رو انجام بدی
بعد از اتمام مراحل حالا باید یکسری تغییرات بدیم ، وارد بخش container و تب mounts بشید و مسیرهای قبلی با نام x-ui رو پاک کنید ( البته اگر از کانتینر برای x-ui نمیخواید استفاده کنید و فقط برای بکاپ هستش )
یک مسیر جدید به شکلی که داخل عکس نمایش داده شده درست کنید
تو این قسمت گفتیم که دایکتوری ریشه یا اصلی میکروتیک رو به یک فولدر به اسم mikrotik در کانتینر مونت کن
یعنی وقتی شما داخل کانتینر فولدر mikrotik رو باز میکنید همون فایل هایی رو میبینید که در ابزار Files مشاهده میکنید ، قسمت بعدی باید این مسیر رو به کانتینر بدیم ، وارد تب container بشید و روی کانتینری که ساختیم کلیک کنید و به صورتی که داخل عکس نمایش داده شده تغییر بدین
در مرحله بعدی وارد ترمینال میکروتیک بشید و این دستور رو وارد کنید تا وارد کانتینر بشیم
( درصورتی که کانتینر دیگه ای هم دارید باید جای 0 ای دی کانتینر که تازه ساختیم رو پیدا و وارد کنید ، برای این کار هم داخل ترمینال دستور container/print رو وارد کنید )
container/shell 0
حالا وقتی دستور
ls -l /mikrotik/
تمام فایل های خود میکروتیک رو میتونید داخل کانتینر مشاهده کنید
نصب پیش نیاز ها
حالا که تغییرات کامل شد باید خود کانتینر رو برای ارسال فایل آماده کنیم ، اولین کار آپدیت هستش که با دستور زیر انجام میشه
apt update && apt upgrade -y
بعد از آپدیت باید باید ایدتور vim رو نصب کنیم ، شاید شما با nano راحت تر باشید ولی تو تست هایی که بنده انجام دادم برای این کار ما nano درست کار نمیکنه
برای نصب vim این دستور رو وارد کنید
apt install nano -y
اتوماتیک کردن گرفتن بکاپ
برای اینکه بک آپ همیشه به روز باشه باید در زمان های مشخصی بکاپ گیری انجام بشه برای این کار باید در میکروتیک یک scheduler درست کنیم برای گفتن بکاپ
برای اینکار یک ترمینال دیگه باز کنید و دستور زیر رو وارد کنید ، این دستور هر 1 ساعت از میکروتیک شما بکاپ میگیره ، اگر خواستید میتونید بازه زمانی و کم یا زیاد کنید
/system scheduler add interval=1h name=backup on-event="system/backup/save name=\"backup\"" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon
bash script
از این مرحله به بعد دیگه باید winboxرو ببندیم و باز ssh به میکروتیک وصل بشیم ، دلیلش یکسری محدودیت هایی هست که ترمینال وینباکس داره که برخی مواقع مشکلاتی پیش میاد مثل کار نکردن برخی کلید ها یا بهم ریختن متن ، پس اگر روی میکروتیک سرویس SSH رو بستید ، فعالش کنید
برای SSH زدن هم میتونید از ابزار مختلفی استفاده کنید ولی راحت ترینش cmd خود ویندوزه یا اگر از لینوکس استفاده میکنید میتونید از ترمینال خود لینوکس استفاده کنید
در هر دو سیستم عامل میتونید از این دستور برای ssh زدن استفاده کنید
( جای 1.1.1.1 باید ip میکروتیک رو قرار بدین )
ssh admin@1.1.1.1
بعد از اینکه متصل شدین دستور container/shell 0 رو وارد کنید تا وارد کانتینر بشید سپس دستور زیر رو وارد کنید ( چک کنید که در دایرکتوری root باشید )
nano backup.sh
بعد از اینکه ویرایشگر nano باز شد کد زیر و کپی کنید و داخل ویرایشگر قرار بدین
BOT_TOKEN="76050:AAE8b_aYGF7"
CHAT_ID="4573839497"
FILE_PATH="/mikrotik/backup.backup"
if [[ ! -f "$FILE_PATH" ]]; then
echo "Error: File not found at $FILE_PATH"
exit 1
fi
curl -F "chat_id=$CHAT_ID" \
-F "document=@$FILE_PATH" \
"https://api.telegram.org/bot$BOT_TOKEN/sendDocument"
echo "File sent successfully!"
در کد بالا باید دو تا چیز رو تغییر بدین ،جلوی BOT_TOKEN باید توکن ربات تلگرام خودتونو قرار بدین ( به این نکته هم توجه داشته باشید که ربات باید از سمت شما استارت شده باشه ، یعنی یه پیام داخل ربات ارسال کرده باشید )
در CHAT_ID هم ایدی عددی اکانت تلگرام خودتو که از این ربات میتونید دریافت کنید https://t.me/ChatIdShowBot
بعد از انجام تغییرات کلید های ctrl + x و بعدش کلید y رو بزیند تا فایل ذخیره بشه
حالا اگر دستور زیر رو وارد کنید باید یک فایل براتون داخل تلگرام ارسال بشه
( البته قبل از وارد کردن دستور چک کنید که میکروتیک یک بکاپ گرفته باشه چون بکاپ گیری اتوماتیک ما هر 1 ساعت بود ، اگر درست نشده یک بار دستور system/backup/save name=backup در ترمینال میکروتیک وارد کنید )
bash backup.sh
cron job
اگر تا اینجا تمام مراحل رو درست انجام دادین حالا نوبت اینکه ارسال بکاپ رو اتوماتیک و زمان بندی کنیم ، برای اینکار از cron job استفاده میکنیم که کار سختی هم نیست
فقط کافیه این دستور رو در کانتینر وارد کنید و تمام
(crontab -l; echo "0 */12 * * * /root/bash backup.sh") | crontab -
اولین نفر باشید که نظر ارسال میکنید