کران ساعتی در دایرکت ادمین

سلام.

امروز جمعه ۲۴ ام آذرماه هستش و من دارم اولین مطلب رو در این بلاگ براتون می نویسم.

چند روز پیش قصد داشتم در سرور یکی از مشتریام CronJob ای رو ادد کنم تا به صورت ساعتی از دیتابیس برام روی یه هاست دیگه بک آپ بگیره.

دوستانی که با دایرکت ادمین کار کردن میدونن که در قسمت CMD_ADMIN_BACKUP امکانات خوبی برای این قضیه وجود داره. خب منم طبق روال همیشه کران مورد نظرمو ساختم و موقع ذخیره با این دو خطای زیر مواجه شدم.

You must use a number for the hour (0-23). You can only have a cron run once per day. (You can make more than one cron)
You must use a number for the minute (0-59). You can only have a cron run once per day. (You can make more than one cron)

برای همین یه ایمیل به پشتیبانی دایرکت ادمین ارسال کردم و موضوع رو بهشون اطلاع دادم.اونا هم خیلی شیک جواب دادن نمیشه و باید برای هر ساعتی یه کران ادد کنی و خب یعنی ۱۲ تا کران نیاز بود.

برای همین دست به کار شدم و شروع کردم به بررسی نحوه ساختار کران ها در دایرکت ادمین. زمانی که شما در CMD_ADMIN_BACKUP یک کران رو می سازید در مسیر /usr/local/directadmin/data/admin/ فایلی تحت عنوان backup_crons.list وجود داره. در این فایل کران های شما به صورت ID=action=backup&append

ذخیره میشن. فقط لازمه که شما کران مورد نظرتون رو داخل سرور ایجاد کنید با هر ساعتی ، بعدش از داخل این فایل کد مربوط به کران رو استخراج کنید.

یه فایل اجرایی به شکل زیر ایجاد کنید. ( من یه کران تستی ایجاد میکنم و فایل مورد نظر رو براتون میسازم تا دقیق تر با نحوه کارش آشنا بشید).

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

 

#!/bin/bash

echo "action=backup&append%5Fto%5Fpath=nothing&database%5Fdata%5Faware=yes&email%5Fdata%5Faware=yes&local%5Fpath=%2Fbackup%2Ftest&option%30=database&option%31=database%5Fdata&owner=admin&select%30=bhowcoir&type=admin&value=multiple&what=select&when=now&where=local" >> /usr/local/directadmin/data/task.queue 

خب کران شما آمادست و حالا میتونید اون رو داخل یک فایل ذخیره کنید و بهش پرمیشن اجرایی بدید و داخل فایل crontab با زمان دلخواه خودتون اضافش کنید.

امیدوارم این ترفند براتون مفید واقع شده باشه.

روز بخیر.