Rclone Auto Backup Server và hướng dẫn cài đặt chi tiết trên CentOS VPS/Server. Trên các hệ điều hành khác, các bạn tự đổi lại câu lệnh cho phù hợp. Rclone có thể cài đặt trên bất cứ máy chủ linux nào. Trong bài là hướng dẫn cài Rclone trên CentOS với OpenLiteSpeed Phiên bản mới nhất của Rclone được trình bày tại: https://rclone.org/downloads/
Cài đặt Rclone trên hệ điều hành Linux 64bit
Rclone là một chương trình dòng lệnh nên chúng ta sẽ download xuống rồi di chuyển file chạy đến thư mục /usr/sbin/ của VPS để sử dụng sau này.
Bước 1: Tạo SSH Tune
Tiến hành đăng nhập SSH vào VPS với câu lệnh như sau (Với Windows các bạn sử dụng CMD
để SSH):
ssh root@101.99.3.0 -L 53682:127.0.0.1:53682
Với những bạn không sử dụng tài khoản root mà sử dụng tài khoản ubuntu hoặc tài khoản tự tạo thì thay root bằng user của các bạn. Ví dụ:
ssh ubuntu@101.99.3.0 -L 53682:127.0.0.1:53682
Nếu bạn đổi port SSH thì lệnh sẽ có dạng như sau
ssh root@101.99.3.0 -p 8686 -L 53682:127.0.0.1:53682
Trong đó 8686 là port SSH của bạn. Thay 101.99.3.0 bằng IP VPS của các bạn
Kết quả sau khi Login ssh
Cách 1: Cài đặt Rclone bằng script
Đối với Linux/macOS/BSD:
curl https://rclone.org/install.sh | sudo bash
Ví dụ cài đặt rclone trên máy tính cá nhân:
Cách 2: Cài đặt Rclone từ tệp nhị phân được biên dịch trước
cd /root/ wget https://downloads.rclone.org/v1.56.2/rclone-v1.56.2-linux-amd64.zip unzip rclone-v*.zip \cp rclone-v*-linux-amd64/rclone /usr/sbin/ rm -rf rclone-*
Giờ bạn có thể sử dụng lệnh rclone
để xem thêm thông tin sử dụng.
Câu lệnh rclone thường dùng
Một số lệnh thông dụng khi dùng Rclone:
- rclone config – Cấu hình kết nối đến dịch vụ cloud.
- rclone copy – Copy files từ server đến cloud, skip nếu đã tồn tại dữ liệu.
- rclone sync – Synchronize giữa server và cloud, chỉ update dữ liệu trên cloud mà thôi.
- rclone move – Move files từ server lên cloud.
- rclone delete – Xóa dữ liệu của folder.
- rclone purge – Xóa dữ liệu của folder và toàn bộ nội dung bên trong.
- rclone mkdir – Tạo folder.
- rclone rmdir – Xóa folder trống tại đường dẫn.
- rclone rmdirs – Xóa toàn bộ folder trống tại đường dẫn. Bộ đếm thời gian bao gồm:
- ms – Milliseconds
- s – Seconds
- m – Minutes
- h – Hours
- d – Days
- w – Weeks
- M – Months
- y – Years
- rclone check – Kiểm tra dữ liệu server và cloud có đồng bộ hay không.
- rclone ls – Liệt kê toàn bộ dữ liệu gồm size và path.
- rclone lsd – Liệt kê toàn bộ thư mục.
- rclone lsl – Liệt kê toàn bộ dữ liệu gồm modification time, size và path.
- rclone size – Trả về kích thước thư mục.
Thông tin chi tiết từng lệnh bạn xem thêm ở đây: https://rclone.org/commands/
Kết nối Rclone với Google Drive
Chạy lệnh:
rclone config
Bạn sẽ nhận được thông báo:
No remotes found – make a new one, nhập n rồi nhấn Enter để tạo kết nối mới.
Ở dòng name bạn nhập remote để đặt tên cho kết nối, bạn có thể chọn tên nào cũng được.
Một danh sách các dịch vụ cloud xuất hiện, hãy chọn số 15, Google Drive rồi nhấn Enter.
Ở 2 dòng tiếp theo Client ID và Client Secret bạn hãy để trống nhấn Enter.
Mục Scope that rclone should use when requesting access from drive chọn 1 – drive Tiếp theo,
để trống với ID of the root folder và Service Account Credentials JSON file path
Khi được hỏi Use auto config? và Advance config hãy nhập n rồi nhấn Enter.
Ngay lập tức, Rclone sẽ đưa ra một đường link, bạn có thể copy rồi paste vào trình duyệt để lấy đoạn mã verification code.
Quay trở lại cửa sổ SSH, copy rồi paste verification code này vào dòng Enter verification code> rồi nhấn Enter.
Chọn n tức no đối với Configure this as a team drive?
Rclone cần xác nhận thông tin một lần nữa, bạn nhấn y để đồng ý rồi nhấn q để thoát khỏi giao diện cấu hình kết nối.
Bây giờ bạn test thử với câu lệnh sau (thay remote_name bằng tên remote bạn tạo khi kết nối với Google Drive): rclone lsd remote_name:
Nếu thành công câu lệnh trên sẽ liệt kê các thư mục trong Google Drive của bạn.
Tạo Rclone Back Up Script 1 thư mục cụ thể lên Cloud
Các rclone
ứng dụng là rất giàu tính năng. Điều đó thật tuyệt, nhưng nó có nghĩa là có rất nhiều lựa chọn . Lệnh mà chúng ta sẽ xem xét bên dưới sao chép các tệp từ máy tính cục bộ sang Google Drive của bạn. Đây là một bản sao một chiều vào đám mây; nó không phải là đồng bộ hóa hai chiều giữa Google Drive và máy tính cục bộ của bạn — mặc dù rclone
có thể làm được điều đó. Chúng tôi đang sử dụng điều này như một hình thức cơ bản của sao lưu ngoài trang web.
Nhập (hoặc sao chép và dán) phần này vào trình soạn thảo văn bản và lưu vào máy tính của bạn. Chúng tôi đã gọi nó gbk.sh
. Bạn có thể gọi nó là bất cứ điều gì có ý nghĩa đối với bạn.
#!/bin/bash /usr/bin/rclone copy --update --verbose --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s "/home/dave/Documents" "remote:VINASTAR/101.99.3.118"
Đây là ý nghĩa của các tham số:
- copy : Sao chép các tệp từ máy tính cục bộ vào bộ lưu trữ từ xa, bỏ qua các tệp đã có trên bộ lưu trữ từ xa.
- –Cập nhật : Bỏ qua bất kỳ tệp nào trên bộ lưu trữ từ xa có thời gian sửa đổi mới hơn tệp trên máy tính cục bộ.
- –Verbose : Cung cấp thông tin về mọi tệp được chuyển.
- –Transfers 30 : Điều này đặt số lượng tệp để sao chép song song.
- –Checkers 8 : Có bao nhiêu “bộ cờ” để chạy song song. Người kiểm tra giám sát quá trình chuyển giao đang diễn ra.,
- –Contimeout 60s : Thời gian chờ kết nối. Nó đặt thời gian
rclone
sẽ cố gắng tạo kết nối với bộ lưu trữ từ xa. - –Timeout 300s : Nếu quá trình chuyển không hoạt động trong khoảng thời gian này, quá trình đó được coi là bị hỏng và bị ngắt kết nối.
- – Câu hỏi 3 : Nếu có nhiều lỗi này, toàn bộ hành động sao chép sẽ được khởi động lại.
- –Thử lại mức thấp 10 : Thử lại mức thấp cố gắng lặp lại một hoạt động không thành công, chẳng hạn như một yêu cầu HTTP. Giá trị này đặt giới hạn cho số lần thử lại.
- –Stats 1s :
rclone
có thể cung cấp số liệu thống kê về các tệp đã chuyển. Điều này đặt tần suất cập nhật số liệu thống kê thành một giây. - “/ Home / dave / Documents” : Thư mục cục bộ mà chúng tôi sẽ sao chép vào bộ nhớ từ xa.
- “Google-drive: LinuxDocs” : Thư mục đích trong bộ nhớ từ xa. Lưu ý việc sử dụng “google-drive”, là tên mà chúng tôi đã đặt cho kết nối từ xa này trong
rclone config
trình tự. Cũng lưu ý dấu hai chấm “:” được sử dụng làm dấu phân cách giữa tên lưu trữ từ xa và tên thư mục. Các thư mục con được phân tách bằng dấu gạch chéo “/” thông thường. Nếu thư mục đích không tồn tại, nó sẽ được tạo.
Một số giá trị trong số này là giá trị mặc định, nhưng chúng tôi đã đưa chúng vào đây để chúng ta có thể thảo luận về chúng. Bằng cách đó, nếu bạn cần thay đổi một giá trị, bạn biết thông số nào cần điều chỉnh.
Làm cho tập lệnh có thể thực thi được bằng lệnh này:
chmod + x gbk.sh
Chạy tập lệnh sao lưu
Tập lệnh sao lưu của chúng tôi sẽ sao chép thư mục Tài liệu vào Google Drive của chúng tôi. Trong thư mục Tài liệu của chúng tôi, chúng tôi có một bộ sưu tập các bản nhạc.
Chúng tôi có thể khởi chạy tập lệnh sao lưu bằng lệnh sau:
./gbk.sh
Chúng tôi yêu cầu cập nhật số liệu thống kê mỗi giây một lần ( --stats 1s
) và chúng tôi cũng yêu cầu xuất chi tiết ( --verbose
). Sẽ không có gì ngạc nhiên khi chúng tôi nhận được rất nhiều đầu ra màn hình. Thường là một tùy chọn tốt để bật đầu ra dài dòng cho chức năng mới để bạn có thể phát hiện ra các vấn đề. Bạn có thể giảm số lượng đầu ra khi bạn hài lòng với mọi thứ đang hoạt động trơn tru.
Chúng tôi nhận được một bản tóm tắt cuối cùng cho chúng tôi biết 60 tệp đã được chuyển mà không có lỗi. Quá trình chuyển mất khoảng 24 giây.
Hãy kiểm tra Google Drive của chúng tôi và xem điều gì đã xảy ra trong bộ nhớ đám mây của chúng tôi.
Script Auto backup VPS và upload lên Google Drive
Tạo một file script có tên là backup.sh trong thư mục /root/:
nano /root/backup.sh
Nếu nano chưa được cài thì bạn sử dụng lệnh sau để cài đặt: apt-get install nano
Copy toàn bộ file script bên dưới vào file backup.sh. Một số chỗ bạn cần thay đổi như sau:
SERVER_NAME: tên thư mục chứa backup trên GoogleDrive.
Password: bạn thay bằng password của bạn. Đối với EasyEngine bạn sử lệnh này để lấy mật khẩu tài khoản root MySQL: cat /etc/mysql/conf.d/my.cnf
Đoạn này a2hostingvps:$SERVER_NAME: a2hostingvps là tên remote của mình bạn thay bằng tên remote bạn đã tạo ở bước kết nối Google Drive.
Lưu ý: script có sử dụng lệnh zip để nén. Bạn cài đặt zip với lệnh sau trước khi chạy script: apt-get install zip
SERVER_NAME=A2HOSTING_BACKUP TIMESTAMP=$(date +"%F") BACKUP_DIR="/root/backup/$TIMESTAMP" MYSQL_USER="root" MYSQL_PASSWORD="ZjaJhbBI" 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 "Finished"; echo ''; echo "Starting Backup Website"; # Loop through /home directory for D in /var/www/*; do if [ -d "${D}" ]; then #If a directory domain=${D##*/} # Domain name echo "- "$domain; zip -r $BACKUP_DIR/$domain.zip /var/www/$domain/htdocs/ -q -x /var/www/$domain/htdocs/wp-content/cache/**\* #Exclude cache fi done echo "Finished"; echo ''; echo "Starting Backup Nginx Configuration"; cp -r /etc/nginx/ $BACKUP_DIR/nginx/ echo "Finished"; echo ''; size=$(du -sh $BACKUP_DIR | awk '{ print $1}') echo "Starting Uploading Backup"; /usr/sbin/rclone --transfers=1 move $BACKUP_DIR "a2hostingvps:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1 # Clean up rm -rf $BACKUP_DIR /usr/sbin/rclone -q --min-age 2d delete "a2hostingvps:$SERVER_NAME" #Remove all backups older than 2 day /usr/sbin/rclone -q --min-age 2d rmdirs "a2hostingvps:$SERVER_NAME" #Remove all empty folders older than 2 day echo "Finished"; echo ''; duration=$SECONDS echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
Trong đoạn code có một điểm bạn cần lưu ý trong câu lệnh move của rclone mình có thêm thông số –transfers=1. Thông số này có nghĩa là rclone sẽ move lần lượt từng file lên google drive. Không có thông số này rclone sẽ move nhiều file cùng lúc. VPS của mình ram chỉ 512MB nên khi move nhiều file nặng cùng lúc service rclone bị kill giữa chừng. 252
Cấp quyền thực thi cho file backup.sh
chmod +x /root/backup.sh
Bây giờ bạn chỉ chạy lệnh sau để backup:
/root/backup.sh
Để kiểm tra xem backup đã thành công thực sự hay chưa bạn có thể vào Google Drive check lại.
Tạo cron job tự động chạy backup
Chạy câu lệnh sau để mở cron job:
EDITOR=nano crontab -e
Paste dòng sau vào cron job
0 2 * * * /root/backup.sh > /dev/null 2>&1
Câu lệnh sau có nghĩa: 2h sáng hàng ngày sẽ backup VPS và lưu trên Google Drive.
Bước 3: Tải backup từ Google Drive và khôi phục lại website
Trong trường hợp bạn muốn khôi phục lại website, bạn làm như sau:
Đầu tiên bạn tải toàn bộ backup về thư mục /root (nhớ thay tên remote bằng tên remote của bạn và diretory_name bằng thư mục trên Google Drive bằng tên của bạn).
rclone copy "remote_name:/directory_name/101.99.3.118" /root/
Ví dụ phía dưới là các file backup trên Google Drive của mình:
File khamphaso.com.zip sẽ chứa source code của website. Thư mục mysql sẽ chứa file sql nén ở định dạng .gz.
Khi bạn tải về thư mục /root. Đầu tiên bạn giải nén source code bằng lệnh unzip:
unzip /root/khamphaso.com.zip
Sau đó copy đè vào thư mục website:
cp -rf /root/var/www/khamphaso.com/ /var/www/khamphaso.com
Tiếp theo bạn khôi phục db. Đầu tiên bạn giải nén file sql bằng lệnh sau:
gunzip /root/mysql/khamphaso_com.sql.gz
Di chuyển tới thư mục gốc của website và sử dụng lệnh import của WP CLI (cái này đã được cài đặt khi bạn cài đặt EasyEngine theo hướng dẫn của mình):
ee site cd khamphaso.com cd htdocs wp db import /root/mysql/khamphaso_com.sql --allow-root
Thế là xong. Bạn đã restore thành công website.
Lời kết
Qua bài viết bạn đã biết thêm một cách backup website trên VPS sử dụng Directadmin.
Nếu bạn gặp khó khăn gì hãy để lại bình luận bên dưới.
Kết nối Rclone với Onedrive/Yandex/AMZ drive
Giống như với Google Drive, nhưng sẽ khác ở bước lấy access_token. Lưu ý: Đối với OneDrive cần chọn đúng loại tài khoản cá nhân Personal/doanh nghiệp Bussiness. Việc xác thực được thực hiện qua remote machine có trình duyệt (ví dụ máy tính của bạn) với lệnh rclone authorize "tên_cloud"
. Ví dụ cụ thể OneDrive, đến bước xác thực:
Microsoft App Client Id - leave blank normally. client_id> Microsoft App Client Secret - leave blank normally. client_secret> Remote config Choose OneDrive account type? * Say b for a OneDrive business account * Say p for a personal OneDrive account b) Business p) Personal b/p> p Use auto config? * Say Y if not sure * Say N if you are working on a remote or headless machine y) Yes n) No y/n> n For this to work, you will need rclone available on a machine that has a web browser available. Execute the following on your machine: rclone authorize "onedrive"
Chạy lệnh rclone authorize "onedrive"
tại máy đang sử dụng để lấy access_token.
- Tải Rclone về máy cá nhân (bản cho Windows/OSX) tại Rclone Downloads. Cụ thể, WindowsAMD64 – 64 Bit được rclone-v1.42-windows-amd64. Bên trong có file
rclone.exe
để chạy trên cửa sổ lệnh. Ví dụ đường dẫn fileD:\Rclone/rclone.exe
- Mở ứng dụng CMD của Windows (Run – CMD) rồi chạy lệnh trên với đường dẫn file. Ví dụ,
D:\Rclone\rclone.exe authorize "onedrive"
- Browser bật ra yêu cầu bạn đăng nhập để xác thực. Thành công sẽ hiện thông báo Success. Go back to rclone to continue trên trình duyệt. Quay lại ứng dụng CMD bạn copy access_token để xác thực bên VPS.
C:\Users\Admin>D:\Rclone\rclone.exe authorize "onedrive" Choose OneDrive account type? * Say b for a OneDrive business account * Say p for a personal OneDrive account b) Business p) Personal b/p> p If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth Log in and authorize rclone for access Waiting for code... Got code Paste the following into your remote machine ---> {"access_token":"EwD4Aq1DBAAUcSSzoTJJxxx","expiry":"2018-05-16T11:43:25.3184173+07:00""} <---End paste
Chú ý: access_token là một chuỗi kí tự liền mạch, nên khi copy từ CMD bạn paste qua trình chỉnh sửa như Notepad++ để loại bỏ hoàn toàn các kí tự thừa gây cách dòng nhé.
Copy file backup từ Cloud về Server
Cấu trúc lệnh copy file backup từ cloud về VPS như sau: rclone copy "remote:/<Tên thư mục trên Cloud>/yyyy-MM-dd" /root/
Với remote là tên kết nối bạn đã thiết lập Done (:
Rclone là giải pháp tự động sao lưu VPS/Server hoàn hảo
Bạn có thể bỏ qua các hướng dẫn dài dòng ở đây và sử dụng dịch vụ bảo trì máy chủ của chúng tôi để có tính năng Tự động sao lưu VPS/Server an toàn, hiệu quả, không phải đụng tay chân đến code (: Tải file backup.sh
về root Phân quyền: chmod +x /root/backup.sh
Test rclone bằng lệnh sau: /root/backup.sh
Tạo crontab: crontab -e
(i: thêm bản ghi, Esc xong, :wq lưu và thoát) 0 2 * * * /root/backup.sh > /dev/null 2>&1