瞎BB

做网站的都知道数据的重要性,肯定能想起来时刻备份网站或者数据库,原来我弄的是将这些文件备份到本地,然后增量备份到另一台vps上。

但是另一台vps不想维护了,毕竟在一直吃灰,而不备份是不可能的,那就备份到本地?太麻烦了,而且会老是忘记,于是就折腾了这一遭,备份到阿里云盘上,美滋滋。

当然,最好能双备份,也就是说最好能备份到两个不同的地方,否则,你懂的,特别是网络上的事情、特别是套路云。

阿里云盘

仿Linux shell文件处理命令的阿里云盘命令行客户 支持以下特色功能:

  • 多平台支持,支持Windows,macOS,linux(x86/x64/arm)等
  • 阿里云盘多用户支持
  • 支持文件网盘,相册网盘无缝切换
  • 支持导入/导出功能,快速备份(导出)和恢复(导入)网盘的文件
  • 下载网盘内文件,支持多个文件或目录下载,支持断点续传和单文件并行下载
  • 上传本地文件,支持多个文件或目录上传,支持排除指定文件夹/文件(正则表达式)功能
  • 备份本地文件,支持备份本地文件夹到网盘中,保持本地文件和网盘文件同步.常用于嵌入式或者NAS等设备.

安装阿里云盘

github地址:tickstep/aliyunpan: 阿里云盘命令行客户端 (github.com)

### 以下有部分操作图片中没有,按照教程来就可以
 # 进入opt目录
 cd /opt
 # 下载安装包
 wget https://download.fastgit.org/tickstep/aliyunpan/releases/download/v0.0.2/aliyunpan-v0.0.2-linux-amd64.zip
 # 解压
 unzip aliyunpan-v0.0.2-linux-amd64.zip
 # 重命名文件夹
 mv aliyunpan-v0.0.2-linux-amd64/ aliyunpan/
 # 进入aliyunpan目录
 cd aliyunpan/
 # 运行aliyunpan
 ./aliyunpan

登录

首先,必须先登录.目前支持使用RefreshToken进行登录,RefreshToken可以参考以下步骤获取,以Chrome浏览器为例,其他浏览器类似.打开阿里云盘网页并进行登录,然后F12按键打开浏览器调试菜单,选择应用,在左边选择本地存储,找到token

使用login -RefreshToken=你的RefreshToken值登录

之后输入exit退出

编写脚本& 修改backup.sh文件权限

在win下编辑文件后,复制到linux上,很可能会报错,若不能执行,先转换一下

#!/bin/bash
# -------------------------------------------------------------------------------
# 设置mysql的登录用户名和密码(根据实际情况填写),注意下面这些路径和执行aliyunpan的路径
WEB_PATH=/www/wwwroot/www.chahuxz.com #网站根目录
ALIYUNPAN_PATH=/site_backup         #阿里网盘内的文件夹路径
MYSQL_USER="root"                #数据库用户
MYAQL_PASSWORD="r1111111111111"       #数据库密码
MYSQL_HOST="localhost"           #数据库IP(本地)
MYSQL_PORT="3306"                #数据库端口
BACKUP_DIR=/data/aliyun_backup          #备份到哪个目录
DATE=`date +%Y%m%d%H%M`          #时间
#14天前的时间
ALI_DATE=`date +%Y%m%d%H%M -d '-14 day'`
#删除云端数据(14天以前的数据)
MYSQL_ALI="mysql_backup_$ALI_DATE.sql"
WEB_ALI="WEB_$ALI_DATE.tar.gz"
/data/aliyunpan/aliyunpan rm $ALIYUNPAN_PATH/$MYSQL_ALI $ALIYUNPAN_PATH/$WEB_ALI
# 删除本地备份数据(删除7天以前的备份数据)
echo "正在删除7天以前的本地备份数据!!!"
find $BACKUP_DIR -mtime +7 -type f -name '*.sql' -exec rm -rf {} \;
find $BACKUP_DIR -mtime +7 -type f -name '*.tar.gz' -exec rm -rf {} \;
# 备份全部数据库
mysqldump -h$MYSQL_HOST -u$MYSQL_USER -p$MYAQL_PASSWORD -P$MYSQL_PORT --all-databases >$BACKUP_DIR/mysql_backup_$DATE.sql
if [ $? -eq 0 ]; then
    echo "备份成功,时间:" $(date +"%Y-%m-%d %H:%M:%S")
    #备份html文件
    tar zcPf $BACKUP_DIR/WEB_${DATE}.tar.gz $WEB_PATH
    if [ $? -eq 0 ]; then
        echo "备份网站根目录成功,路径:$BACKUP_DIR/WEB_${DATE}.tar.gz"
        if [ $? -eq 0 ]; then
        # 调用aliyunpan上传备份的文件
        /data/aliyunpan/aliyunpan upload $BACKUP_DIR/mysql_backup_$DATE.sql $BACKUP_DIR/WEB_${DATE}.tar.gz $ALIYUNPAN_PATH
        else
            echo "上传文件出错,请检查日志!!!"
        fi
    else
        echo "备份网站根目录出错,请检查日志!!!"
    fi
else
    echo "备份数据库出错,请检查日志!!!"
fi
chmod 755 /data/backup.sh

crontab 定时任务跑起来

vim /etc/crontab
#每天早上2点执行数据库和html备份脚本
0 2 * * * root /opt/backup.sh > /opt/backup.log 2>&1 &
#注意crontab服务重启一下
service crond restart

如果出现sh脚本不能执行的话

可能是你在windwos中复制过去的,导致在linux中跑不动,此时,需要简单处理一下

Error处理:/bin/bash^M: 坏的解释器: 没有该文件或目录(bad interpreter: No such file or directory)

在Windows下每一行结尾是\n\r,而Linux下则是\n,将sh中的行尾的\r替换为空白

  • 背景—执行.sh脚本时出现$’\r’: 未找到命令,
  • 原因—是因为命令直接从windows 复制过来导致的
  • 解决—安装后,执行编译转换后,再次执行你那个sh文件就ok
yum install dos2unix
dos2unix **.sh

查看阿里网盘上传是否成功. [c-alert type=”warning”]文件名对不上是因为这个脚本被我改版过很多次,图片截图时间也不一样略过就好[/c-alert]

下载阿里网盘文件/目录

# aliyunpan download <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...
# 将阿里云盘中2021-09-25 08:22的WEB和数据库文件下载到本地
/opt/aliyunpan/aliyunpan download /backup/WEB_202109250813.tar.gz /backup/mysql_backup_202109250813.sql
# 下面这个和上面一样不过命令简短
# aliyunpan d <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...

[c-alert type=”warning”]下载路径请看输出信息!!![/c-alert]

列出帐号列表

aliyunpan loglist

列出所有已登录的帐号

获取当前帐号

aliyunpan who

切换阿里云盘帐号

切换已登录的帐号

aliyunpan su <uid>
aliyunpan su

请输入要切换帐号的 # 值 >

退出阿里云盘帐号

退出当前登录的帐号

aliyunpan logout

程序会进一步确认退出帐号, 防止误操作.

刷新Token

由于阿里云盘的RefreshToken是会过期的,为了延长最大过期时间,需要定期刷新Token,建议每小时刷新一次。 调用该命令可以自动刷新RefreshToken并保存到配置文件中,但是有一个前提,即Token必须还没有过期,如果Token已经过期是无法刷新的则只能重新登录。

刷新当前登录用户
aliyunpan token update

刷新所有登录的用户
aliyunpan token update -mode 2

如果你的aliyunpan工具是在Linux中运行,则建议你使用crontab定时任务进行Token自动刷新,例如

每小时执行一次Token刷新任务
*/60  * * * * /<your path>/aliyunpan token update -mode 2
说点什么
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...