Script thêm toàn bộ website backup sang Google drive trên CyberPanel

Sau nhiều năm phát triển nhưng CyberPanel vẫn không thêm tính năng 1 click để thêm toàn bộ website vào phần mà người dùng phải thêm thủ công từng website để backup trong bảng điều khiển CyberPanel, nếu bạn có vài website thì sẽ không bị trầm cảm bởi việc này nhưng nếu bạn có vài chục đến vài trăm thậm chí vài ngàn thì thêm vào backup thế nào được, tất nhiên còn nhiều giải pháp backup khác nhưng đang nói ở mục backup trong thì ối zồi ôi.

Script thêm toàn bộ website backup sang Google drive trên CyberPanel

Để giải quyết vấn đề này mình có viết 1 đoạn script để bạn có thể thêm toàn bộ website đang có vào phần backup CyberPanel, để thực hiện việc này bạn có thể làm theo các bước dưới đây.

Script áp dụng trên trình duyệt Firefox

Bước 1. Đăng nhập vào CyberPanel bằng trình duyệt Firefox , nếu bạn sử dụng Chrome thì sử dụng script ở cuối bài

Bước 2. Truy vập vào Backup -> Setup Google Drive (tại bước này bạn phải kết nối VPS với Google drive trước nhé)

Bước 3. Sau khi kết nối xong, bạn có thể chọn Select Drive Account
Bước 4. Nhấn F12 và chuyển sang tab Bảng điều khiển (Console)
Bước 5. Dán script mình để phía dưới vào và enter để thêm toàn bộ website vào phần backup sang Google drive
Bước 6. Ngồi rung đùi chờ script chạy tí là xong
Bước 7. nếu bài viết hữu ích 😀 hoặc yêu cầu các bài viết khác

// Function để đợi một khoảng thời gian
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

// Function chính để thêm tất cả website
async function addAllWebsites() {
    // Lấy danh sách tất cả các option trong select
    const select = document.querySelector('select[ng-model="selectedWebsite"]');
    const options = Array.from(select.options);
    
    // Lặp qua từng website
    for (let option of options) {
        const websiteName = option.value;
        
        // Chọn website trong dropdown
        select.value = websiteName;
        
        // Trigger change event để Angular cập nhật model
        select.dispatchEvent(new Event('change'));
        
        // Đợi một chút để Angular cập nhật
        await sleep(500);
        
        // Click nút Add Site
        const addButton = document.querySelector('button[ng-click="addSite()"]');
        addButton.click();
        
        // Đợi thêm thời gian để request hoàn thành
        await sleep(2000);
        
        console.log(`Đã thêm website: ${websiteName}`);
    }
    
    console.log('Hoàn thành thêm tất cả website!');
}

// Chạy script
addAllWebsites().catch(console.error);

Script áp dụng trên trình duyệt Chrome

Nếu bạn dùng trình duyệt Chrome thì phải nhập vào đoạn allow pasting thì mới dán script được, đây là tính năng bảo mật của Chrome

1. Gõ allow pasting vào console và nhấn Enter
2. Copy và paste toàn bộ code dưới vào console và nhấn Enter
3. Sau đó gõ addAllWebsites() và nhấn Enter để bắt đầu quá trình tự động

// Kiểm tra xem đã load Angular chưa
if (typeof angular === 'undefined') {
    console.error('Không tìm thấy Angular. Vui lòng đảm bảo bạn đang ở đúng trang CyberPanel');
    return;
}

// Function để đợi element xuất hiện trên trang
function waitForElement(selector, timeout = 5000) {
    return new Promise((resolve, reject) => {
        const element = document.querySelector(selector);
        if (element) {
            resolve(element);
            return;
        }

        const observer = new MutationObserver(() => {
            const element = document.querySelector(selector);
            if (element) {
                resolve(element);
                observer.disconnect();
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });

        setTimeout(() => {
            observer.disconnect();
            reject(new Error(`Timeout waiting for ${selector}`));
        }, timeout);
    });
}

// Function chính để thêm website
async function addWebsite(websiteName) {
    try {
        // Chọn website
        const select = document.querySelector('select[ng-model="selectedWebsite"]');
        if (!select) {
            throw new Error('Không tìm thấy dropdown chọn website');
        }
        
        select.value = websiteName;
        select.dispatchEvent(new Event('change', { bubbles: true }));
        
        // Đợi và click nút Add Site
        await new Promise(resolve => setTimeout(resolve, 500));
        const addButton = document.querySelector('button[ng-click="addSite()"]');
        if (!addButton) {
            throw new Error('Không tìm thấy nút Add Site');
        }
        addButton.click();
        
        console.log(`✅ Đã thêm website: ${websiteName}`);
        return true;
    } catch (error) {
        console.error(`❌ Lỗi khi thêm ${websiteName}:`, error);
        return false;
    }
}

// Function để thêm tất cả website
async function addAllWebsites() {
    try {
        console.log('🚀 Bắt đầu thêm website...');
        
        const select = document.querySelector('select[ng-model="selectedWebsite"]');
        if (!select) {
            throw new Error('Không tìm thấy dropdown chọn website');
        }

        const websites = Array.from(select.options).map(option => option.value);
        console.log(`📋 Tổng số website cần thêm: ${websites.length}`);

        let success = 0;
        for (const website of websites) {
            const result = await addWebsite(website);
            if (result) success++;
            await new Promise(resolve => setTimeout(resolve, 2000));
        }

        console.log(`
🎉 Hoàn thành!
✅ Thành công: ${success}
❌ Thất bại: ${websites.length - success}
        `);
    } catch (error) {
        console.error('❌ Lỗi:', error);
    }
}

// Khởi chạy script
console.log('Script đã sẵn sàng!');
console.log('Gõ addAllWebsites() và nhấn Enter để bắt đầu');

Hy vọng bài viết Script thêm toàn bộ website backup sang Google drive trên CyberPanel sẽ giúp ích được cho nhiều người. Xin cảm ơn.

5/5 - (87 votes)

donate Nếu bạn thấy bài viết có ích bạn có thể donate cho team hoặc chia sẻ bài viết này. Ngoài ra bạn có thể yêu cầu thêm bài viết tại đây
daotiendung

Tiến Dũng Đào chuyên quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin. Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan