Hướng Dẫn Chuyển Dữ Liệu Từ cPanel Sang DirectAdmin Chi Tiết Nhất (cPanel to DirectAdmin Migration)

Hướng Dẫn Chuyển Dữ Liệu Từ cPanel Sang DirectAdmin Chi Tiết Nhất (cPanel to DirectAdmin Migration)

Các vấn đề đã biết

  • Mailing list Mailman sẽ không được chuyển sang mailing list majordomo.

  • Lưu ý bảo mật: Hãy chắc chắn rằng chính bạn là người tạo ra file backup cpmove-user.tar.gz, bởi vì hiện tại hệ thống hoàn toàn tin tưởng vào nội dung bên trong file này. Do đó, chỉ có thể truy cập ở cấp độ admin (điều này có thể thay đổi sau).

  • Định dạng tên cơ sở dữ liệu và người dùng MySQL trong DirectAdmin luôn là username_databaseusername_user. cPanel cũng theo định dạng này, tuy nhiên do giới hạn độ dài tên người dùng/DB, phần username_ trong cPanel có thể bị rút ngắn. Trong khi đó, DirectAdmin luôn giữ nguyên myusername_, và nếu không nhất quán sẽ gây ra xung đột như việc:

    • Người dùng myuserna sở hữu myuserna_db1
    • Người dùng myusername lại sở hữu myserna_db2

    Để tránh điều này, script sẽ chuyển đổi tên người dùng về username đầy đủ. Một số trường hợp hiếm, bạn cần sửa lại tên DB/username trong file wp-config.php hoặc các file cấu hình CMS khác. Ví dụ output:

    WARNING! us_wordpress cannot be owned by user, renaming database user to user_wordpress

Các lưu ý quan trọng khác

  • Nên giữ lại tất cả các file cpmove-user.tar.gz sau khi restore, đề phòng sự cố xảy ra, bạn vẫn có thể khôi phục dữ liệu.

  • Như bất kỳ phần mềm nào khác, sẽ có thể tồn tại lỗi. Hãy báo cáo ngay nếu bạn phát hiện vấn đề.

  • DirectAdmin có bộ tính năng khác với cPanel:

    • DirectAdmin hỗ trợ nginx/openlitespeed, MySQL 8, rspamd

    • KHÔNG hỗ trợ PostgreSQL hoặc Ruby – cần chuyển thủ công nếu đang dùng các công nghệ này.

  • Giới hạn độ dài username:

    • Mặc định là 16 ký tự cho MySQL user và 10 ký tự cho system user.

    • Có thể tăng giới hạn trong file cấu hình:

      ls /var/cpanel/users | awk '{print length, $0}' | sort -nr | head -n1
    • Kiểm tra độ dài username trong cPanel:

      /usr/local/DirectAdmin/DirectAdmin set max_username_length 16
      service DirectAdmin restart
  • Khuyến nghị nâng cấp MySQL/MariaDB lên 5.7+ hoặc MariaDB 10.x để đảm bảo tương thích tối đa.

  • Test trước với 1 account, ưu tiên account có tên dài nhất để đảm bảo không gặp lỗi DNS, giới hạn độ dài tên,…

  • Nếu bạn có file user.tar.gz thay vì cpmove-user.tar.gz, bạn cần đổi tên:

    for i in `ls *.tar.gz | grep '^[A-Za-z0-9]*.tar.gz'`; do { mv -vf ${i} cpmove-${i}; }; done
  • Tương tự nếu có file dạng backup-...._user.tar.gz, đổi tên như sau:

    for i in `ls backup-[0-9]*.*.tar.gz`; do { USERNAME=`echo $i | cut -d_ -f3 | cut -d'.' -f1`; mv -v $i cpmove-${USERNAME}.tar.gz; }; done
  • Không thấy user trong danh sách “Move users between resellers”? → cần rebuild lại tất cả các file users.list của reseller:

    cd /home/admin/all_backups
    for i in `ls user*.tar.gz`; do { RESELLER=`echo $i | cut -d. -f2`; USER=`echo $i | cut -d'.' -f3`; /usr/local/DirectAdmin/scripts/move_user_to_reseller.sh $USER admin $RESELLER; }; done
    echo "action=cache&value=showallusers" >> /usr/local/DirectAdmin/data/task.queue
    /usr/local/DirectAdmin/dataskq d

Chuyển toàn bộ tài khoản từ cPanel sang DirectAdmin

Trên máy chủ cPanel:

  1. Tạo backup toàn bộ tài khoản cPanel và lưu vào /home/all_backups:

    mkdir -p /home/all_backups
    for user in `ls /var/cpanel/users/`; do { /scripts/pkgacct ${user} /home/all_backups; }; done
  2. Chuyển toàn bộ file từ cPanel sang DirectAdmin:

    rsync -avt --delete /home/all_backups/ root@[B]your_DirectAdmin_server.com[/B]:/home/admin/all_backups/

Hoàn tất phần cPanel – giờ chuyển sang DirectAdmin.

Trên máy chủ DirectAdmin:

  1. Đảm bảo file backup trong /home/admin/all_backups thuộc sở hữu của admin:

    chown -R admin. /home/admin/all_backups
  2. Cuối cùng thì chúng ta đã có đầy đủ các bản sao lưu từ cPanel dưới định dạng phù hợp với DirectAdmin tại thư mục /home/admin/all_backups 😃. Bây giờ, bạn chỉ cần truy cập vào DirectAdmin, mở mục “Admin Backup/Transfer”, sau đó kiểm tra phần “Backup/Restore Settings” (các thiết lập mặc định thường đã ổn), và tiến hành khôi phục toàn bộ bản sao lưu từ thư mục /home/admin/all_backups.

    Thế là xong!

    Nếu bạn có đủ dung lượng lưu trữ, nên giữ nguyên thư mục /home/admin/all_backups trên máy chủ DirectAdmin trong vài tuần hoặc vài tháng. Phòng khi có dữ liệu nào đó bị thiếu sót trong quá trình chuyển đổi – bạn vẫn luôn có thể khôi phục lại từ bản backup này.

    Trường hợp máy chủ cPanel không đủ dung lượng để chứa toàn bộ bản sao lưu?

    Không sao cả! Bạn có thể chuyển từng tài khoản riêng lẻ trực tiếp sang thư mục home của máy chủ mới (DirectAdmin). Phương pháp nhanh chóng và tiện lợi nhất là sử dụng kết nối SSH không cần mật khẩu, bằng cách:

    ssh-keygen

    Sau khi chạy lệnh trên, bạn sẽ có file Public Key nằm tại /root/.ssh/id_rsa.pub.
     Hãy sao chép toàn bộ nội dung của file này sang máy chủ DirectAdmin, cụ thể là vào file /root/.ssh/authorized_keys. Nếu thư mục /root/.ssh chưa tồn tại trên DA, hãy tạo mới.

    Việc này sẽ giúp máy chủ cPanel kết nối được với máy chủ DirectAdmin mà không cần nhập mật khẩu, từ đó tự động hóa quá trình chuyển dữ liệu dễ dàng hơn.

    Thay vì thực hiện thủ công các bước 1) và 2) trên máy chủ cPanel, bạn có thể dùng đoạn script sau để tự động backup và chuyển từng tài khoản:

    for user in `ls /var/cpanel/users/`; do { /scripts/pkgacct ${user} /home/all_backups; rsync -avt /home/all_backups/cpmove-${user}.tar.gz root@your_directadmin_server.com:/home/admin/all_backups/cpmove-${user}.tar.gz; rm -f /home/all_backups/cpmove-${user}.tar.gz ; }; done

Chuyển tài khoản riêng lẻ từ cPanel sang DirectAdmin

Trên máy chủ cPanel:

  1. Backup tài khoản riêng /home/user_backups thay “username” bằng tên thật:

    /scripts/pkgacct username /home/user_backups;
  2. Chuyển toàn bộ /home/user_backups/ sang DirectAdmin:

    rsync -avt /home/user_backups/ root@your_DirectAdmin_server.com:/home/admin/converted_user_backup/

Trên máy chủ DirectAdmin:

  1. Đảm bảo quyền sở hữu:

    chown -R admin. /home/admin/converted_user_backup
  2. Truy cập mục Admin Backup/Transfer, chọn đường dẫn /home/admin/converted_user_backup để restore.

Vậy là xong!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *