> Linux新闻 >

Rclone 使用教程:同步 FTP 文件到阿里云 OSS

Rclone 是一个由 Golang 编写的命令行工具,用于同步各云存储间目录和文件。官方将其描述为 rsync for cloud storage,即云存储版的 rsync。

本文将演示如何通过 Rclone 同步 FTP 文件到阿里云 OSS。

服务准备

在同步文件前,我已经准备好了存储服务:

服务 说明
FTP 部署在主机 192.168.10.173 上。用户:test。
OSS 阿里云对象存储。名称:rclone-oss。

存储服务的信息在配置 Rclone 时会用到。在配置前,我们先安装下 Rclone。

安装

Rclone 支持多平台运行,这里我安装在一台 CentOS 虚拟机上,采用二进制包安装。

下载并解压:

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
# 目前我下载版本为 v1.50.2
cd rclone-v1.50.2-linux-amd64

复制二进制文件:

cp rclone /usr/bin/
chown root:root /usr/bin/rclone
chmod 755 /usr/bin/rclone

安装帮助手册:

mkdir -p /usr/local/share/man/man1
cp rclone.1 /usr/local/share/man/man1/
mandb

接下来就可以配置 Rclone 了。

配置

Rclone 的配置向导相当友好,可以通过命令 Rclone config 进行配置,输入 n 新建:

rclone config

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> 

配置 FTP

我们先创建 FTP 配置,名称定为 ftp:

name> ftp
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Citrix Sharefile
   \ "sharefile"
 9 / Dropbox
   \ "dropbox"
10 / Encrypt/Decrypt a remote
   \ "crypt"
11 / FTP Connection
   \ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
13 / Google Drive
   \ "drive"
14 / Google Photos
   \ "google photos"
15 / Hubic
   \ "hubic"
16 / JottaCloud
   \ "jottacloud"
17 / Koofr
   \ "koofr"
18 / Local Disk
   \ "local"
19 / Mail.ru Cloud
   \ "mailru"
20 / Mega
   \ "mega"
21 / Microsoft Azure Blob Storage
   \ "azureblob"
22 / Microsoft OneDrive
   \ "onedrive"
23 / OpenDrive
   \ "opendrive"
24 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
25 / Pcloud
   \ "pcloud"
26 / Put.io
   \ "putio"
27 / QingCloud Object Storage
   \ "qingstor"
28 / SSH/SFTP Connection
   \ "sftp"
29 / Transparently chunk/split large files
   \ "chunker"
30 / Union merges the contents of several remotes
   \ "union"
31 / Webdav
   \ "webdav"
32 / Yandex Disk
   \ "yandex"
33 / http Connection
   \ "http"
34 / premiumize.me
   \ "premiumizeme"
Storage>

如上所示,Rclone 支持许多存储,这里输入 11 ,即 FTP:

Storage> 11
** See help for ftp backend at: https://rclone.org/ftp/ **

FTP host to connect to
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Connect to ftp.example.com
   \ "ftp.example.com"
host> 

之后会要求输入 host、 user、port、password 和 tls,这个根据实际情况设置即可。确认设置无误后,输入 y

Remote config
--------------------
[ftp]
type = ftp
host = 192.168.10.173
user = test
port = 21
pass = *** ENCRYPTED ***
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

FTP 配置完成后,输入 q 退出:

Current remotes:

Name                 Type
====                 ====
ftp                  ftp

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> q

配置 OSS

再添加 OSS 配置,名称定为 oss。受限于篇幅,OSS 配置我简单贴下:

rclone config
e/n/d/r/c/s/q> n
name> oss
Storage> 4 # S3
provider> 2 # Alibaba
env_auth> 1 # false
access_key_id> <your_access_key_id> # 输入 access_key_id
secret_access_key> <your_secret_access_key> # 输入 secret_access_key
endpoint> 1 # oss-cn-hangzhou.aliyuncs.com 按实际情况选择
acl> 1 # private 按实际情况选择
storage_class> 1 # 默认即可
Edit advanced config? (y/n) n # no 高级配置,这里没有配置

配置完成后,信息会保存到 $HOME/.config/rclone/rclone.conf。如果之后要变更配置信息,可以通过向导修改,也可以直接编辑该文件。

实例

由于 FTP 是新部署的,目前还没有目录和文件,所以先上传些文件到 FTP:

[root@rclone ~]# rclone copy /root/package ftp:package

上述命令会将 /root/package 下的文件上传到 FTP 的 package 目录(FTP 上目录不存在则创建)。通过 rclone ls 查看:

[root@rclone ~]# rclone ls ftp:
  6082560 package/Redis-x64-3.2.100.msi
  8799579 package/apache-maven-3.5.3-bin.tar.gz
  1016311 package/nginx-1.13.12.tar.gz
 36667596 package/zookeeper-3.4.12.tar.gz

可以看到,文件已上传到 FTP。现在将 FTP 中的文件同步到 OSS。执行以下命令:

[root@rclone ~]# rclone sync ftp: oss:rclone-oss

同步会花费一些时间,运行完成后,查看 oss 下的文件:

[root@rclone ~]# rclone ls oss:rclone-oss
  6082560 package/Redis-x64-3.2.100.msi
  8799579 package/apache-maven-3.5.3-bin.tar.gz
  1016311 package/nginx-1.13.12.tar.gz
 36667596 package/zookeeper-3.4.12.tar.gz

除了同步,Rclone 还提供了 mount 命令,允许将远程存储挂载到本地目录。不过进程会在前台运行,需要将其转到后台:

[root@rclone ~]# nohup rclone mount oss:rclone-oss /mnt/rclone-oss/ > /dev/null 2>&1 &

可以看到,OSS 已挂载到 /mnt/rclone-oss 下:

[root@rclone ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   36G  7.2G   29G  20% /
devtmpfs                 710M     0  710M   0% /dev
tmpfs                    722M     0  722M   0% /dev/shm
tmpfs                    722M  9.6M  712M   2% /run
tmpfs                    722M     0  722M   0% /sys/fs/cgroup
/dev/sda1               1014M  132M  883M  14% /boot
tmpfs                    145M     0  145M   0% /run/user/0
oss:rclone-oss           1.0P     0  1.0P   0% /mnt/rclone-oss

写在后面

Rclone 是一个功能很强大的命令行工具,支持在多平台上使用。友好的配置向导与易懂的子命令操作方式都使得 Rclone 几乎没有上手成本。

如果在使用过程中遇到问题的话,除了 rclone --help 获取帮助,也可以查询 Rclone 的官方文档,资料非常齐全。

References

[1] GitHub: https://github.com/rclone/rclone
[2] Rclone Website: https://termux.com/https://rclone.org/
[3] Rclone – Sync Files Directories from Different Cloud Storage: https://www.tecmint.com/rclone-sync-files-from-cloud-storage/




 



(责任编辑:IT)