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

بیاید اینطور در نظر بگیریم که من روی یک سرور وب سی‌پنلی یک فایل متنی دارم که تو هر خطش اسم یکی از یوزرای اون سرور درج شده، من می‌خوام از این اکانت‌ها بکاپ بگیرم. خب یه راهش اینه که بشینم برای تک تک یوزرها اسکریپت بکاپ سی‌پنل رو اجرا کنم. مثلا برای بکاپ گرفتن از یوزر admin دستور زیر رو اجرا کنم.

/scripts/pkgacct admin

انجام این کار شاید برای یک، دو، پنج یا ده تا یوزر زیاد سخت نباشه، اما اگر ۲۰۰ تا یوزر داشته باشیم چطور؟ آیا باید بشینیم از تک تک اکانت‌ها بکاپ بگیریم؟ طبعا نه! نه عمر ما انقدر طولانیه که برای این چیزهای پیش پا افتاده وقت این چنینی بذاریم و نه دنیای لینوکس اونقدر محدوده که نتونه راهی جلوی ما بذاره که این کار رو توسط اتوماسیون انجام بدیم.

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

ایجاد کامند اختصاصی در لینوکس

گاها ممکنه به هر دلیلی بخواید روی سیستم عامل لینوکس‌تون کامندهای اختصاصی داشته باشید. خب ما می‌دونیم یک سری دستورات توی کرنل لینوکس هستند، مثل دستور ls که لیست فایل‌ها و دایرکتوری‌های موجود در یک دایرکتوری رو به شما نشون می‌ده. یا یک سری دستورات بعد از نصب یک سری از برنامه‌ها برای شما اضافه می‌شن، مثل دستور ls که بعد از نصب برنامه‌ای تحت همین عنوان (sudo apt install ls) به سیستم عامل شما اضافه می‌شه و در صورتی که اجرا بشه، قطار در حال حرکتی صفحه ترمینال شما رو مزین می‌کنه.

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

خب، چطور این کار رو انجام بدم؟

ادامه خواندن ایجاد کامند اختصاصی در لینوکس

شل اسکریپت بکاپ از دیتابیس‌های MySQL

لکن اگر نیاز به اسکریپتی دارید که بتواند از همه دیتابیس‌هاس MySQL یک سرور بکاپ بگیرد می‌توانید از اسکریپت زیر استفاده نُمایید.

 #! /bin/bash
 
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/backup/dbs"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

mkdir -p "$BACKUP_DIR/$TIMESTAMP"
 
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
 
for db in $databases; do
  $MYSQLDUMP --force --opt -u root --databases $db | gzip > "$BACKUP_DIR/$TIMESTAMP/$db.gz"
done

find $BACKUP_DIR/* -type d -ctime +29 -exec rm -rf {} \;

echo Databases Backup Task Completed On $HOSTNAME

کار این اسکریپت این هست که از همه دیتابیس‌های MySQL بکاپ گرفته، با فرمت gz فشرده‌سازی کرده و در مسیر زیر نگهداری می‌کند.

/backup/dbs

هربار اسکریپت اجرا می‌شه دیتابیس‌های دامپ شده در یک دایرکتوری که نام اون تاریخ روز اجرای اسکریپت هست ذخیره می‌شن.

همچنین لاین زیر هم بدین منظور بکار رفته که بکاپ‌هایی که 30 روز یا بیشتر از زمان ایجادشون گذشته حذف بشن تا خدای‌ناکرده مشکل کمبود فضای دیسک هم ایجاد نشه.

find $BACKUP_DIR/* -type d -ctime +29 -exec rm -rf {} \;

اسکریپت تهیه بکاپ از اکانت‌های ساسپند شده در cPanel

یکی از چالش‌ها و مشکلاتی که اخیرا در هاست اشتراکی با کنترل‌پنل cPanel باهاش مواجه شدم حذف اکانت کاربرهایی بود که سرویسشون به علت عدم تمدید هاست ساسپند شده بود. کاربر به هر علتی (فراموشی، مشغله، قتل، آلودگی هوا و …) هاستش رو تمدید نمی‌کرد و بعد از مدتی که برای تمدید هاستش مراجعه می‌کرد و خبر موجود نبودن اطلاعات و بکاپ رو از ما می‌شنید، کانه تیری که از چله کمان در رفته باشه آتش خشمش رو بر ما فرو می‌پاشید. حالا ما هرچقدرم سعی بر این داشتیم که کاربر رو قانع کنیم مشکل از ما نیست و کوتاهی از خودش بوده، جمیع تلاش‌هامون آبی بود که در هاون می‌کوبیدیم. از همین رو و به درخواست شما عزیزان، تصمیم گرفتم بکاپ‌ اکانت‌هایی که در کنترل‌پنل cPanel به علت عدم تمدید ساسپند شدند رو در جای دیگری نگهداری کنم تا مدت زمان بیشتری بتونیم از اون‌ها مراقبت و نگهداری کنیم.

ادامه خواندن اسکریپت تهیه بکاپ از اکانت‌های ساسپند شده در cPanel