Rclone是一款的命令行工具,支持在不同对象存储、网盘间同步、上传、下载数据。

支持的主流对象存储:

  • Google Drive
  • Amazon S3
  • Openstack Swift / Rackspace cloud files / Memset Memstore
  • Dropbox
  • Google Cloud Storage
  • Amazon Drive
  • Microsoft One Drive
  • Hubic
  • Backblaze B2
  • Yandex Disk
  • The local filesystem

Linux下安装

1
2
3
4
5
6
curl -O http://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64
cp rclone /usr/sbin/
chown root:root /usr/sbin/rclone
chmod 755 /usr/sbin/rclone

MacOS下安装

1
2
3
4
cd && curl -O http://downloads.rclone.org/rclone-current-osx-amd64.zip
unzip -a rclone-current-osx-amd64.zip && cd rclone-*-osx-amd64
sudo mv rclone /usr/local/bin/
cd .. && rm -rf rclone-*-osx-amd64 rclone-current-osx-amd64.zip

操作命令

rclone命令的语法格式: Syntax: [options] subcommand

常用的rclone命令有:

  • rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
  • rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
  • rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。
  • 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 - 交互式查找重复文件,进行删除/重命名操作。

备份文件夹

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash

# 备份名称,用于标记
BACKUP_NAME="blog"
# 备份目录,多个请空格分隔
BACKUP_SRC="/typecho"
# 备份文件临时存放目录,一般不需要更改
BACKUP_DIR="/tmp/onebackup"
# 备份文件压缩密码确保压缩包的安全
BACKUP_FILE_PASSWD="passwd"
# rcloneId
ID="gd"
# rclone 备份目录
FD="backup"

## 备份配置信息 End ##

## Funs ##
NOW=$(date +"%Y%m%d%H%M%S") #精确到秒,统一秒内上传的文件会被覆盖

mkdir -p $BACKUP_DIR

# 打包
echo "start tar"
BACKUP_FILENAME="$BACKUP_NAME-backup-$NOW.zip"
zip -q -r -P $BACKUP_FILE_PASSWD $BACKUP_DIR/$BACKUP_FILENAME $BACKUP_SRC
echo "tar ok"

# 上传
echo "start upload"
rclone copy $BACKUP_DIR/$BACKUP_FILENAME $ID:$FD
echo "upload ok"

# 清理备份文件
rm -rf $BACKUP_DIR/*
echo "backup clean done"
1
2
3
4
5
6
7
8
9
# 启动
# 赋予脚本执行权限
chmod +x onebackup.sh
bash onebackup.sh.sh

定时任务
crontab -e
# 每日凌晨2点备份
0 2 * * * /bin/bash /root/onebackup.sh