1. Truy cập vào Root và Cài đặt
Để truy cập vào Root của VPS các bạn gõ lệnh
sudo su -i
Sau đó tiến hành cài đặt Rclone phiên bản mới nhất
wget https://downloads.rclone.org/rclone-current-osx-amd64.zip
unzip rclone-v*.zip
cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-
2. Tiến hành cấu hình Rclone với Google Drive
Các bạn gõ lệnh dưới để bắt đầu cấu hình
rclone config
Ở dòng thông báo đầu tiên, Rclone sẽ yêu cầu bạn tạo mới remote, gõ n để tạo mới và đặt tên remote, lưu ý tên này sẽ dùng về sau nên đặt đơn giản, dễ nhớ và nên viết liền, ở đây mình đặt là ncnz
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> ncnz
Sau khi đặt tên thì rclone sẽ dưa ra danh sách các lựa chọn nơi mà bạn lưu trữ, ở bài này viết về Google Drive nên bạn đúng số của Google Drive, ở bản cũ là 11, bản mới là 13, nhớ chọn đúng
Gõ 13 và nhấn Enter
Rclone sẽ tiếp tục hỏi về client_id> và client_secret>, phần này bạn bỏ trống, không cần điền, chỉ việc gõ Enter để qua bước kế tiếp.
Tại bước này, rclone sẽ yêu cầu chọn quyền truy cập, các bạn gõ 1 để chọn Full access cho nó.
Phần tiếp theo là root_folder_id> và service_account_file> chúng ta cũng sẽ tiếp tục bỏ trống.
Tương tự với 2 mục chỉnh sửa kế tiếp chúng ta chọn NO bằng cách gõ n
Đoạn này rclone sẽ đưa cho bạn 1 đường link để cấp quyền truy cập vào Google Drive.
Các bạn mở trình duyệt, đăng nhập sẵn vào tài khoản Google dùng để lưu trữ Backup rồi nhấn vào đường link.
Chon cấp quyền cho rclone và sao chép đoạn mã ứng dụng (dạng 4/…) rồi dán vào phần cài đặt.
Phần chỉnh sửa với team kế tiếp vẫn chọn NO bằng cách gõ n
Rclone sẽ hiển thị cho bạn những cài đặt trước đó và bạn gõ Y để chọn YES. Sau đó gõ Q để rời khỏi giao diện Config.
Nhìn chung bạn đã hoàn thành việc cấu hình, có thể kiểm tra lại bằng lệnh bên dưới, lưu ý là ncnz ở đây là tên remote bạn tạo ở lúc đầu, hãy thay bằng tên của bạn nếu cần
rclone lsd ncnz:
3. Viết File Script Backup cho hệ thống
Cách bạn gõ lệnh bên dưới để truy cập file ncnzbu.sh
nano /root/ncnzbu.sh
Các bạn dán đoạn code bên dưới vào, nhớ thay những chỗ ncnz bằng tên remote của bạn tạo lúc đầu và dán mật khảu phpadmin vào nếu muốn backup cả databse.
Nhấn Ctrl + O để lưu (Enter xác nhận nếu cần) và Ctrl + X để thoát khỏi giao diện chỉnh sửa file.
# ncnz - Tu dong backup website CyberPanel toi Google Drive
#!/bin/bash
SERVER_NAME=ncnz
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL_USER="root"
MYSQL_PASSWORD="dan-mat-khau-phpadmin-cua-ban-vao-day"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0
mkdir -p "$BACKUP_DIR/mysql"
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`
echo "Starting Backup Database";
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.sql.gz"
done
echo "BackUp thanh cong";
echo '';
echo "Starting Backup Website";
# Loop through /home directory
for D in /home/*; do
if [ -d "${D}" ]; then #If a directory
domain=${D##*/} # Domain name
echo "- "$domain;
zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/*** #Exclude cache
fi
done
echo "BackUp thanh cong";
echo '';
echo "Starting Backup Nginx Configuration";
cp -r /etc/nginx/ $BACKUP_DIR/nginx/
echo "BackUp thanh cong";
echo '';
size=$(du -sh $BACKUP_DIR | awk '{ print $1}')
echo "Starting Uploading Backup";
/usr/sbin/rclone move $BACKUP_DIR "ncnz:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1
# Clean up
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q --min-age 1w delete "ncnz:$SERVER_NAME" #Remove all backups older than 1 week
/usr/sbin/rclone -q --min-age 1w rmdirs "ncnz:$SERVER_NAME" #Remove all empty folders older than 1 week
echo "BackUp thanh cong";
echo '';
duration=$SECONDS
echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
Sau đó phân quyền cho đoạn code trên
chmod +x /root/ncnzbu.sh
Bạn có thể gõ thử xem nó chạy ngon lành chưa bằng lệnh dưới, hoặc sau này muốn backup thủ công cũng vậy
/root/ncnzbu.sh
4. Tạo CronJob để tự động hóa việc BackUp hằng ngày
Gõ lệnh dưới để mở cửa sổ
EDITOR=nano crontab -e
Dán đoạn script bên dưới vào cửa sổ và lưu lại.
Nhấn Ctrl + O để lưu (Enter xác nhận nếu cần) và Ctrl + X để thoát khỏi giao diện chỉnh sửa file.
0 2 * * * /root/ncnzbu.sh > /dev/null 2>&1
Đoạn code bên trên là thiết lập việc 2h sáng mỗi ngày sẽ tự động tọa backup, nếu bạn muốn đổi sang hàng tuần thì thay bằng lệnh này
0 2 * * 1 /root/ncnzbu.sh > /dev/null 2>&1
5. Tải dữ liệu đã BackUp về VPS
Vậy là bạn đã hoàn thiện việc BackUp tự động, nếu cần tải file về VPS thì dùng lệnh
rclone copy "ncnz:/ncnz/2022-06-30" /root/
Lệnh này sẽ copy thư mục 2022-06-30 trong thư mục Ncnz trên Google Drive về root trên VPS của bạn, các bạn thay thế đoạn code tương tự sau đó giải nén và thêm databse thủ công là đc