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.
Vì sao lựa chọn Rclone
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.
Trong bài viết này, mình sẽ giới thiệu 2 nội dung:
- Hướng dẫn cài đặt Rclone trên VPS
- Hướng dẫn sử dụng Rclone để upload backup lên Google Drive (Các cloud khác thực hiện tương tự)
Việc tạo file backup dữ liệu VPS mình sẽ hướng dẫn chi tiết trong một bài viết khác, bài viết này mình tập trung vào việc cài đặt tự động upload file backup lên Google Drive.
Hướng dẫn cài đặt Rclone và cấu hình kết nối đến Google drive
Rclone hỗ trợ rất nhiều hệ điều hành, tuy nhiên trong khuôn khổ bài viết này, mình chỉ hướng dẫn cài đặt trên nền tảng Linux (Ubuntu, Centos…)
Vì Rclone là một chương trình dòng lệnh nên mình sẽ down 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. (Nếu bạn đã cài đặt Rclone trước đó, muốn update lên phiên bản mới hơn thì cũng chạy lệnh này luôn nhé).
* Đối với hệ điều hành Linux 64bit:
cd /root/
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
\cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*
* Đối với hệ điều hành Linux 32bit:
cd /root/
wget https://downloads.rclone.org/rclone-current-linux-386.zip
unzip rclone-current-linux-386.zip
\cp rclone-v*-linux-386/rclone /usr/sbin/
rm -rf rclone-*
Giờ bạn có thể sử dụng lệnh rclone
được rồi.
Một số lệnh cơ bản
Trước khi đi vào sử dụng thì bạn nên biết qua về một số lệnh cơ bản của 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.
Xem đầy đủ các lệnh của Rclone tại đây: https://rclone.org/commands/
Cấu hình Rclone kết nối tới Google Drive
Đầu tiên chúng ta sẽ cấu hình kết nối Rclone với Google Drive, điều này sẽ tạo 1 tên profile để kết nối đến ggdrive nên chúng ta chỉ cần làm 1 lần duy nhất.
Kết nối SSH với VPS và chạy lệnh:
rclone config
Bạn đọc các dòng hướng dẫn và bấm nút lệnh tương ứng để thực hiện. Như hình trên, chúng ta sẽ bấm n
để tạo connect remote mới. Ở dòng name bạn đặt tên cho kết nối, bạn có thể chọn tên nào cũng được, viết liền không dấu.
Trong danh sách các nhà cung cấp sổ ra, bạn bấm số chọn để kết nối tới dịch vụ tương ứng. Trong hướng dẫn này, mình chọn mục 18 / Google Drive, các bạn nhập số 18
và nhấn Enter (Số thứ tự này có thể thay đổi tùy phiên bản của Rclone).
Các bước tiếp theo, mục client_id
và client_secret
các bạn để trống, nhấn Enter.
Tới bước cấp quyền cho kết nối (Option scope
), các bạn chọn mục 1 để cấp full quyền.
Mục tiếp theo service_account_file
bạn để trống và nhấn Enter. Các bước tiếp theo đây mới quan trọng nên các bạn chú ý nhé.
Khi được hỏi Edit advanced config?
chọn n
. Use auto config?
Bạn chọn n
.
Tới đây mới là điểm khác trong phiên bản mới 2022 của Rclone. Mình không rõ là Rclone đã thay đổi từ khi nào, nhưng trong các hướng dẫn cũ mình đã đọc trên mạng, và đã thực hành thì tới bước này, nó sẽ hiện ra link để các bạn copy và paste vào trình duyệt. Tuy nhiên bây giờ nó chỉ cho bạn một dòng lệnh với auth code như hình trên. Mình đã tìm hiểu và sẽ hướng dẫn các bạn các bước tiếp theo nhé.
Vào trang Download Rclone và tải về phiên bản của windows tương ứng (32bit hoặc 64bit). Sau đó giải nén ra, tốt nhất là để ở thư mục nào đường dẫn càng ngắn càng tốt. VD mình để ở ổ C, đặt tên là C:\rclone
. Tiếp đó, mở CMD lên, nhập lệnh cd C:\rclone
Bây giờ quay lại cửa sổ lệnh SSH, copy dòng lệnh lúc nãy và paste vào cmd, trong ví dụ của mình là rclone authorize "drive" "eyJzY29wZSI6ImRyaXZlIn0"
, các bạn paste vào cmd và nhấn enter
Sau khi nhấn Enter, bạn sẽ tự động được chuyển đến trình duyệt web, lúc này hãy chọn tài khoản, hoặc đăng nhập vào tài khoản google drive mà bạn muốn kết nối vào để remote.
Khi đã hoàn tất, bạn sẽ được thông báo là Success
Quay lại cửa sổ CMD, bạn sẽ thấy đã có dòng mã token được cấp (giữa 2 mũi tên màu vàng mình đánh dấu trong hình). Bạn copy dòng token đó để qua cửa sổ SSH paste vào.
Bạn paste mà copy được ở trên vào cửa sổ SSH, nhấn Enter. Nó sẽ tiếp tục hỏi Configure this as a Shared Drive (Team Drive)?
bạn chọn n
(No). Một lần nữa, nó sẽ xác nhận lại thông tin, Keep this "gdrive" remote?
bạn chọn y
(Yes).
Tới đây, chúng ta đã hoàn thành việc cấu hình Rclone kết nối vào tài khoản Google drive.
Vậy là xong, giờ bạn có thể test với lệnh liệt kê thư mục trong kết nối remote:
rclone lsd gdrive:
Toàn bộ quá trình cài đặt sẽ tương tự như sau (phần bôi đỏ là các bạn nhập input)
rclone config
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Enter name for new remote.
name> gdrive
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> 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> n
Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
rclone authorize "drive" "eyJzY29wZSI6ImRyaXZlIn0"
Then paste the result.
Enter a value.
config_token> eyJ0b2tlbiI6IntcImFjY2Vzc190b2tlblwiOlwieWEyOS5BMEFWQTl5MXMzY3ZsajM2WjEtUlZJYlUxcnVZbC1vVnlwcXpscEwxS1VWV3F2NkVBU0RjR2cxSDlhWW9zOFR0VDFndTNoUmdEc0Nl...................
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No (default)
y/n> n
Configuration complete.
Options:
- type: drive
- scope: drive
- token: {"access_token":"ya29.A0AVA9y1s3cvlj36Z1-RVIbU1ruYl-oVypqzlpL1KUVWqv6EASDcGg1H.........","token_type":"Bearer","refresh_token":"1//0e2vGE5QY8xWeCgYIARAAGA4SNwF-L9IrRzq..............","expiry":"2022-07-21T18:48:38.6525831+07:00"}
- team_drive:
Keep this "gdrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:
Name Type
==== ====
gdrive 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>
Trên đây là một số hướng dẫn cơ bản, các bạn tham khảo thêm hướng dẫn sử dụng Rclone với Google Drive và các dịch vụ cloud khác tại Rclone Docs.
Bài viết sau, mình sẽ hướng dẫn các bạn cách kết nối đến Onedrive, Mega.nz và chia sẻ script để backup file lên cloud drive.
Nguyễn Phùng Hưng
Bài viết có tham khảo một số nguồn trên internet