LLLL1007 2023-04-11 12:13 采纳率: 70%
浏览 136
已结题

linux自动备份文件的脚本需求

需求
两种情况,
1.A机器已经自动压缩备份好了文件.tar.gz,只需要从A的备份路径下自动复制文件到B的路径下,(B的路径已挂载了weddav)。
2.A机器没有自动备份,手动写脚本,需要自动压缩备份目标文件夹或者文件.tar.gz,到B的路径下,(B的路径已挂载了weddav)。

这样我备份数据就在云端了。

请注意
1.需要有一个自动删除a路径下的文件,比如超过7天的就自动删除。
2.压缩级别需要可以设置。
3.顺带也提供一下,开机自启动wevdav,并且能自动挂载的方法。我实际操作,挂载好了,重启就没了。不知道是不是在/etc/fstab编辑文件,操作,需要具体方法。

3.或许您有更多好的自动备份数据到云端的方法,也可以提供一下,向 Duplicati这种有点重,我服务器才1G内存,我还要装docker,还要再装这个,显得有笨重。

感谢。

  • 写回答

6条回答 默认 最新

  • 「已注销」 2023-04-11 12:58
    关注

    引用new bing作答:
    以下是针对您的需求编写的脚本示例:

    #!/bin/bash
    
    # 备份源文件夹路径
    source_path=/path/to/source/folder
    
    # 备份目标文件夹路径
    backup_path=/path/to/backup/folder
    
    # weddav挂载路径
    weddav_path=/mnt/weddav
    
    # 备份文件名
    backup_filename=$(date +%Y%m%d)_backup.tar.gz
    
    # 压缩级别
    compression_level=9
    
    # 自动删除7天前的备份文件
    find $backup_path/* -mtime +7 -exec rm {} \;
    
    # 检查是否存在需要备份的文件或文件夹
    if [ -e "$source_path" ]; then
      # 源文件夹存在,进行备份
      tar -czvf $backup_path/$backup_filename --level=$compression_level $source_path
      
      # 检查weddav是否已挂载
      if ! mount | grep $weddav_path > /dev/null; then
        # weddav未挂载,尝试自动挂载
        mount -t davfs -o uid=1000,gid=1000,rw,file_mode=0777,dir_mode=0777 https://your-webdav-server.com $weddav_path
      fi
      
      # 复制备份文件到weddav挂载路径
      cp $backup_path/$backup_filename $weddav_path/$backup_filename
      
      # 卸载weddav挂载路径
      umount $weddav_path
    else
      # 源文件夹不存在,给出错误提示
      echo "Error: Source folder not found."
      exit 1
    fi
    
    exit 0
    

    请将上述脚本保存为一个可执行文件,比如backup.sh,并根据您的实际情况修改脚本中的变量值和注释。

    此脚本可以自动检测是否存在需要备份的文件或文件夹,如果存在则将其压缩成一个.tar.gz文件,并将其复制到weddav挂载路径下。同时,脚本会自动删除7天前的备份文件,以避免备份文件夹占用过多磁盘空间。

    对于自动挂载weddav,您可以将相关命令添加到系统启动脚本(比如/etc/rc.local),以确保系统重启后仍然能够挂载成功。对于如何自动挂载weddav,您可以参考weddav的官方文档或相关教程。

    另外,您也可以考虑使用其他备份软件或服务,比如rsync、BorgBackup、restic等。这些软件通常比较轻量级,而且支持自动备份、增量备份等功能,可以更好地满足您的需求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 修改了问题 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效