Linux 服务器备份到阿里云盘

超级管理员
超级管理员 社区主理
管理员
站长交流 92 浏览 1 回复 返回上级
阿里云盘没有官方 Linux 客户端,主流两套方案:
  1. aliyunpan(第三方命令行,推荐,简单,无需 WebDAV 中间服务)
  2. alist/aliyundrive‑webdav + rclone,适合高级同步 / 挂载磁盘

方案一:aliyunpan 命令行(最适合服务器定时备份)

1. 安装

# 一键安装
curl -s https://raw.githubusercontent.com/tickstep/aliyunpan/main/install.sh | sudo bash

2. 登录阿里云盘

aliyunpan login

输出二维码链接,浏览器打开扫码登录,完成授权。

3. 手动备份示例

  • 把本地 /data/backup 上传到阿里云盘 /服务器备份/主机A
aliyunpan sync start -ldir "/data/backup" -pdir "/服务器备份/主机A" -mode upload
-mode upload:只上传本地新增变更,不会删除云盘旧文件,适合备份;不要用 sync 双向同步。

4. 完整备份脚本(压缩打包再上传,生产直接抄)

新建 /opt/backup_aliyun.sh

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M)
# 本地要备份目录
BK_SRC="/www"
# 本地临时压缩包存放
BK_TMP="/tmp/backup_${DATE}.tar.gz"
LOG="/var/log/aliyun_backup.log"

echo "===== ${DATE} 开始备份 =====" >> $LOG
# 打包压缩
tar -zcf ${BK_TMP} ${BK_SRC} --exclude=/www/tmp --exclude=/www/cache

# 上传到阿里云盘根目录 /linux_backup
aliyunpan upload ${BK_TMP} /linux_backup/ >> $LOG 2>&1

# 删除本地临时包
rm -f ${BK_TMP}
echo "===== ${DATE} 备份结束 =====" >> $LOG

赋权:

chmod +x /opt/backup_aliyun.sh

测试运行:

/opt/backup_aliyun.sh

5.crontab 定时,每天凌晨 2 点执行

crontab -e
#添加
0 2 * * * /opt/backup_aliyun.sh
日志查看:tail -f /var/log/aliyun_backup.log


方案二:alist + rclone(适合增量同步、挂载网盘为本地磁盘)

alist 运行在本机,获取阿里云盘 token,对外提供 WebDAV 接口,rclone 对接 webdav 做同步
  1. docker 部署 alist,登录 alist 后台添加阿里云盘,拿到 refresh_token
  2. rclone config 新建远程,类型webdav,地址http://127.0.0.1:5244/dav,填写 alist 账号密码
  3. 同步命令
# 增量同步,本地目录→阿里云盘
rclone sync /data aliyun:/linux_backup --progress

⚠️注意:rclone sync删除云盘上本地不存在的文件,做备份建议用rclone copy,不要 sync。

重要风险提醒

  1. 第三方工具依赖阿里云盘网页 API,阿里云策略变更可能导致失效,重要数据不能只依赖阿里云盘一份备份
  2. 大文件、大量小文件上传会有限速,服务器带宽小不要高峰期跑备份。
  3. 脚本打包 MySQL 数据库:需要先mysqldump导出 sql 再打包,不要直接备份 data 目录。

MySQL 数据库备份片段加到脚本里

mysqldump -uroot -p'你的密码' --all-databases > /tmp/mysql_${DATE}.sql


评论1
回复 · 1
超级管理员
超级管理员 社区主理 楼主 · #1 ·
学到了,顶一下