替换docker容器中的文件

2023-10-28

#! /bin/bash
# 宣告文件内的语法使用bash语法,于是当程序执行时,加载bash的相关环境配置文件

# 在shell脚本中,倒引号``括起来的表示要执行的命令
# `dirname $0` 获取当前shell程序的路径;cd `dirname $0` 进入当前shell程序的目录
DIRNAME=`dirname $0`
TOOL_PATH=`cd ${DIRNAME}; pwd`
echo ${TOOL_PATH}

1、替换脚本

#! /bin/bash
# 替换docker容器中的文件

# 获取当前shell程序的路径
DIRNAME=`dirname $0`
CURRENT_PATH=`cd ${DIRNAME}; pwd`
echo ${CURRENT_PATH}
# chmod -R 777 ${CURRENT_PATH}

# [ ] 和 test 两者的作用是一样的,test 的三个基本作用是判断文件、判断字符串、判断整数
# [[ ]] 功能比 test 强大,支持字符串的模式匹配
if [ ! -d ${CURRENT_PATH}/log_file ]; then
    mkdir ${CURRENT_PATH}/log_file
fi


# 日志函数
LOG_PATH=`cd ${CURRENT_PATH}/log_file; pwd`
LOG_FILE_NAME="main.log"
LOG_FILE=$LOG_PATH/$LOG_FILE_NAME
function run_log(){
    if [ ! -d $LOG_PATH ]; then
        mkdir -p $LOG_PATH
    fi
    if [ ! -f $LOG_FILE ]; then
        touch $LOG_FILE
    fi
    declare -i count
    count=`du $LOG_FILE | awk '{print $1}'`
    if [ $count -gt 50 ]; then
        back_count=`ls $LOG_PATH | grep $LOG_FILE_NAME | wc -l`
        back_file=$LOG_FILE.$back_count
        mv $LOG_FILE $back_file
        touch $LOG_FILE
    fi
    LANG=en_US.ISO8859-1
    echo -n `date '+%b %d %T'` >> $LOG_FILE
    filename=$0
    echo -n " (file = `pwd`${file_name#*.})" >> $LOG_FILE
    if [ $# -ge 2 ]; then
        echo -n " (line = $2)" >> $LOG_FILE
    fi
    if [ $3 -eq 1 ]; then
        echo "$1" >> $LOG_FILE
        echo "$1"
    else
        echo "$1" >> $LOG_FILE
    fi
    return 0
}


function replace_docker_container_file(){
    # 查询***容器的容器id
    XX_CONTAINER_ID=$(docker ps | grep xx | head -n 1 | awk '{print $1}')
    echo 'xx容器的id为:' ${XX_CONTAINER_ID}
    run_log "容器id为:${XX_CONTAINER_ID}" "${LINENO}" 1

    # 将虚机中的文件拷贝到xx容器中
    if [[ ! -z ${XX_CONTAINER_ID} ]]; then
        docker cp ${CURRENT_PATH}/xx.db ${XX_CONTAINER_ID}:/home/pvc_volume/upload
    fi

    # 进入容器,后台执行拷贝命令
    if [[ ! -z ${XX_CONTAINER_ID} ]]; then
        docker exec -it ${XX_CONTAINER_ID} /bin/bash -c "sudo cp /home/pvc_volume/upload/xx.db /home/pvc_volume/resource"
    fi

    if [[ ! -z ${XX_CONTAINER_ID} ]]; then
        docker exec -it ${XX_CONTAINER_ID} /bin/bash -c "sudo rm -rf /home/pvc_volume/upload/xx.db /home/pvc_volume/resource/xx.db"
    fi

    echo '执行成功'
}


run_log "开始替换docker容器内的文件" "${LINENO}" 1
replace_docker_container_file
run_log "替换成功" "${LINENO}" 1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换docker容器中的文件 的相关文章

随机推荐

  • c语言将csv文件存储到数组,读取CSV文件并将值存储到数组中

    青春有我 我最喜欢的CSV解析器是一个内置在 NET库中的解析器 这是Microsoft VisualBasic命名空间中隐藏的宝藏 下面是一个示例代码 using Microsoft VisualBasic FileIO var path
  • ConcurrentHashMap 的实现原理

    目录 常见问题 1 concurrentHashMap特点 2 concurrentHashMap如何保证效率高 又安全的 1 构造函数 2 put方法 2 1 initTable 2 2 addCount方法 3 get方法 常见问题 1
  • 【SpinalHDL】Windows10系统搭建SpinalHDL 开发环境

    本文主要记载如何从零开始在win平台搭建SpinalHDL开发环境并跑通第一个spinal project demo 1 环境准备 1 1 软件下载 首先列出需要安装的软件 并逐一对这些软件的功能和其必要性进行说明 需要安装的软件 IDEA
  • 继电器的过流过压保护(自恢复保险丝)

    简述 继电器广泛应用于消费电子产业和工业设备中 它具有控制系统 又称输入回路 和被控制系统 又称输出回路 它实际上是用较小的电流去控制较大电流的一种 自动开关 故在电路中起着自动调节 安全保护 转换电路等作用 继电器可能因为过流或者过压而损
  • arduino/mixly TFT显示SD卡的图片

    一 器材 SD卡模块 1 8寸TFT屏 ST7735 arduino uno开发板 SD卡 二 接线 TFT屏 arduino uno GND GND VCC 5V SCL D13 SDA D11 RES D8 DC D10 CS D9 B
  • Java锁机制

    Java锁主要是为了解决线程安全问题 当多个线程共享同一个变量时可能会出现同时修改变量的情况 这样会导致最终计算结果错误 未解决该问题 Java提供了各种锁来确保数据能够被正常修改和访问 最常用的比如synchronized 一 互斥同步
  • python计算机视觉学习第三章——图像到图像的映射

    目录 引言 一 单应性变换 1 1 直接线性变换算法 1 2 仿射变换 二 图像扭曲 2 1 图像中的图像 2 2 分段仿射扭曲 2 2 图像配准 三 创建全景图 3 1 RANSAC 随机一致性采样 3 2 拼接图像 四 总结 引言 本章
  • [4G&5G专题-119]:5G培训应用篇-4-5G典型行业应用的解决方案(车联网、智慧医疗、智能教育、智能电网)

    目录 前言 前言 1 总目录 前言 2 本章 第1章 5G行业应用介绍 第2章 车联网解决方案 2 1 车联网概述 2 2 车联网需求分析 2 3 车联网解决方案 第3章 智慧医疗解决方案 第4章 智能教育解决方案 第5章 智能电网解决方案
  • Mybatis配置多数据源

    前言 Spring Boot项目使用Mybatis 既要从上游系统同步数据 又要操作本系统的数据库 所以需要引入双数据源 配置Mybatis 步骤 一 配置双数据源 连接数据库 1 禁用Spring Boot数据源的自动装配 在启动类 Sp
  • 请求调页存储管理方式的模拟 含详细代码和实验结果截图

    请求调页存储管理方式的模拟 实验目的 通过对页面 页表 地址转换和页面置换过程的模拟 加深对请求调页系统的原理和实现过程的理解 实验内容 假设每个页面中可存放10条指令 分配给一作业的内存块数为4 用C语言模拟一作业的执行过程 该作业共有3
  • 为什么Hadoop集群中机器台数多反而执行速度慢?

    这里我对这个现象给出解释 由于水平有限 发现错误 请及时留言 或站内和我联系 这里假设集群中有slave1 slave2 slave3三个节点 其中slave3工作效率低 一共有6个任务 需要去做 slave1和slave2执行一个任务是1
  • 104个精选计算机毕业设计项目,助你制作出色的程序,一定要试试

    对于即将面临毕业设计的计算机专业的同学们 如何选题和完成毕设项目成为一个重要而又棘手的问题 今天给大四的同学分享毕业设计项目 希望对正在为毕业设计发愁的小伙伴有帮助 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传
  • rpmbuild制作包的详细过程

    https www cnblogs com schangech p 5641108 html https www ibm com developerworks cn linux l rpm 一 目录结构生成 1 工具安装rpmdevtool
  • STM32之中断和事件

    中断和事件 什么是中断 当CPU正在执行程序时 由于发生了某种事件 要求CPU暂时中断当前的程序执行 转而去处理这个随机事件 处理完以后 再回到原来被中断的地方 继续原来的程序执行 这样的过程称为中断 什么是事件 当检测到某一个动作的触发
  • 内网 centos7 离线安装rpm包的三种方法

    一 使用 downloadonly参数 此种方法的优点是下载的rpm包可以下载至同一目录中 一 互联网电脑下载rpm包 1 查看互联网电脑是否支持 只下载不安装 功能 执行yum帮助命令 yum help 如果列表中出现 downloado
  • 文件操作之文件包含全解(31)

    文件包含的作用就是将这个文件包含进去之后 会调用指定文件的代码 先将文件包含才能执行里面的一些相关代码 比如所想进行文件的链接 数据库的查询 就可以先包含一个数据库的配置文件 再去链接的话就享有配置文件的一些配置信息 就不需要在进行相关的操
  • stegsolve图片隐写解析器的使用

    layout post title ctf 隐写图片解析器 stegsolve的使用 categories ctf tags stegsolve CTF隐写术 隐写图片解析神器 stegsolve stegsolve下载地址 http ww
  • 静态测试和动态测试相关知识点

    目 录 知识总结 5 第一章 5 第二章软件测试基础 5 第三章基于生命周期的软件测试 6 第四章软件测试的分类 6 第五章软件缺陷管理 6 第六章软件测试过程及其管理 7 静态测试 7 1
  • ubunt 上进行c++ cuda编程

    目录 概述 cmake代码 头文件代码 头文件对应的cuda代码实现 c 的代码 运行结果 参考资料 概述 首先先通过一个简单的demo来演示cuda编程是怎么进行的 cmake代码 cmake minimum required VERSI
  • 替换docker容器中的文件

    bin bash 宣告文件内的语法使用bash语法 于是当程序执行时 加载bash的相关环境配置文件 在shell脚本中 倒引号 括起来的表示要执行的命令 dirname 0 获取当前shell程序的路径 cd dirname 0 进入当前