Ubuntu 定时备份文件并上传至阿里云OSS

2023-05-09 Views 科技 | 效率797字4 min read

起因

本来没曾想着要备份服务器上的文件,然而组里另一台服务器不知道咋的突然启动盘坏了,一方面庆幸自己用的那台还安好,另一方面突然产生了忧患意识,万一我的代码跑着跑着服务器坏了咋整,于是就想着要对代码文件进行定期备份。

一开始问了朋友,推荐了rsync,但后来一搜索感觉更适合两个服务器之间传输,如果想通过rsync将服务器上的文件备份到本地windows电脑上,还需要在Windows上下载额外的软件才行;后面在搜索时发现有人分享把备份文件上传到阿里云oss上,想到自己反正买了oss那就这样备份!

步骤

  1. 在oss上创建一个新的Bucket(在很多教程里看到最好选择同城地域、私有读取)

  2. 在服务器上下载并安装ossutil工具

    「实验室服务器基本信息」

    • Ubuntu 20.04.4 LTS (GNU/Linux 5.15.0-69-generic x86_64)

    • 16 11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz

    可以参考官方链接

    sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash

  3. 配置ossutil

    1. 输入配置命令

      ossutil config

    2. 根据提示设置配置文件路径

      文件名可以带路径,默认为:/home/user/.ossutilconfig,回车将使用默认路径。但是我还是自定义了,但是这接下来使用的时候会比较麻烦。

      /home/newdisk/wxy/ossutil/.ossutilconfig

      [Credentials] language=EN # 默认语言是英文 accessKeyID=replace_your_own_accessKeyID endpoint=https://oss-cn-shenzhen.aliyuncs.com # 填写Bucket所在地域的Endpoint accessKeySecret=ns8AQC0gN48I2C9YayD261KGdKXfL7v

      endpoint在这找

  4. 编写备份脚本

    我的路径vim /home/newdisk/wxy/backup4tep.sh

    #!/bin/sh
    echo "启动备份脚本..."
    
    # 临时目录
    tmpDir=/home/newdisk/wxy/backup4tep # 这里写你想要创建的临时目录的绝对路径
    
    # 创建临时目录
    mkdir $tmpDir
    
    now=$(date +"%Y%m%d%H") # 现在时间
    
    # 文件名前缀
    fileNamePrefix=tepenv-backup #这里写你的文件名前缀
    # 文件名,格式:前缀+时间,如:tepenv-backup-2021011521.tar.gz
    fileName=$fileNamePrefix-$now.tar.gz
    filePath=$tmpDir/$fileName
    
    # 备份文件在OSS上的存储路径
    ossDir=oss://backup4tep # 这里输入你OSS上的存储路径
    
    echo "正在打包 $filePath ..."
    
    tar -zcvf $filePath /home/newdisk/wxy/anaconda3/envs/pytep/lib/python3.7/site-packages/gym #这个路径写你要备份的文件路径
    
    echo "开始上传 $fileName 到OSS"
    
    ossutil64 -c /home/newdisk/wxy/ossutil/.ossutilconfig cp $filePath $ossDir/$fileName
    
    echo "删除本地临时打包文件 $fileName"
    rm -rf $filePath
    
    echo "备份完毕"
    

    这里有一处麻烦的地方就是我前面的配置文件是自定义的,所以我在使用的时候每次需要增加**-c**选项指定配置文件的路径,然后后面加上命令

    ossutil64 -c /home/newdisk/wxy/ossutil/.ossutilconfig

  5. 配置定时任务

    1. 使用 crontabs 定时执行脚本

      crontab -e

      30 04 * * * /home/newdisk/wxy/backup4tep.sh

    2. 期间遇到的问题:在输入crontab -e 时跳出no crontab for wxy crontab - using an empty one,其实归结于编辑器的选择,输入export EDITOR=vim就可以

参考🔗:

[1]https://suimz.com/post/6.html

[2] https://help.aliyun.com/document_detail/50451.html?spm=a2c4g.474474.0.0.63ae7786bwSmkb

EOF