Rclone 是一款的命令行工具,支持在不同對象存儲、網盤間同步、上傳、下載數據。
官網網址:https://rclone.org/
Github 項目:https://github.com/ncw/rclone
安裝rclone
下載源碼安裝
wget 'https://downloads.rclone.org/v1.52.3/rclone-v1.52.3-linux-amd64.zip'
unzip rclone-v1.52.3-linux-amd64.zip
cp ./rclone-*/rclone /usr/local/bin
rm -rf ./rclone-*
使用官網推薦腳本安裝
curl https://rclone.org/install.sh | bash
配置rclone
在Linux或者Mac上完成安裝之后,rclone會默認從配置文件~/.config/rclone/rclone.conf
中獲取rclone的配置。我們既可以通過rclone config
命令來交互式修改這個配置,也可以直接編輯這個配置文件。
AWS S3的rclone的配置
[s3-overseas]
type = s3
provider = AWS
env_auth = false
access_key_id = <your-aws-access-key-id>
secret_access_key = <your-aws-secret-access-key>
region = <your-region-id>
acl = public-read
endpoint = https://s3.<your-region-id>.amazonaws.com
配置參數詳解
[s3-overseas]
: 定義該S3在本地的一個別名,后續執行命令時方便調用type
: 指定該配置的類型provider
: 存儲的提供商,具體可參照官方文檔env_auth
: 是否從環境變量中讀取access_key_id
: 有權限操作bucket的 AKsecret_access_key
: 有權限操作bucket的 SKregion
: bucket所處的地區acl
: 上傳的文件的權限endpoint
: bucket的加速地址 點擊查看AWS加速節點
如果
env_auth
配置為true
, 可以避免在rclone.conf中寫上AWS的key和secret,而是直接使用~/.aws/中的配置也可以在運行rclone時,通過指定環境變量
AWS_PROFILE=<your_profile_name>
來使用某一個profile
Ali OSS的rclone配置
[oss-hwpf]
type = s3
provider = Alibaba
access_key_id = <your-ali-access-key-id>
secret_access_key = <your-ali-secret-access-key>
endpoint = oss-cn-hongkong.aliyuncs.com
acl = public-read
使用說明
rclone config - 以控制會話的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 將文件從源復制到目的地址,跳過已復制完成的。
rclone sync - 將源數據同步到目的地址,只更新目的地址的數據。 –dry-run標志來檢查要復制、刪除的數據
rclone move - 將源數據移動到目的地址。
rclone delete - 刪除指定路徑下的文件內容。
rclone purge - 清空指定路徑下所有文件數據。
rclone mkdir - 創建一個新目錄。
rclone rmdir - 刪除空目錄。
rclone check - 檢查源和目的地址數據是否匹配。
rclone ls - 列出指定路徑下所有的文件以及文件大小和路徑。
rclone lsd - 列出指定路徑下所有的目錄/容器/桶。
rclone lsl - 列出指定路徑下所有文件以及修改時間、文件大小和路徑。
rclone md5sum - 為指定路徑下的所有文件產生一個md5sum文件。
rclone sha1sum - 為指定路徑下的所有文件產生一個sha1sum文件。
rclone size - 獲取指定路徑下,文件內容的總大小。.
rclone version - 查看當前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重復文件,進行刪除/重命名操作。
rclone mount - 掛載雲盤為本地硬盤
fusermount -qzu LocalFolder - 卸載掛載的雲盤
rclone的常用操作
ls
### 顯示遠端bucket下的文件
rclone ls s3-overseas:bucket-name
OUT: 106622 header.png
### 顯示遠端bucket下的目錄
rclone lsd s3-overseas:bucket-name
OUT: 0 2020-08-27 15:57:08 -1 new
### 以json形式列出bucket下的目錄和文件
rclone lsjson s3-overseas:bucket-name
OUT: [
OUT: {"Path":"header.png","Name":"header.png","Size":106622,"MimeType":"image/png","ModTime":"2020-08-27T07:32:29.000000000Z","IsDir":false,"Tier":"STANDARD"},
OUT: {"Path":"new","Name":"new","Size":0,"MimeType":"inode/directory","ModTime":"2020-08-27T16:02:42.413393904+08:00","IsDir":true}
OUT: ]
### 以json形式遞歸的列出bucket-name下目錄和文件
rclone lsjson s3-overseas:bucket-name -R
### 查看存儲桶中500B以上的文件列表
rclone --min-size 500B lsl s3-overseas:bucket-name
sync
### 同步本地目錄或文件到遠端bucket
rclone sync <LOCAL_PATH> s3-overseas:bucket-name/target-path/
### 同步遠端bucket目錄到本地
rclone sync s3-overseas:bucket-name/target-path/ <LOCAL_PATH>
### 遠端同步到遠端
# S3直接同步到阿里的OSS
rclone sync s3-overseas:bucket-name oss-hwpf:bucket-name
### 將本地文件同步到遠端,並備份被刪除或修改的文件到備份存儲桶中
rclone sync <LOCAL_PATH> s3-overseas:bucket-name --backup-dir s3-overseas:backup-bucket-name/backup-dir
sync操作,會刪除目標端的目錄或文件。執行前可以加
--dry-run
參數查看將要刪除的文件或目錄
copy
### 拷貝本地文件到遠端
rclone copy <LOCAL_PATH> s3-overseas:bucket-name/target-path/
## 拷貝遠端對象到本地
rclone copy s3-overseas:bucket-name/target-path/ <LOCAL_PATH>
rclone copy --max-age 24h --progress --no-traverse <LOCAL_PATH> s3-overseas:bucket-name/target-path/
copy操作,不會刪除目標端的任何文件
--max-age 24h
: 過濾出來最近24小時變更過的文件
--progress
: 顯示進度 等同於-P
--no-traverse
: 從源拷貝少量文件到目的中大量目的文件時,速度會更快
mkdir
### 創建新的bucket 需要AKSK有權限
rclone mkdir s3-overseas:new-bucket-name # 在AWS創建存儲桶new-bucket-name
### 創建新目錄
rclone mkdir s3-overseas:bucket-name/new-dir
delete
### 刪除bucket根目錄下的delete.file 如果`--include`不加路徑,則遞歸刪除所有該名字文件
rclone delete s3-overseas:bucket-name --include=/delete.file
check
### 對比本地文件和遠端文件,默認校驗修改時間和大小
rclone check <LOCAL_PATH> s3-overseas:bucket-name/target-path/ --one-way
### 進行數據對比校驗
rclone check s3-overseas:bucket-name/target-path/ oss-hwpf:bucket-name/target-path/ -P