1 : TẢI VÀ CÀI ĐẶT RCLONE TRÊN VPS.
Rclone là một chương trình dòng lệnh để quản lý các tệp lưu trữ trên đám mây. Nó là một sự lựa chọn đầy đủ tính năng cho việc sao lưu, đồng bộ dữ liệu từ VPS, server lên các trung tâm lưu trữ dữ liệu đám mây.
Trước đây, việc backup thường chỉ lưu dữ liệu qua một VPS dự phòng khác. Như vậy bạn phải tốn thêm một khoản phí nữa cho VPS dự phòng. Ngày nay, khi lưu trữ đám mây trở nên phổ biến, giá cả phải chăng hơn, nhiều dịch vụ cung cấp free đến 100GB, thì lựa chọn backup lên cloud là quá tuyệt vời.
Nếu như Duplicity hay Rsync chỉ là công cụ sao chép, đồng bộ dữ liệu trên local hoặc giữa các server với nhau một cách dễ dàng, thì Rclone còn làm được nhiều hơn thế. Nó hỗ trợ đồng bộ dữ liệu lên hơn 30 nhà cung cấp dịch vụ cloud khác nhau, trong đó có những dịch vụ thông dụng như Google Drive, Google Cloud Storage, Microsoft OneDrive, Dropbox, Amazon Drive, Amazon S3, Openstack Swift, Yandex Disk, SFTP….
Bên cạnh đó, Rsync chỉ chạy đơn luồng, trong khi Rclone hỗ trợ đa luồng với số lượng truyền đồng thời do người dùng xác định. Trong quá trình đồng bộ rsync, yêu cầu phải tải dữ liệu về ổ đĩa của bạn, còn Rclone có thể chuyển dữ liệu giữa hai cloud hoàn toàn khác nhau, đôi khi không cần tải xuống ổ đĩa của bạn.
Để cài đặt phiên bản mới nhất của Rclone trên Linux/macOS/BSD bạn có thể chạy lệnh dưới đây sau khi đã SSH vào VPS của mình thực hiện
sudo -v ; curl https://rclone.org/install.sh | sudo bash
2 : CẤU HÌNH CÀI ĐẶT RCLONE. (rclone config)
Để thực hiện cấu hình Rclone bạn gõ lệnh rclone config và thực hiện các bước cài đặt mô tả như sau :
[root@thuyengovn ~]# rclone config Current remotes: Name Type ==== ==== remote ftp remote1 drive e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> n Enter name for new remote. name> remote Remote "remote" already exists. Enter name for new remote. name> remote2 Option Storage. Type of storage to configure. Choose a number from below, or type in your own value. 1 / 1Fichier \ (fichier) 2 / Akamai NetStorage \ (netstorage) 3 / Alias for an existing remote \ (alias) 4 / Amazon Drive \ (amazon cloud drive) 5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, Digital Ocean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Tencent COS and Wasabi \ (s3) 6 / Backblaze B2 \ (b2) 7 / Better checksums for other remotes \ (hasher) 8 / Box \ (box) 9 / Cache a remote \ (cache) 10 / Citrix Sharefile \ (sharefile) 11 / Combine several remotes into one \ (combine) 12 / Compress a remote \ (compress) 13 / Dropbox \ (dropbox) 14 / Encrypt/Decrypt a remote \ (crypt) 15 / Enterprise File Fabric \ (filefabric) 16 / FTP \ (ftp) 17 / Google Cloud Storage (this is not Google Drive) \ (google cloud storage) 18 / Google Drive \ (drive) 19 / Google Photos \ (google photos) 20 / HTTP \ (http) 21 / Hadoop distributed file system \ (hdfs) 22 / HiDrive \ (hidrive) 23 / Hubic \ (hubic) 24 / In memory object storage system. \ (memory) 25 / Internet Archive \ (internetarchive) 26 / Jottacloud \ (jottacloud) 27 / Koofr, Digi Storage and other Koofr-compatible storage providers \ (koofr) 28 / Local Disk \ (local) 29 / Mail.ru Cloud \ (mailru) 30 / Mega \ (mega) 31 / Microsoft Azure Blob Storage \ (azureblob) 32 / Microsoft OneDrive \ (onedrive) 33 / OpenDrive \ (opendrive) 34 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH) \ (swift) 35 / Pcloud \ (pcloud) 36 / Put.io \ (putio) 37 / QingCloud Object Storage \ (qingstor) 38 / SSH/SFTP \ (sftp) 39 / Sia Decentralized Cloud \ (sia) 40 / Storj Decentralized Cloud Storage \ (storj) 41 / Sugarsync \ (sugarsync) 42 / Transparently chunk/split large files \ (chunker) 43 / Union merges the contents of several upstream fs \ (union) 44 / Uptobox \ (uptobox) 45 / WebDAV \ (webdav) 46 / Yandex Disk \ (yandex) 47 / Zoho \ (zoho) 48 / premiumize.me \ (premiumizeme) 49 / seafile \ (seafile) Storage> 18 Option client_id. Google Application Client Id Setting your own is recommended. See https://rclone.org/drive/#making-your-own-client-id for how to create your own. If you leave this blank, it will use an internal key which is low performance. Enter a value. Press Enter to leave empty. client_id> Option client_secret. OAuth Client Secret. Leave blank normally. Enter a value. Press Enter to leave empty. client_secret> Option scope. Scope that rclone should use when requesting access from drive. Choose a number from below, or type in your own value. Press Enter to leave empty. 1 / Full access all files, excluding Application Data Folder. \ (drive) 2 / Read-only access to file metadata and file contents. \ (drive.readonly) / Access to files created by rclone only. 3 | These are visible in the drive website. | File authorization is revoked when the user deauthorizes the app. \ (drive.file) / Allows read and write access to the Application Data folder. 4 | This is not visible in the drive website. \ (drive.appfolder) / Allows read-only access to file metadata but 5 | does not allow any access to read or download file content. \ (drive.metadata.readonly) scope> 1 Option service_account_file. Service Account Credentials JSON file path. Leave blank normally. Needed only if you want use SA instead of interactive login. Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`. Enter a value. Press Enter to leave empty. service_account_file> Edit advanced config? y) Yes n) No (default) y/n> Use auto config? * Say Y if not sure * Say N if you are working on a remote or headless machine y) Yes (default) n) No y/n> 2022/10/14 04:56:40 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=oTLSSB385eYbIrR7kway7g 2022/10/14 04:56:40 NOTICE: Log in and authorize rclone for access 2022/10/14 04:56:40 NOTICE: Waiting for code...
Ok, giờ mình giải thích thế này nhé, trước đây bạn dùng Rclone bạn tới bước này Setup tới bước này thì Rclone sẽ cho bạn 1 URL bên trong có sẳn TOKENKEY để bạn Coppy rồi dán thẳng trên Trình Duyệt để xác minh tương ứng với tài khoản Google Drive mà bạn cần thao tác cấu hình, tuy nhiên hiện tại thì Rclone không còn như thế nữa, em ấy đã thay đổi, và dưới đây là cách làm điều tiếp theo.
Truy cập URL : https://rclone.org/downloads/ và tải bản Rclone về máy tính của bạn tương ứng với thiết bị bạn đang sử dụng.
Sau khi tải xong bạn giải nén Folder ra và tạo thư mục nào đó cho dễ thở một xíu với việc sử dụng CMD trên Windows chẳng hạn, nchung thì miễn sao bạn dễ tìm đúng Folder mà bạn đã giải nén là được, ở đây thì mình sẽ tạo như hình dưới đây và tống cái mà mình đã giải nén vào trong thư mục này.
Xem hình trên để thấy nơi mình để dữ liệu đã tải và giải nén nhé, tiếp theo bạn có thể nhấn tổ hợp phím WINDOWS + R để mở RUN và nhập CMD cho chuyên nghiệp, còn không thì dùng phần tìm kiếm mở Command Prompt lên và gõ lệnh
cd C:/rclone tương ứng với Folder mà bạn đã tạo.
Bạn sẽ được cấp mã có thành phần [rclone authorize “drive”] sau đó dán vào mã xác thực Google Drive với Token mà bạn có để thực hiện cấp quyền cho Rclone.
Sau khi bạn dán mã vào thì Trình Duyệt sẽ mở lên cửa sổ và bạn cần cấp phép cho Rclone và chọn tài khoản đăng nhập tương ứng với bạn cần SETUP nhé.
Sau khi bạn cấp quyền thành công thì giao diện sẽ được hiển thị như hình trên thế là hoàn tất.
3 : CÁCH LẤY THÔNG TIN FOLDER ID TRÊN GOOGLE DRIVE (root_folder_id)
Giải quyết vấn đề lưu trữ, mặc định thì Rclone sẽ lưu dữ liệu trên thư mục gốc của Google Drive, nếu bạn muốn sắp xếp lại các Folder lưu trữ trở nên ngăn nắp và đúng vị trí hơn thì Root_folder_id là điều cần thiết trong vấn đề này.
Giả sử : mình chỉ muốn các dữ liệu đưa lên từ Rclone tải lên Google Drive được lưu trong thư mục có sẳn mà mình đã tạo là BACKUPVPS > BACKUPVPS1 hoặc BACKUPVPS2 chẳng hạn mà không lưu lung tung trong các thư mục khác đỡ mất công tìm kiếm thì bạn truy cập đúng Folder trên Google Drive của bạn và URL sẽ hiển thị như thế này :
https://drive.google.com/drive/u/3/folders/12OpCQY2HEIKXXXXXXXXXXX5FXXn9Y7AQeIS
NHƯ VẬY trong trường hợp này thì 12OpCQY2HEIKXXXXXXXXXXX5FXXn9Y7AQeIS đang là root_folder_id, để chỉnh sửa lại cấu hình của Rclone bạn sẽ chỉnh sửa trong mục Edit advanced config thay vì bạn nhấn NO thì chọn YES và sửa lại root_folder_id sang đúng ID mà bạn đã có, còn lại bạn cứ ENTER bỏ qua mặc định thôi rồi lưu lại, như vậy về sau dữ liệu sẽ chỉ được tải lên đúng Folder mà bạn đã quy định theo root_folder_id của Rclone đưa lên Google Drive.
4 : TẠO FILE BASH CHẠY CẤU HÌNH SAO LƯU.
Bạn có thể sử dụng NANO để thao tác chỉnh sửa dữ liệu với việc tạo ra FILE BACKUP.SH
nano /root/backup.sh
Sau đó thực hiện coppy toàn bộ nội dung file dưới đây và đưa vào dữ liệu của tệp tin backup.sh và lưu lại.
#!/bin/bash SERVER_NAME=BACKUPVPSLXH TIMESTAMP=$(date +"%F") BACKUP_DIR="/root/backup/$TIMESTAMP" MYSQL=/usr/bin/mysql MYSQLDUMP=/usr/bin/mysqldump SECONDS=0 mkdir -p "$BACKUP_DIR/mysql" echo "Rclone dang sao luu database ... >"; databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"` for db in $databases; do $MYSQLDUMP --force --opt $db | gzip > "$BACKUP_DIR/mysql/$db.gz" done echo "Da thuc hien xong"; echo ''; echo "Rclone dang sao luu du lieu 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/**\* #E$ fi done echo "Rclone da thuc hien xong sao luu du lieu ... >"; echo ''; size=$(du -sh $BACKUP_DIR | awk '{ print $1}') echo "Rclone dang tai du lieu len Google Drive"; rclone move $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1 # Clean up rm -rf $BACKUP_DIR rclone -q --min-age 3d delete "remote:$SERVER_NAME" #Xoa tat ca backup nao qua 3 ngay rclone -q --min-age 3d rmdirs "remote:$SERVER_NAME" #Xoa cac folder qua 3 ngay rclone cleanup "remote:" #Xoa thung rac echo "Rclone da thuc hien xong hoan tat tai len du lieu"; echo ''; duration=$SECONDS; echo "Tong cong $size, $(($duration / 60)) phut va $(($duration % 60)) giay thuc hien thao tac nay.";
Phân quyền cho tệp tin vừa tạo với lệnh dưới đây.
chmod +x /root/backup.sh
Sau đó bạn có thể chạy với lệnh
/root/backup.sh
Đối với mysqldump bạn có thể tham khảo bài viết này nếu trong trường hợp mysqldump chưa chạy được do không có hoặc không đúng tài khoản để Export ra được file .sql tại > https://lexuanhao.com/cau-hinh-my-cnf-de-su-dung-mysqldump-khong-can-nhap-lai-thong-tin-tai-khoan-va-mat-khau-mysql/
NOTE THÊM :
# Clean up rm -rf $BACKUP_DIR rclone -q --min-age 3d delete "remote:$SERVER_NAME" #Xoa tat ca backup nao qua 3 ngay rclone -q --min-age 3d rmdirs "remote:$SERVER_NAME" #Xoa cac folder qua 3 ngay
Bạn có thể thực hiện thay thế thông số ví dụ 3d sang 3w tương ứng từ 3 ngày sang 3 tuần cho config này tùy theo nhu cầu mà bạn sử dụng cho việc lưu giữ lại các dữ liệu đã sao lưu, thời gian càng dài thì đồng nghĩa với dung lượng lưu trữ của bạn cũng sẽ tốn nhiều hơn.
5 : KIỂM TRA CẤU HÌNH CRONJOBS CHẠY TỰ ĐỘNG.
Nếu bạn muốn thực hiện sao lưu tự động mỗi ngày 1 lần vào lúc 1H sáng, bạn có thể làm theo bước sau
EDITOR=nano crontab -e
Dán nội dung dưới đây vào Crontab
0 1 * * * /root/backup.sh > /dev/null 2>&1
Như vậy là VPS của bạn sẽ tự động chạy sao lưu vào mỗi 1H sáng hằng ngày và đưa dữ liệu lên Google Drive và xóa các dữ liệu thừa trong quá trình tạo backup, bạn có thể chạy và kiểm tra lại trên Google Drive đã có dữ liệu chưa và nhớ kiểm tra đủ cả MYSQL và DỮ LIỆU WEB tránh tình trạng sao lưu chủ quan bị thiếu database là xu cà na luôn nhé.
6 : TẢI DỮ LIỆU TỪ GOOGLE DRIVE XUỐNG VPS
Bạn có thể tải thủ công dữ liệu từ Google Drive xuống Máy tính sau đó up lên lại VPS hoặc sử dụng Google Drive For Desktop đễ Sync dữ liệu theo thời gian thực trên máy tính thì có thể tải lên VPS luôn, hoặc làm theo hướng dẫn này để tải thẳng về VPS với lệnh :
rclone copy "remote:/BACKUPVPSLXH/2022-10-22" /home
Định dạng là Năm-Tháng-Ngày
7 : MỘT SỐ LỖI TRONG QUÁ TRÌNH CHẠY RCLONE
Failed to create file system for “remote:FOLDERNAME”: didn’t find section in config file
Nếu Rclone báo thế này trong quá trình chạy thì bạn kiểm tra lại tệp config tại theo lệnh
nano /root/.config/rclone/rclone.conf
với nội dung cấu hình trong file như sau :
[remote] type = drive scope = drive root_folder_id = 1iI0VYDDuXXXXXSgN8zRQ6hCEp-R- team_drive = token = GIỮ NGUYÊN THÔNG TIN TOKEN [remote] type = drive scope = drive
>
Chúc bạn thành công trong việc cấu hình Rclone sao lưu dữ liệu lên Google Drive theo hướng dẫn tại lexuanhao.com.