Cách đơn giản và ổn định nhất để auto backup n8n và OpenClaw lên Google Drive là chạy một script trên VPS mỗi đêm bằng cron: script xuất dữ liệu n8n, tạo bản sao lưu OpenClaw bằng lệnh chính thức openclaw backup create, rồi dùng rclone đẩy lên Google Drive. Cùng tìm hiểu cách thực hiện chi tiết qua bài viết dưới đây nhé!
Có thể backup n8n và OpenClaw từ 2 VPS lên cùng Google Drive không?
Có. Hai VPS có thể sử dụng cùng một tài khoản Google Drive làm nơi lưu trữ bản backup mà không ảnh hưởng đến hoạt động của nhau.
Ví dụ, hệ thống gồm:
- VPS 1: Cài đặt n8n bằng Docker, dùng để chạy các workflow tự động.
- VPS 2: Cài đặt OpenClaw, dùng để vận hành AI Agent.
- Google Drive: Tài khoản lưu trữ tập trung các bản sao lưu.

Mỗi VPS đảm nhiệm một quy trình riêng:
Tiêu chí VPS 1 – n8n VPS 2 – OpenClaw Phần mềm sao lưu Rclone Rclone Dữ liệu cần sao lưu Thư mục .n8n và dữ liệu liên quan State, cấu hình, Agent, sessions, workspace Công cụ tạo backup Script Bash kết hợp Docker OpenClaw Backup CLI Công cụ lập lịch Cron Cron Thư mục Google Drive AI-Backups/n8n AI-Backups/openclaw
Hai VPS không cần có chung địa chỉ IP hoặc cấu hình phần cứng. Điều kiện quan trọng là cả hai có kết nối Internet và được cấp quyền truy cập tài khoản Google Drive.
Cần chuẩn bị gì trước khi thiết lập Auto Backup?
Để thực hiện, bạn cần:
- Hai VPS Linux sử dụng Ubuntu hoặc Debian, đã cài n8n và OpenClaw tương ứng.
- Quyền truy cập SSH vào từng VPS thông qua Xshell.
- Một tài khoản Google có đủ dung lượng Drive.
- Quyền cài đặt phần mềm và chỉnh sửa Cron.
- Một máy tính Windows có trình duyệt để xác thực Google Drive.

Hướng dẫn tự động backup n8n và OpenClaw lên Google Drive
Bước 1 – Kết nối Google Drive với từng VPS bằng Rclone
Rclone là công cụ giúp sao chép dữ liệu từ VPS lên các dịch vụ lưu trữ đám mây, bao gồm Google Drive. Trong mô hình hai VPS, cần cài và cấu hình Rclone riêng trên từng máy chủ.
1.1. Cài đặt Rclone trên VPS 1 và VPS 2
Trước tiên, sử dụng Xshell đăng nhập VPS 1 (n8n).
Cài đặt các công cụ cần thiết:
sudo apt update
sudo apt install -y curl nano tar cron
Cài công cụ giải nén unzip:
sudo apt update
sudo apt install -y unzip
Cài Rclone bằng script chính thức:
sudo -v
curl https://rclone.org/install.sh | sudo bash
Kiểm tra:

rclone version
Sau khi hoàn tất, đăng nhập VPS 2 (OpenClaw) và thực hiện lại các lệnh tương tự.
Như vậy, cả hai VPS đều đã có Rclone.

1.2. Chuẩn bị Google Drive và OAuth Client ID
Bạn chỉ cần chuẩn bị một tài khoản Google Drive cho cả hai VPS.
Trước tiên, đăng nhập Google Drive và tạo thư mục: AI-Backups
Tiếp theo, tạo thông tin xác thực Google Drive API:
Tạo Project trên Google Cloud
- Truy cập Google Cloud Console và đăng nhập tài khoản Google.
- Nhấn vào mục chọn Project ở thanh công cụ phía trên.
- Chọn New Project (Dự án mới).
- Đặt tên, ví dụ
VPS-Auto-Backup, sau đó nhấn Create. - Chọn Project vừa tạo để tiếp tục cấu hình.

Kích hoạt Google Drive API
- Trong Google Cloud Console, truy cập APIs & Services → Library.
- Nhập
Google Drive APIvào ô tìm kiếm. - Chọn Google Drive API trong kết quả.
- Nhấn Enable (Bật) để kích hoạt dịch vụ.

Cấu hình màn hình OAuth
- Truy cập Google Auth Platform → Branding.
- Nếu chưa thiết lập, nhấn Get Started.
- Nhập các thông tin:
- App name:
Rclone VPS Backup - User support email: Chọn email Google của bạn.
- Audience: Chọn
Externalnếu sử dụng tài khoản Google cá nhân. - Contact information: Nhập email liên hệ.
- App name:
- Đồng ý với chính sách của Google và nhấn Create.


Tiếp theo, vào Google Auth Platform → Data Access, chọn Add or Remove Scopes, kéo xuống và thêm quyền:
https://www.googleapis.com/auth/drive.file
Quyền này cho phép Rclone truy cập và quản lý các tệp được tạo thông qua ứng dụng, phù hợp với nhu cầu backup mà không cần cấp quyền truy cập toàn bộ Google Drive.

Thêm tài khoản thử nghiệm
- Truy cập Google Auth Platform → Audience.
- Tìm mục Test users và nhấn Add users.
- Nhập địa chỉ Gmail sẽ sử dụng để lưu các bản backup.
- Nhấn Save để hoàn tất.

Lưu ý: Nếu ứng dụng External vẫn ở trạng thái Testing, refresh token cấp quyền Google Drive thường hết hạn sau 7 ngày. Để sử dụng backup lâu dài, bạn nên xem xét chuyển trạng thái sang In production bằng tùy chọn Publish App và hoàn thành những yêu cầu xác minh mà Google áp dụng. Với ứng dụng cá nhân chưa xác minh, Google có thể hiển thị cảnh báo khi đăng nhập.
Tạo OAuth Client ID
- Truy cập Google Auth Platform → Clients.
- Nhấn Create Client.
- Tại Application type, chọn Desktop app.
- Đặt tên, ví dụ
Rclone Backup Client. - Nhấn Create.
Sau khi tạo thành công, Google sẽ cung cấp hai thông tin quan trọng:
- Client ID: Mã định danh ứng dụng.
- Client Secret: Khóa bí mật dùng để xác thực ứng dụng.

Sao chép và lưu giữ an toàn hai thông tin này để sử dụng khi chạy lệnh rclone config trên từng VPS.

Kết quả: Bạn đã chuẩn bị xong thông tin OAuth để kết nối Rclone với Google Drive. Ở bước tiếp theo, sử dụng cùng Client ID và Client Secret để cấu hình riêng cho VPS n8n và VPS OpenClaw. Mỗi VPS cần hoàn tất quá trình xác thực Google Drive độc lập.
1.3. Kết nối Google Drive trên VPS 1 (n8n)
Với hướng dẫn này, script backup n8n được chạy bằng tài khoản root để có quyền truy cập Docker volume.
Trên VPS 1, nhập:
sudo -i
Sau đó:
rclone config
Lần lượt thực hiện:
Mục Thao tác New remote Nhập n Name Nhập gdriveStorage Chọn drive Client ID Dán Client ID đã tạo Client Secret Dán Client Secret Scope Chọn drive.file Advanced config Chọn n Use web browser Chọn n




Khi VPS yêu cầu xác thực, Rclone sẽ hiển thị lệnh rclone authorize cần chạy trên máy tính có trình duyệt.

1.4. Xác thực kết nối Google Drive cho VPS bằng Rclone trên Windows
Trên máy tính Windows:
Truy cập trang tải Rclone, tải phiên bản Windows và giải nén.
Mở thư mục chứa tệp rclone.exe -> nhấn chuột phải vào tệp -> chọn Mở với Terminal.
Quay lại Xshell, sao chép toàn bộ lệnh rclone authorize mà VPS cung cấp.

Dán lệnh vào PowerShell, thêm .\ trước rclone (thành .\rclone.exe authorize...), rồi nhấn Enter.
Trình duyệt sẽ mở trang đăng nhập Google. Chọn tài khoản Google Drive, cấp quyền và chờ thông báo xác thực thành công.

Quay lại PowerShell, sao chép toàn bộ chuỗi ký tự nằm giữa Paste the following into your remote machine và End paste.

Trở lại Xshell, dán chuỗi vào dòng config_token> rồi nhấn Enter.

Hoàn tất cấu hình trên VPS:
- Khi được hỏi Configure this as a Shared Drive?, chọn
nnếu sử dụng Google Drive cá nhân. - Tại Keep this “gdrive” remote?, chọn
yđể lưu. - Nhập
qđể thoát menu cấu hình Rclone.

Kiểm tra kết nối:
rclone lsd gdrive:

Nếu không xuất hiện lỗi xác thực, kết nối đã hoạt động. Danh sách thư mục có thể trống khi sử dụng quyền drive.file.
Lưu ý: Không chia sẻ Client Secret hoặc chuỗi xác thực được PowerShell trả về vì đây là thông tin nhạy cảm.
1.4. Kết nối Google Drive trên VPS 2 (OpenClaw)
Trên VPS 2, cần thực hiện Rclone bằng đúng tài khoản Linux đang vận hành OpenClaw.
Kiểm tra tài khoản hiện tại:
whoami
Kiểm tra OpenClaw:
command -v openclaw
Nếu lệnh thứ hai không trả về đường dẫn, cần đăng nhập tài khoản thực sự đã cài OpenClaw hoặc xác định đường dẫn thực thi trước khi tiếp tục.
Sau đó nhập:
rclone config
Thực hiện cấu hình giống VPS 1:
- Remote name: gdrive
- Storage: drive
- Client ID và Client Secret: Dùng lại thông tin đã tạo.
- Google Account: Đăng nhập cùng tài khoản Google Drive.
- Xác thực: Thực hiện trên Windows nếu VPS không có trình duyệt.

Cuối cùng, kiểm tra:
rclone lsd gdrive:
Kết quả: Cả hai VPS đều có một remote tên gdrive, nhưng cấu hình được lưu độc lập trên từng máy.
1.5. Mã hóa và phân chia thư mục backup
Để tránh lưu API Key và thông tin xác thực ở dạng dễ đọc trên Google Drive, nên tạo thêm remote mã hóa crypt.
Trên VPS 1, chạy:
rclone config
Chọn tạo remote mới với thông tin:
Mục Giá trị Name secure Storage crypt Remote to encrypt gdrive:AI-Backups/n8n Filename encryption standard Directory encryption true Password Tạo mật khẩu mạnh Password2 Tạo salt riêng

Lưu cấu hình rồi tiếp tục trên VPS 2, tạo remote secure tương tự, nhưng thay đường dẫn:
gdrive:AI-Backups/openclaw
Mỗi VPS có thể sử dụng khóa mã hóa riêng vì hai thư mục lưu trữ hoàn toàn độc lập. Cần giữ lại khóa, salt và cấu hình Rclone của từng máy để có thể giải mã khi khôi phục.

Kiểm tra trên từng VPS:
rclone mkdir secure:
rclone lsf secure:
Nếu không có lỗi truy cập, remote mã hóa đã sẵn sàng. Rclone sẽ tự mã hóa dữ liệu khi tải lên và giải mã khi tải về.

Từ đây, các bước tiếp theo được tách hoàn toàn theo từng VPS.
Bước 2 – Tự động backup n8n trên VPS thứ nhất
Phần này chỉ thực hiện trên VPS 1 – máy chủ đang chạy n8n.
Chúng ta sẽ tạo một script để dừng n8n trong thời gian ngắn, sao lưu dữ liệu SQLite và tải bản backup lên Google Drive. Sau đó, Cron sẽ tự chạy script mỗi ngày.
2.1. Kiểm tra container và dữ liệu n8n
Đăng nhập VPS 1 bằng Xshell.
Kiểm tra container:
sudo docker ps
Xác định tên container trong cột NAMES. Ví dụ:
n8n
Tiếp tục kiểm tra loại cơ sở dữ liệu (giả sử tên container là n8n-n8n-1):
sudo docker inspect n8n-n8n-1 --format '{{range .Config.Env}}{{println .}}{{end}}' | grep '^DB_TYPE='
- Nếu hiển thị DB_TYPE=sqlite, có thể thực hiện hướng dẫn bên dưới.
- Nếu không có kết quả và n8n sử dụng cấu hình mặc định, cơ sở dữ liệu thường là SQLite.
- Nếu hiển thị DB_TYPE=postgresdb, cần sao lưu PostgreSQL bằng công cụ riêng.
Kiểm tra vị trí thư mục dữ liệu:
sudo docker inspect n8n-n8n-1 --format '{{range .Mounts}}{{println .Destination "->" .Source}}{{end}}'
Lệnh này sẽ trả về vị trí thư mục .n8n được mount trên VPS.

Nếu không có kết quả, cần xác định lại cách n8n lưu dữ liệu. Không tiếp tục với đường dẫn chưa xác minh.
2.2. Tạo script backup n8n
Tạo script trên VPS 1 (giả sử n8n đang sử dụng postgresdb):
nano /usr/local/bin/backup-n8n.sh
Dán toàn bộ nội dung sau:
#!/usr/bin/env bash
set -Eeuo pipefail
umask 077
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Cau hinh VPS n8n
N8N="n8n-n8n-1"
WORKER="n8n-n8n-worker-1"
POSTGRES="n8n-postgres-1"
DATA_DIR="/var/lib/docker/volumes/n8n_n8n_data/_data"
BACKUP_DIR="/var/backups/n8n"
DATE="$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP_DIR"
chmod 700 "$BACKUP_DIR"
BACKUP_FILE="$BACKUP_DIR/n8n-$DATE.tar.gz"
TMP="$(mktemp -d "$BACKUP_DIR/.tmp-XXXXXXXX")"
STOP_PHASE=0
# Khoi dong lai n8n neu xay ra loi
cleanup() {
local status=$?
trap - EXIT
if [[ "$STOP_PHASE" == 1 ]]; then
for c in "$N8N" "$WORKER"; do
if [[ "$(docker inspect -f '{{.State.Running}}' "$c" 2>/dev/null || true)" == "false" ]]; then
docker start "$c" >/dev/null || status=1
fi
done
fi
rm -rf -- "$TMP"
exit "$status"
}
trap cleanup EXIT
echo "Kiem tra he thong..."
# Kiem tra cac container
for c in "$N8N" "$WORKER" "$POSTGRES"; do
test "$(docker inspect -f '{{.State.Running}}' "$c")" = "true"
done
test -d "$DATA_DIR"
rclone lsf secure: >/dev/null
# Xac dinh database n8n
DB_NAME="$(docker inspect "$N8N" \
--format '{{range .Config.Env}}{{println .}}{{end}}' \
| sed -n 's/^DB_POSTGRESDB_DATABASE=//p' | head -n 1)"
if [[ -z "$DB_NAME" ]]; then
echo "Khong xac dinh duoc database n8n" >&2
exit 1
fi
# Kiem tra PostgreSQL truoc khi dung n8n
docker exec "$POSTGRES" sh -c \
'psql -U "${POSTGRES_USER:-postgres}" -d "$1" -Atqc "SELECT 1"' \
sh "$DB_NAME" | grep -qx 1
echo "Tam dung n8n va Worker..."
STOP_PHASE=1
docker stop --time 180 "$WORKER" >/dev/null
docker stop --time 180 "$N8N" >/dev/null
echo "Backup PostgreSQL..."
docker exec "$POSTGRES" sh -c \
'exec pg_dump -U "${POSTGRES_USER:-postgres}" -d "$1" -Fc' \
sh "$DB_NAME" > "$TMP/postgres.dump"
# Kiem tra PostgreSQL dump
docker exec -i "$POSTGRES" pg_restore -l \
< "$TMP/postgres.dump" >/dev/null
echo "Backup thu muc n8n..."
tar -C "$DATA_DIR" -czf "$TMP/n8n-data.tar.gz" .
# Backup Compose va .env neu tim thay
COMPOSE_DIR="$(docker inspect "$N8N" \
--format '{{index .Config.Labels "com.docker.compose.project.working_dir"}}')"
if [[ -d "$COMPOSE_DIR" ]]; then
mkdir -p "$TMP/deployment"
for f in compose.yaml compose.yml docker-compose.yml docker-compose.yaml .env; do
if [[ -f "$COMPOSE_DIR/$f" ]]; then
cp "$COMPOSE_DIR/$f" "$TMP/deployment/"
fi
done
fi
printf 'Database: %s\nCreated: %s\n' \
"$DB_NAME" "$DATE" > "$TMP/backup-info.txt"
echo "Khoi dong lai n8n va Worker..."
docker start "$N8N" >/dev/null
docker start "$WORKER" >/dev/null
STOP_PHASE=0
echo "Nen ban backup..."
tar -C "$TMP" -czf "$BACKUP_FILE" .
# Kiem tra file nen
tar -tzf "$BACKUP_FILE" >/dev/null
echo "Tai len Google Drive..."
rclone copyto "$BACKUP_FILE" \
"secure:$(basename "$BACKUP_FILE")"
echo "Don backup cuc bo cu..."
find "$BACKUP_DIR" -maxdepth 1 -type f \
-name 'n8n-*.tar.gz' -mtime +7 -delete
echo "BACKUP N8N THANH CONG!"
Giải thích: Script này sẽ thực hiện:
- Kiểm tra n8n, Worker, PostgreSQL và kết nối Rclone.
- Tạm dừng n8n cùng Worker.
- Sao lưu cơ sở dữ liệu PostgreSQL bằng
pg_dump. - Sao lưu thư mục dữ liệu
.n8nvà các tệp Compose,.envthông dụng nếu tìm thấy. - Khởi động lại n8n và Worker.
- Nén, kiểm tra và tải bản backup lên Google Drive đã mã hóa.
- Xóa các bản backup cục bộ cũ hơn 7 ngày.

Bản backup được giữ lại trên VPS trong khoảng thời gian ngắn để thuận tiện kiểm tra. Các tệp cũ hơn 7 ngày sẽ được dọn sau một lần upload thành công.
Lưu ý quan trọng:
- Nếu container có tên khác n8n, hãy sửa giá trị CONTAINER trong script.
- Script không hỗ trợ PostgreSQL hoặc nhiều container n8n cùng ghi vào một cơ sở dữ liệu.
- Cần sao lưu riêng tệp Docker Compose, .env, thư mục custom nodes hoặc dữ liệu lưu bên ngoài .n8n nếu có.
- Nếu sử dụng N8N_ENCRYPTION_KEY trong biến môi trường, phải lưu giữ giá trị này an toàn để khôi phục credentials.
Nếu phát sinh lỗi sau khi dừng ứng dụng, script sẽ cố gắng khởi động lại n8n và Worker.
Đặc biệt: Script chỉ sao lưu cơ sở dữ liệu n8n, không bao gồm dữ liệu độc lập của NocoDB hoặc Redis. Các thư mục lưu trữ bên ngoài .n8n, tệp Compose hoặc .env nằm ở vị trí khác cũng cần được kiểm tra và sao lưu riêng.
2.3. Chạy thử script backup n8n
Lưu script bằng Ctrl + O, nhấn Enter, sau đó Ctrl + X.
Cấp quyền thực thi:
sudo chmod 700 /usr/local/bin/backup-n8n.sh
Chạy thử:
sudo /usr/local/bin/backup-n8n.sh
Nếu thành công, cuối màn hình sẽ có:
BACKUP N8N THANH CONG!

Kiểm tra các bản backup trên Google Drive:
sudo rclone lsf secure:
Nếu có tệp tên tương tự “n8n-20261016-020000.tar.gz” thì bản backup đã được tải lên.

Tên tệp trên chỉ là ví dụ minh họa, không phải kết quả kiểm tra thực tế.
2.4. Thiết lập backup n8n mỗi ngày
Bật Cron:
sudo systemctl enable --now cron
Mở lịch Cron của root:
sudo crontab -e
Thêm:
0 2 * * * /bin/bash /usr/local/bin/backup-n8n.sh >> /var/log/n8n-backup.log 2>&1
Lưu và thoát. Dòng lệnh này giúp VPS 1 tự động backup n8n vào 02:00 mỗi ngày, theo múi giờ của VPS.

Bạn có thể kiểm tra lịch đã lưu:
sudo crontab -l
Như vậy, phần thiết lập trên VPS 1 đã hoàn tất.
Bước 3 – Tự động backup OpenClaw trên VPS thứ hai
Phần này chỉ thực hiện trên VPS 2 – máy chủ đang chạy OpenClaw.
Khác với n8n, OpenClaw có sẵn công cụ sao lưu thông qua CLI. Vì vậy, chúng ta sẽ sử dụng chức năng chính thức để tạo bản backup trước khi chuyển lên Google Drive.
3.1. Kiểm tra tính năng backup của OpenClaw
Đăng nhập VPS 2 bằng Xshell, sử dụng đúng tài khoản Linux quản lý OpenClaw.
Kiểm tra phiên bản:
openclaw --version
Tiếp tục kiểm tra lệnh backup:
openclaw backup --help
Nếu phiên bản đang sử dụng có hỗ trợ, CLI sẽ hiển thị các lệnh quản lý backup như create, verify và restore.

Theo tài liệu OpenClaw, chức năng backup create hỗ trợ sao lưu trạng thái ứng dụng, cấu hình, credentials, agent directories và workspace theo cấu hình.
3.2. Tạo script backup OpenClaw
Mở Nano:
nano ~/backup-openclaw.sh
Dán nội dung:
#!/usr/bin/env bash
set -Eeuo pipefail
umask 077
export PATH="/usr/local/bin:/usr/bin:/bin:$HOME/.local/bin:$HOME/.npm-global/bin:$PATH"
# Ho tro OpenClaw cai qua NVM
if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
set +u
source "$HOME/.nvm/nvm.sh"
set -u
fi
BACKUP_DIR="/var/backups/openclaw"
mkdir -p "$BACKUP_DIR"
chmod 700 "$BACKUP_DIR"
echo "Kiem tra OpenClaw va Google Drive..."
command -v openclaw >/dev/null
command -v rclone >/dev/null
rclone lsf secure: >/dev/null
# Tao thu muc tam
TMP_DIR="$(mktemp -d "$BACKUP_DIR/.tmp-XXXXXXXX")"
trap 'rm -rf -- "$TMP_DIR"' EXIT
echo "Dang tao backup OpenClaw..."
openclaw backup create \
--output "$TMP_DIR" \
--verify
# Tim file backup moi tao
mapfile -d '' -t FILES < <(
find "$TMP_DIR" -maxdepth 1 \
-type f -name '*.tar.gz' -print0
)
if [[ "${#FILES[@]}" -ne 1 ]]; then
echo "Khong tim thay file backup hop le" >&2
exit 1
fi
FILE="${FILES[0]}"
NAME="$(basename "$FILE")"
# Luu ban sao cuc bo
mv -- "$FILE" "$BACKUP_DIR/$NAME"
echo "Dang tai backup len Google Drive..."
rclone copyto \
"$BACKUP_DIR/$NAME" \
"secure:$NAME"
echo "Don cac ban backup cuc bo cu..."
find "$BACKUP_DIR" -maxdepth 1 -type f \
-name '*.tar.gz' -mtime +7 -delete
echo "BACKUP OPENCLAW THANH CONG!"
Script thực hiện các thao tác:
- Kiểm tra công cụ OpenClaw và kết nối Google Drive.
- Tạo bản backup gồm cấu hình, dữ liệu Agent, thông tin xác thực, sessions và workspace theo cấu hình.
- Kiểm tra bản backup bằng
--verify. - Lưu một bản sao trên VPS tại
/var/backups/openclaw/. - Tải bản backup lên Google Drive thông qua remote
secuređã mã hóa. - Dọn các bản backup cục bộ cũ hơn 7 ngày sau khi tải lên thành công.
Script không cần truy cập VPS n8n. Hai VPS hoạt động hoàn toàn độc lập.
3.3. Chạy thử backup OpenClaw
Lưu script, sau đó cấp quyền:
chmod 700 ~/backup-openclaw.sh
Chạy thử:
bash ~/backup-openclaw.sh

Nếu thành công, kiểm tra Google Drive:
rclone lsf secure:
Kết quả sẽ hiển thị tên tệp backup OpenClaw đã tạo.

3.4. Thiết lập tự động backup OpenClaw mỗi ngày
Mở Cron bằng tài khoản Linux đang vận hành OpenClaw:
crontab -e
Thêm:
0 3 * * * /bin/bash "HOME/backup-openclaw.sh">>"HOME/openclaw-backup.log" 2>&1
Lưu và thoát. Lịch trên sẽ tự động chạy script vào 03:00 mỗi ngày, theo múi giờ VPS 2.

Nếu Cron báo không tìm thấy lệnh openclaw, hãy xác định đường dẫn chính xác bằng:
command -v openclaw
Sau đó bổ sung đường dẫn chứa lệnh vào biến PATH trong script. Điều này thường cần thiết nếu OpenClaw được cài thông qua công cụ quản lý phiên bản Node.js như NVM.
Kiểm tra lịch:
crontab -l
Đến đây, cả hai VPS đã có lịch sao lưu độc lập.
Bước 4 – Kiểm tra bản backup trên Google Drive
Sau khi chạy thử thành công trên cả hai VPS, mở Google Drive và tìm thư mục AI-Backups.
Lưu ý với quyền drive.file: Quyền này giới hạn khả năng truy cập các tệp do ứng dụng tạo. Vì vậy, nếu thư mục AI-Backups được tạo thủ công trên giao diện Google Drive, Rclone có thể không nhìn thấy thư mục đó. Cách đơn giản là để Rclone tự tạo thư mục lưu trữ, thay vì dùng thư mục tạo sẵn. Khi cần thao tác với thư mục được tạo bằng ứng dụng khác, phải sử dụng phương thức cấp quyền phù hợp.

Ngoài ra, đối với các tệp đã mã hóa bằng Rclone Crypt, tên tệp và nội dung trên giao diện Google Drive sẽ không hiển thị ở dạng thông thường.


Để xem tên backup gốc, sử dụng Rclone tại VPS tương ứng:
Trên VPS 1:
sudo rclone lsf secure:
Trên VPS 2:
rclone lsf secure:
Bạn cũng có thể tải thử một bản backup về VPS để kiểm tra.
Ví dụ trên VPS 1:
sudo rclone copyto \
"secure:TEN_FILE_BACKUP.tar.gz" \
"/tmp/n8n-check.tar.gz"
Sau đó kiểm tra:
sudo tar -tzf /tmp/n8n-check.tar.gz | head
Nếu tệp có thể giải nén và hiển thị danh sách dữ liệu, đây là một bước xác minh ban đầu. Tuy nhiên, kiểm tra tệp nén thành công chưa bảo đảm ứng dụng có thể khôi phục đầy đủ.
Cách khôi phục dữ liệu khi VPS gặp sự cố
Khi một VPS gặp sự cố, bạn chỉ cần khôi phục dữ liệu của ứng dụng tương ứng. VPS còn lại có thể tiếp tục hoạt động bình thường.
Khôi phục n8n trên VPS 1
Với n8n SQLite, quy trình cơ bản gồm:
- Chuẩn bị VPS mới và cài lại Docker.
- Cấu hình Rclone bằng tài khoản Google Drive cùng khóa giải mã của VPS 1.
- Tải tệp backup n8n về VPS.
- Chuẩn bị thư mục hoặc Docker volume .n8n tương ứng.
- Dừng n8n và khôi phục dữ liệu vào vị trí lưu trữ đã chuẩn bị.
- Khôi phục các biến môi trường, khóa mã hóa và cấu hình triển khai liên quan.
- Khởi động n8n và kiểm tra workflow, credentials cùng dữ liệu thực thi.
Không nên giải nén bản backup trực tiếp lên thư mục dữ liệu đang hoạt động nếu chưa có bản sao an toàn của dữ liệu hiện tại.

Khôi phục OpenClaw trên VPS 2
Trước tiên, cấu hình lại Rclone và tải tệp backup OpenClaw:
rclone copyto \
"secure:TEN_FILE_BACKUP.tar.gz" \
"$HOME/openclaw-restore.tar.gz"
Sau đó kiểm tra:
openclaw backup verify \
"$HOME/openclaw-restore.tar.gz"
Khôi phục dữ liệu vào một thư mục tạm:
openclaw backup restore \
"$HOME/openclaw-restore.tar.gz" \
--target "$HOME/openclaw-restore-test"
Tài liệu OpenClaw quy định thao tác restore trước tiên giải nén dữ liệu vào thư mục đích; việc đưa dữ liệu trở lại môi trường vận hành cần được thực hiện riêng sau khi dừng dịch vụ và kiểm tra cấu hình.
OpenClaw
Sau khi hoàn tất quá trình khôi phục, chạy:
openclaw doctor
Đồng thời kiểm tra kết nối đến các kênh nhắn tin, cấu hình model AI và các công cụ Agent đang sử dụng.
Những lưu ý quan trọng khi backup nhiều VPS
Khi thiết lập Auto Backup cho hai VPS lên cùng Google Drive, cần chú ý:
- Không dùng chung thư mục chứa backup của hai ứng dụng: Phân tách dữ liệu giúp dễ xác định bản backup khi cần khôi phục.
- Giữ cấu hình mã hóa riêng: Nếu sử dụng hai remote Crypt độc lập, cần lưu lại thông tin giải mã tương ứng.
- Không chỉ backup trên VPS: Nên duy trì ít nhất một bản sao bên ngoài máy chủ.
- Kiểm tra dung lượng Google Drive: Cả hai VPS cùng sử dụng dung lượng của tài khoản đích.
- Định kỳ thử khôi phục: Tệp backup có thể tải về thành công nhưng vẫn thiếu cấu hình hoặc dữ liệu cần thiết.
- Kiểm tra log Cron: Phát hiện sớm trường hợp backup thất bại do lỗi xác thực Google Drive, hết dung lượng hoặc lệnh không được thực thi.
- Bảo vệ quyền truy cập Google: Tài khoản Google Drive chứa backup cần bật xác thực hai bước.

Ngoài ra, Google Drive không thay thế hoàn toàn dịch vụ backup chuyên dụng cho các hệ thống có yêu cầu phục hồi cao. Nếu n8n và OpenClaw đang vận hành các tác vụ quan trọng, nên kết hợp thêm snapshot VPS hoặc phương án sao lưu dự phòng khác.
Kết luận
Tự động backup n8n và OpenClaw từ hai VPS khác nhau lên cùng Google Drive hoàn toàn có thể thực hiện bằng Rclone và Cron. Mỗi VPS tự tạo bản sao lưu theo lịch riêng, sau đó tải dữ liệu lên thư mục tương ứng trên Google Drive.
Cách triển khai này giúp quản lý tập trung các bản backup mà vẫn giữ hai hệ thống vận hành độc lập. Để bảo đảm khả năng phục hồi khi máy chủ gặp sự cố, bạn nên mã hóa dữ liệu, thường xuyên kiểm tra kết quả sao lưu và định kỳ thử khôi phục trong môi trường riêng.
Những câu hỏi thường gặp
Hai VPS khác IP có thể backup lên cùng một Google Drive không?
Có. Rclone sử dụng kết nối Internet để tải dữ liệu lên Google Drive nên hai VPS không cần có cùng địa chỉ IP, cùng nhà cung cấp hoặc cùng mạng nội bộ. Mỗi VPS chỉ cần có thông tin xác thực và quyền truy cập hợp lệ.
Có cần tạo hai tài khoản Google Drive riêng không?
Không bắt buộc. Bạn có thể sử dụng một tài khoản Google Drive và phân chia bản sao lưu thành hai thư mục. Tuy nhiên, sử dụng tài khoản hoặc vùng lưu trữ riêng sẽ giúp phân tách quyền truy cập và giảm ảnh hưởng nếu một thông tin xác thực bị lộ.
Có cần cài n8n trên VPS OpenClaw để chạy workflow backup không?
Không. VPS OpenClaw có thể sử dụng lệnh backup chính thức kết hợp Rclone và Cron. Quy trình này không yêu cầu n8n và cũng không phụ thuộc vào VPS đang vận hành n8n.
Nếu VPS n8n bị mất dữ liệu, backup OpenClaw có bị ảnh hưởng không?
Thông thường là không, vì OpenClaw sử dụng VPS riêng và các bản backup được lưu độc lập. Tuy nhiên, nếu tài khoản Google Drive chung bị khóa, mất quyền truy cập hoặc bị xóa dữ liệu, cả hai hệ thống sao lưu đều có thể bị ảnh hưởng.
Có cần trả phí cho Rclone không?
Không. Rclone là công cụ mã nguồn mở, có thể sử dụng miễn phí. Chi phí có thể phát sinh từ dung lượng Google Drive, tài nguyên VPS và những dịch vụ lưu trữ bổ sung nếu cần.
