В данной статье мы расскажем Вам о том, как перенести ( конвертировать ) аккаунт из Direct Admin в WHM/cPanel.
Итак начнём...
Скрипт для переноса учетных записей из DirectAdmin в cPanel, написаный SkyHorse.
На данный момент не существует готовых надежных решений по переносу сайтов из Directadmin в cPanel, скрипт служит только частичным решением.
Скрипт работает с файлами в каталогах backup и domains.
После обработки скриптом файл tar.gz необходимо развернуть, только на новом аккаунте в cPanel.
Скрипт позволяет перенести:
- квоты;
- почту IMAP;
- настройки squirrelmail;
- все каталоги сайтов из стиля DirecAdmin в стиль cPanel.
Скрипт не переносит:
- FTP;
- субдомены;
- DNS записи;
- все остальное.
Следует учитывать, что архивы не сохраняют разрешений на файлы, и их придется выставлять после распаковки. Почтовые ящики требуют разрешения на запись группе.
Сам скрипт:
# bash
# Copyleft (C) SkyHorse 2004
# for each account:
# put passwd as passwd + shadow
# quota (if != 0)
# into ~/etc/%domain%
GENDOMAIN=domain.com
GENUSERNAME=accuser
NEWACCPASS=accpass
MYFILESPATH=/home/skyhorse/temp_sites
mkdir result
mkdir result/mail
mkdir result/mail/$GENDOMAIN
mkdir result/etc
mkdir result/etc/$GENDOMAIN
cp $MYFILESPATH/$GENUSERNAME/backup/$GENDOMAIN/email/quota result/etc/quota
chmod 644 result/etc/quota
touch result/etc/shadow
chmod 640 result/etc/shadow
touch result/etc/passwd
chmod 644 result/etc/passwd
chmod 660 $MYFILESPATH/$GENUSERNAME/backup/email_data/imap/*
cp $MYFILESPATH/$GENUSERNAME/backup/email_data/imap/* result/mail
cp $MYFILESPATH/$GENUSERNAME/backup/email_data/pop/$GENUSERNAME result/mail/inbox
chmod 660 result/mail/inbox
mkdir result/.sqmaildata
cp $MYFILESPATH/$GENUSERNAME/backup/email_data/squirrelmail/* result/.sqmaildata
ENTRY=`cat $MYFILESPATH/$GENUSERNAME/backup/$GENDOMAIN/email/passwd`
for line in $ENTRY
do
login=`echo $line | sed s/[:].*//`
pass=`echo $line | sed s/.*[:]//`
mkdir result/mail/$GENDOMAIN/$login
mkdir result/mail/$login
echo $login:x:32120:622::/home/$GENUSERNAME/mail/$GENDOMAIN/$login:/usr/local/cpanel/bin/noshell >> result/etc/passwd
echo $login:$pass::::::: >> result/etc/shadow
chmod 750 result/mail/$GENDOMAIN/$login
cp $MYFILESPATH/$GENUSERNAME/backup/$GENDOMAIN/email/data/pop/$login result/mail/$GENDOMAIN/$login/inbox
chmod 660 result/mail/$GENDOMAIN/$login/inbox
cp $MYFILESPATH/$GENUSERNAME/backup/$GENDOMAIN/email/data/imap/$login/.mailboxlist result/mail/$GENDOMAIN/$login/
cp $MYFILESPATH/$GENUSERNAME/backup/$GENDOMAIN/email/data/imap/$login/mail/* result/mail/$GENDOMAIN/$login/
touch result/mail/$login/inbox
chmod 660 result/mail/$login/inbox
done
cp result/etc/* result/etc/$GENDOMAIN/
#domain files
cd domains/$GENDOMAIN
#update file references - this one liner deletes domains/domain.net in every file of the tree.
# efectively changes:
#/home/username/domains/domain.net/public_html into
#/home/username/public_html
find ./ -type f -exec sed -i 's/domains\/$GENDOMAIN\///' {} \;
cp -R * ../../result
cd ../../result
tar --owner=$GENUSERNAME --group=$GENUSERNAME -czf ../$GENUSERNAME-$GENDOMAIN.tar.gz *
cd ..
#upload tar.gz
#I have ncftpput installed, but because most people don't, I've commented it out
#ncftpput -u $GENUSERNAME -p $NEWACCPASS localhost / $GENUSERNAME-$GENDOMAIN.tar.gz
#database:
#mysql
#subdomains
#ftp