-
September 11th, 2019, 13:59
#1
بش اسکریپت انتقال اکانتهای سیپنل به دایرکتادمین
سلام به همه دوستان و همکاران
همونطور که اطلاع دارید با افزایش نجومی هزینههای لایسنس سیپنل خیلی از سرویسدهندهها تصمیم دارن سیپنل رو از سرورهاشون حذف کنن و دایرکتادمین رو جایگزین اون کنن.طبیعتا تنها راه انجام این انتقال اینه که سرور جدیدی با کنترلپنل دایرکتادمین ستاپ بشه و اکانتها از سیپنل به دایرکت ادمین منتقل و ریستور بشن.خبر خوب این که دایرکتادمین اخیرا اسکریپت تبدیل بکاپ سیپنل به دایرکتادمین رو تو نسخه جدیدش اضافه کرده و اگر شما فول بکاپ سیپنل رو با فرمت اسم cpmove-user.tar.gz روی دایرکتادمین ریستور کنید، بصورت خودکار به فول بکاپ دایرکتادمین تبدیل و ریستور میشه.یک راه انتقال اینه که از همه اکانتهای سیپنل فول بکاپ بگیرید، به یکباره همه رو به سرور دایرکتادمین انتقال بدید و در نهایت همه اکانتها رو یک جا ریستور بزنید.این کار اشکالاتی داره…
- اول این که تهیه فول بکاپ از همه اکانتها دیسک رو تا حد زیادی اشغال میکنه. شما یک فول بکاپ از همه اکانتها رو سرور سیپنل دارید، و دو فول بکاپ هم روی سرور دایرکتادمین خواهید داشت. (یکی بکاپهای سیپنل و دیگری بکاپهای تبدیل شده به دایرکت ادمین)
- پروسه تهیه فول بکاپ از همه اکانتها زمانبره، چه برسه به این که این بکاپها بخوان به دایرکتادمین هم منتقل بشن و تازه اونجا شروع به ریستور کنن. با این حساب اطلاعات وارد شده توسط کاربرها تو مدت نقل و انتقال از بین میره.
- وقتی ریستور همه اکانت ها همزمان انجام بشه، عیب یابی سخت میشه، تا زمانی که ریستور بکاپ ها به اتمام نرسه، دایرکت ادمین لاگی از وضعیت ریستور و خطاهای احتمالی اعلام نمیکنه.
- احتمالا سایتها داون تایم زیادی خواهند داشت و این موضوع کاربرها رو ناراضی میکنه!
خب چه باید کرد؟ هرکس به طریقی به هر حال این انتقال رو مدیریت میکنه، من برای انجام این کار اسکریپتی نوشتم که انتقال بکاپها رو تک تک انجام میده. به این صورت که:
- از هر اکانت روی سیپنل فول بکاپ میگیره. (فول بکاپ شامل همه اطلاعات اکانت روی سیپنل به جز دایرکتوری public_html هست)
- فول بکاپ رو به دایرکتادمین انتقال میده و ریستور میکنه.
- محتوای دایرکتوری public_html یوزر سیپنل رو به public_html یوزر دایرکت ادمین انتقال میده.
- IP اکانت رو روی سرور سیپنلی به IP سرور دایرکتادمین تغییر میده تا داون تایم به کمترین حد ممکن برسه.
- بعد از انتقال، اکانت رو روی سیپنل ساسپند میکنه تا کاربر بعد انتقال دیگه تغییراتی روی اکانت سیپنلی نده.
- فول بکاپ سیپنل هر اکانت رو بعد از انتقال از هر دو سرور سیپنل و دایرکتادمین حذف میکنه تا فضا کمتر اشغال بشه.
- با توجه به این که ریستور تک تک انجام میشه، بعد ریستور هر اکانت لاگش تو دایرکتادمین درج میشه تا اگر اشکالی هست بشه سریعا رفع کرد.
- و هزاران هزار جایزه نقدی و غیرنقدی دیگر…
خب، اسکریپت رو این پایین میتونید ببینید:
کد:
#!/bin/sh
#You can get the script updates from https://bit.ly/2ktJVHn
DEST="192.168.1.1" #Your DirectAdmin Server IP
PORT="22" #Your Directadmin Server ssh Port
cd /var/cpanel/users
for USER in *; do
if [ "$USER" != "system" ]
then
echo "starting transfer process for $USER"
sleep 2
#backup cpanel account (public_html excludes) and transfer to directadmin server.
/scripts/pkgacct $USER --skippublichtml
rsync -av -e "ssh -p $PORT" /home/cpmove-$USER.tar.gz root@$DEST:/backup/
#Restore backup in directadmin server.
ssh -p $PORT root@$DEST "
chown admin.admin /backup/
chown admin.admin /backup/cpmove-$USER.tar.gz
echo 'action=restore&ip%5Fchoice=select&ip=$DEST&local%5Fpath=%2Fbackup&owner=admin&select%30=cpmove-$USER.tar.gz&type=admin&value=multiple&when=now&where=local' >> /usr/local/directadmin/data/task.queue
echo "backup is restoring in DirectAdmin!"
sleep 2
while \$(grep -Fq "action=restore" /usr/local/directadmin/data/task.queue 2>/dev/null); do printf "%s""$i" .; sleep 2; done;
while \$(test ! -d /home/$USER/public_html); do printf "%s""$i" .; sleep 2; done;
printf '\n'
echo "backup restoration completed in DirectAdmin!"
sleep 2
"
#transfer public_html files and dirs to destinaton server
rsync -av -e "ssh -p $PORT" /home/$USER/public_html/ root@$DEST:/home/$USER/public_html/
ssh -p $PORT root@$DEST "
chown -R $USER.$USER /home/$USER/public_html/
find /home/$USER/public_html/ -type d -exec chmod 755 {} \;
"
#remove backup files in order to free space
ssh -p $PORT root@$DEST "rm /backup/cpmove-$USER.tar.gz"
rm /home/cpmove-$USER.tar.gz
#change user ip in order to transfer site loding to destination server.
/usr/local/cpanel/bin/setsiteip -u $USER $DEST
/scripts/suspendacct $USER "User transferred to Direct Admin."
echo "transfer process for $USER has been completed!"
sleep 2
printf '\n'
fi
done
چند نکته که برای استفاده از اسکریپت حتما باید بهش توجه داشته باشید:
- به جای مقدار 192.168.1.1 روی اسکریپت باید IP سرور دایرکتادمین رو واردکنید.
- اگر سرور شما از پورتی به جز 22 برای اتصال ssh استفاده میکنه، به جای مقدار 22 روی اسکریپت باید این پورت رو قرار بدید.
- حتما و حتما قبل از شروع انتقال، IP سرور دایرکت ادمین رو از بخش Add a New IP Address روی پنل WHM به سیپنل اضافه کنید، در غیر اینصورت تغییر IP اکانتها بعد انتقال به IP دایرکتادمین انجام نمیشه. اگر کلا میخواید تغییر IP انجام نشه، لاین زیر رو از اسکریپت حذف کنید:
کد:
/usr/local/cpanel/bin/setsiteip -u $USER $DEST
-
اگر میخواید بعد از انتقال، اکانت روی سیپنل ساسپند نشه، لاین زیر رو از اسکریپت حذف کنید:
کد:
/scripts/suspendacct $USER "User transferred to Direct Admin."
- حتما و حتما قبل از انتقال چک کنید که همه، تکرار میکنم همه اکانتها آنساسپند باشن. اگر اکانتی ساسپند باشه، انتقال روی اون اکانت گیر میکنه و دیگه پیش نمیره.
در نظر داشته باشید برای برقراری ارتباط ssh بین دو سرور لازمه که اتصال توسط کلید ssh صورت بگیره و نه پسورد. برای این منظور کافیه که محتویات فایل زیر رو از سرور سیپنل،
کد:
cat /root/.ssh/id_rsa.pub
به انتهای فایل زیر رو سرور دایرکتادمین اضافه کنید.
کد:
nano /root/.ssh/authorized_keys
اگر فایل اول روی سرور سیپنل شما وجود نداشت، با دستور زیر میتونید اون رو ایجاد کنید:
برای استفاده از این اسکریپت نیازی نیست حرفهای باشید، حتی اگر اولین بارتون هست که میخواید یک بش اسکریپت رو روی سرورتون اجرا کنید میتونید به شکل زیر عمل کنید:اول با دستور زیر یک فایل بسازید، (مثلا به اسم xfer-cp-accts-to-da.sh)
کد:
nano xfer-cp-accts-to-da.sh
بعد از اجرای دستور بالا، محتویات اسکریپت رو بعد از اعمال تغییرات لازم توی ترمینال کپی کنید و با استفاده از ctrl+x تغییرات رو ذخیره کنید.سپس با دستور زیر به فایل پرمیشن لازم برای اجرا شدن رو بدید:
کد:
chmod 0755 transfer-cp-to-da.sh
و در نهایت با اجرای دستور زیر، اسکریپت رو اجرا کنید:
کد:
./transfer-cp-to-da.sh
بیصبرانه منتظر شنیدن اشکالات احتمالی گزارش شده توسط شما هستم!منبع: بش اسکریپت انتقال اکانتهای سیپنل به دایرکتادمین
ویرایش توسط FaЯshid : September 11th, 2019 در ساعت 18:19
-
-
September 11th, 2019 13:59
# ADS