美文网首页开源工具技巧
Rclone 使用教程:同步 FTP 文件到阿里云 OSS

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

作者: Xpitz | 来源:发表于2019-12-31 14:07 被阅读0次

    文章首发于个人公众号:「阿拉平平」

    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/

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/ipvboctx.html