AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 469313
Accepted
ghm1014
ghm1014
Asked: 2013-01-16 07:38:02 +0800 CST2013-01-16 07:38:02 +0800 CST 2013-01-16 07:38:02 +0800 CST

Bacula 使用变量重用 FileSet 资源

  • 772

我在不同的服务器上有多个相同应用程序的环境。目录结构非常相似,所以我想对所有目录使用一个文件集。例如:

- server1: /opt/env1/app/logs
- server1: /opt/env1/app/bin
- server1: /opt/env1/app/temp
- server1: /opt/env1/app/lib

- server2: /opt/env2/app/logs
- server2: /opt/env2/app/bin
- server2: /opt/env2/app/temp
- server2: /opt/env2/app/lib

- server2: /opt/env3/app/logs
- server2: /opt/env3/app/bin
- server2: /opt/env3/app/temp
- server2: /opt/env3/app/lib

我想要类似的东西:

FileSet {
  Name = "APP"
  Include {
    Options {
      signature = MD5
      Compression = GZIP
    }
    File = "/opt/${env}/app"
  }
  Exclude {
    File = "/opt/${env}/app/logs"
    File = "/opt/${env}/app/temp"
  }
}

然后:

Job {
  Name = "JOBENV1"
  #somehow set env variable as env1
  FileSet="APP"
  ...
}

Job {
  Name = "JOBENV2"
  #somehow set env variable as env2
  FileSet="APP"
  ...
}

Job {
  Name = "JOBENV3"
  #somehow set env variable as env3
  FileSet="APP"
  ...
}
backup
  • 2 2 个回答
  • 1586 Views

2 个回答

  • Voted
  1. Best Answer
    ghm1014
    2013-01-22T14:26:35+08:002013-01-22T14:26:35+08:00

    使用解决方案几天后,它似乎在工作,所以这里是:

    举个例子,假设我们有以下工作:

    • server1-env1-工作
    • server2-env2-工作
    • server2-env3-工作

    然后假设 --job 作为约定,文件集应该如下所示:

    FileSet {
      Name = "someapp-fileset"
      Include {
        Options {
          signature = MD5
          Compression = GZIP
        }
        File = "| bash -c \"echo %n | awk -F '-' '{print \$2}' | xargs -I ARG echo /opt/ARG\""
      }
      Exclude {
         File = "| bash -c \"echo %n | awk -F '-' '{print \$2}' | xargs -I ARG echo /opt/ARG/temp\""
         File = "| bash -c \"echo %n | awk -F '-' '{print \$2}' | xargs -I ARG echo /opt/ARG/logs\""
      }
    }
    

    有关文件集中命令执行的更多信息,请参阅文档

    完整和增量备份运行正常。

    • 2
  2. voretaq7
    2013-01-16T09:07:19+08:002013-01-16T09:07:19+08:00

    我不相信你能做到这一点 - Bacula 的配置文件是配置文件,而不是编程语言或 shell。

    您的实际选择是:

    1. 在每台机器上使用相同的目录结构
      从 Bacula 的角度来看,这是最实用的解决方案。它需要在 Bacula 配置文件中进行最少的额外工作,如果您的应用程序是“相同的”,那么它最有意义。

    2. 每台机器使用一个文件集
      这比选项 (1) 更烦人,因为您现在要维护一堆几乎相同的文件集。如果您使用其他可以自动创建文件集的进程生成 Bacula 配置,这是最实用的。

    3. 使用一个列出所有目录的文件集
      这行得通,但是任何时候添加一台新机器(因此添加一个新env#目录)时,您都将更改全局文件集并触发完整备份。

    4. 使用ClientRunBeforeJob指令将文件放在统一位置
      这有点脏,但它有效——在 Bacularsync进行备份之前将应用程序环境转移到另一个位置。(如果你在 Linux 系统上,你也可以mount --bind将应用程序放在一个统一的位置而不影响其他任何东西。)
      这种方法的主要缺点是你的存储需求加倍:你有应用程序的运行生产副本,并且Bacula 制作的卷影副本以进行备份。

    • 1

相关问题

  • 总大小(磁盘)与总大小(媒体)

  • 社区对备份解决方案的意见

  • 无法读取不同 LTO-3 驱动器上的 LTO-3 磁带

  • 使用 TSM 备份时跳过硬链接

  • 使用 rsync 维护名称更改的目录的副本

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve