You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定目录添加到每周生成的特定tar压缩归档文件中

解决方案

要将$BACKUP_CONFIG目录追加到已有的$SOURCE/$date.tar归档中,你可以直接使用tar命令的追加模式,具体操作如下:

1. 推荐:安全追加(保留相对路径)

首先确保你的变量已经正确定义:

SOURCE="/opt/gitlab/full"
BACKUP_CONFIG="/etc/gitlab"
# 假设$date是你已经定义好的日期变量,比如 date=$(date +%Y%m%d)

然后执行以下命令完成追加:

tar -rf "$SOURCE/$date.tar" -C / "${BACKUP_CONFIG#/}"

命令细节解释

  • -r:启用追加模式,向已存在的tar归档中添加新的文件或目录
  • -C /:切换到根目录执行操作,配合后续的相对路径,避免归档中存入绝对路径(防止恢复时意外覆盖系统原有的/etc/gitlab)
  • ${BACKUP_CONFIG#/}:Shell参数替换技巧,去掉$BACKUP_CONFIG开头的斜杠,把/etc/gitlab转换成etc/gitlab,实现相对路径归档

2. 可选:直接追加绝对路径(不推荐)

如果你确实需要在归档中保留完整的绝对路径,可以直接执行:

tar -rf "$SOURCE/$date.tar" "$BACKUP_CONFIG"

⚠️ 注意:这种方式会把/etc/gitlab的完整绝对路径存入归档,后续恢复时若不指定目标目录,会直接覆盖系统中的/etc/gitlab目录,风险较高。

关键注意事项

  • 仅支持未压缩的tar归档:你的文件是.tar格式(无压缩后缀),可以直接追加。如果是压缩格式(比如.tar.gz、.tar.xz),tar不支持直接追加内容,需要先解压原归档、添加新内容后重新压缩:
    # 示例:处理压缩的tar.gz归档
    # 创建临时目录
    mkdir -p /tmp/gitlab_backup_temp
    # 解压原归档到临时目录
    tar -xf "$SOURCE/$date.tar.gz" -C /tmp/gitlab_backup_temp
    # 复制配置目录到临时目录
    cp -r "$BACKUP_CONFIG" /tmp/gitlab_backup_temp/
    # 重新创建压缩归档
    tar -czf "$SOURCE/updated_$date.tar.gz" -C /tmp/gitlab_backup_temp .
    # 清理临时目录
    rm -rf /tmp/gitlab_backup_temp
    
  • 权限与文件存在性检查:执行命令前要确认$SOURCE/$date.tar文件存在,且当前用户拥有该文件和$SOURCE目录的写入权限。

内容的提问来源于stack exchange,提问作者Bobo Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:01:55