NXP芯片

cp -rf PowerShell复制文件场景模拟,实现cp -rf效果

小编 2024-11-24 NXP芯片 23 0

PowerShell复制文件场景模拟,实现cp -rf效果

powershell作为Windows的脚本语言,有时候还是需要用到的,下面就记录一下如何使用Powershell的复制功能

在powershell中,复制的命令是:

Copy-Item

下面就演示一下相关场景下的使用

1、复制单文件

语法如下:

Copy-Item <源文件> <备份文件>

例如:

Copy-Item .\Y.ico X.ico

2、复制相同后缀的文件到另一个文件夹

这个需要使用通配符:

*

语法:

Copy-Item *.<后缀名> <新的文件夹>

例如:

Copy-Item *.ico .\ico\

复制ico后缀名的文件到ico文件夹

3、复制文件夹及递归目录、文件

也就是linux上

cp -rf

的一个功能,语法如下:

Copy-Item <源文件夹> <新文件夹> -recurse -force

例如:

Copy-Item .\ico\ ico_bak -recurse -force

实现cp -rf效果

为啥写这篇文章

因为太多垃圾教程了,不得不写,例如:

下面这个一看就是直接谷歌翻译的

还有这种花里胡哨的,排版又乱,复制个文件还得上个函数

如果不是他们写的教程太难看,我又何必来写呢

主机基础设施如何使用 Zadig 做持续交付

Zadig 提供了面向容器运行时环境、大规模微服务的云原生持续交付方案,被企业广泛采用,但在企业实际运用过程中,还存在部分服务无法接入的情况,对运维统一化管理造成不便。

常见的无法接入的情况:一部分服务暂时不便于迁移容器或不打算迁移虚拟机/主机部署;或基础设施本身是可网络互通的设备,比如 IoT 物联网场景下自动驾驶车辆主机端,工厂可连接设备等。目前该场景已在小鹏自动驾驶、理想云平台有成熟稳定的应用。

下面我们以 vm-microservice-demo 项目的后端服务 + 基础设施为主机场景为例,来阐述以上场景如何在 Zadig 中实现持续交付。下文会介绍两种常见的接入方式:

方式一:目标部署主机和 Zadig 连通,直接将服务部署到目标主机

方式二:通过堡垒机(一般也称为跳板机)和 Zadig 连通,在堡垒机上将服务部署到目标主机

项目基本配置

配置主机

系统管理员访问 系统设置 -> 主机管理 -> 新建,填写主机信息后保存即可。主机资源可以是目标部署主机或堡垒机。

创建项目和服务

以 vm-microservice-demo 项目为例,该项目包含 Vue.js 前端服务 frontend 和 Golang 后端服务 backend,共包括 dev 和 qa 2 个环境。案例源码位于:koderover/zadig/microservice-demo [1],相关文件说明如下:

zadig/examples/microservice-demo├── backend # 后端服务源码├── frontend # 前端服务源码└── vm # 部署相关配置 ├── ansible # 使用 ansible 工具部署的相关配置 │ ├── ansible.Dockerfile # 包含 ansible 工具的镜像 Dockerfile │ └── hosts-dev # 部署 dev 环境的主机信息,端口 22 已开放,可使用 ansible 批量操作 │ └── hosts-qa # 部署 qa 环境的主机信息,端口 22 已开放,可使用 ansible 批量操作 └── restart.sh # backend 服务部署脚本

系统管理员新建主机项目 vm-microservice-demo。

在项目初始化向导第二步中,点击 + 按钮添加服务,填写服务名称 backend。

接下来为 backend 服务配置构建和部署以便后续使用工作流对其进行交付。对于不同的接入方式配置有所不同,下面分开介绍。

方式一:直接部署服务至目标主机

适用:目标主机和 Zadig 连通,使用自动化运维工具快速实现部署相关操作。

部署架构

准备工作

在 Zadig 中支持部署工具:以 ansible 为例,Dockerfile 位于案例源码的 vm/ansible/ansible.Dockerfile 文件中,参考 构建镜像 | Zadig 文档 [2] 新增自定义镜像 ansible:amd64。

构建配置

构建配置说明:

操作系统:ansible:amd64

依赖的软件包:go 1.12.9

代码信息:koderover/zadig

添加二进制包存储步骤,存储路径为 $WORKSPACE/backend/$PKG_FILE

通用构建脚本:见如下代码段

#!/bin/bashset -exif [ -e $WORKSPACE/backend ]; then rm -rf $WORKSPACE/backendficp -r $WORKSPACE/zadig/examples/microservice-demo/backend $WORKSPACE/backendcp -rf $WORKSPACE/zadig/examples/microservice-demo/vm/ansible $WORKSPACE/backendcp $WORKSPACE/zadig/examples/microservice-demo/vm/restart.sh $WORKSPACE/backend/restart.shcd $WORKSPACE/backendchmod +x restart.shmake build-backendtar cvf $PKG_FILE backend restart.sh

部署配置

选择本地直连部署,部署脚本如下:

#!/bin/bashset -excd $WORKSPACE/backendansible-playbook main.yaml --extra-vars PKG_FILE=$ARTIFACT -i hosts-${ENV_NAME} -v

方式一:通过堡垒机部署服务至目标主机

适用:对主机服务器有更高的安全审计要求(比如主机在内网),在堡垒机上完成服务部署相关操作,堡垒机和 Zadig 连通。结合一些自动化运维工具将服务部署到目标主机上。

部署架构

构建配置

构建配置说明:

操作系统:ubuntu 20.04

依赖的软件包:go 1.12.9

代码信息:koderover/zadig

添加二进制包存储步骤,存储路径为 $WORKSPACE/backend/$PKG_FILE

通用构建脚本:见如下代码段

#!/bin/bashset -exif [ -e $WORKSPACE/backend ]; then rm -rf $WORKSPACE/backendficp -r $WORKSPACE/zadig/examples/microservice-demo/backend $WORKSPACE/backendcp $WORKSPACE/zadig/examples/microservice-demo/vm/restart.sh $WORKSPACE/backend/restart.shcd $WORKSPACE/backendchmod +x restart.shmake build-backendtar cvf $PKG_FILE backend

部署配置

使用 SSH Agent 远程部署并选择堡垒机,部署脚本如下:

本例中用于 ansible 部署的相关配置文件位于堡垒机 ~/ansible 目录下,请根据实际情况调整。

#!/bin/bashset -ex# 将构建产物复制到堡垒机上scp -P $kr_jumpbox_server_PORT -i $kr_jumpbox_server_PK $ARTIFACT $kr_jumpbox_server_USERNAME@$kr_jumpbox_server_IP:/home/ubuntu/microservice-demo/$ARTIFACT# SSH 登录到堡垒机上,在堡垒机上做服务部署if [ $ENV_NAME = "dev" ]; then ssh -i $kr_jumpbox_server_PK $kr_jumpbox_server_USERNAME@$kr_jumpbox_server_IP 'cd ~/ansible; ansible-playbook main.yml -i hosts/evm/hosts-dev'elif [ $ENV_NAME = "qa" ]; then ssh -i $kr_jumpbox_server_PK $kr_jumpbox_server_USERNAME@$kr_jumpbox_server_IP 'cd ~/ansible; ansible-playbook main.yml -i hosts/evm/hosts-qa'fi

工程师如何使用

配置完毕后,系统会自动创建 2 套环境和 3 条工作流,日常使用中,可以执行工作流部署服务:

编辑工作流,配置 Webhook 触发器,当触发事件发生时会自动执行工作流部署服务:

更多最佳实践

对于更复杂的服务构建配置,可参考 构建镜像 | Zadig 文档 [2]将依赖的工具放进自定义镜像中,缩短构建所需时间。

参考 构建缓存 | Zadig 文档 [3]配置构建缓存,提高构建运行效率,加速服务更新。

参考链接:

[1] https://github.com/koderover/zadig/tree/main/examples/microservice-demo

[2] https://docs.koderover.com/zadig/v1.13.0/settings/custom-image/

[3] https://docs.koderover.com/zadig/v1.13.0/workflow/cache/

Zadig,让工程师更专注创造。赢《致匠心 - 基于 Zadig 落地云原生 DevOps 行业案例 & 故事集 》:

相关问答

redhatlinux下cp-rf的-rf详细意思是?-137****0364的回...

redhatlinux下cp-rf的-rf意思是强制递归复制。-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-f:覆盖已经存在的目标文...

mac下没法复制文件到/lib目录-ZOL问答

sudocp-rf源文件(或文件夹)/lib/目标文件(或文件夹)输入命令后会提示你输入密码,然后输入你的密码就可以了因为网吧做了下载限制,不让你下载东西(避免误下...

linux如何将搜出来的文件全部拷贝到另一个文件夹?

cp-Rf/home/user1/*/root/temp/将/home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。即格式为:cp-Rf原路径/目的路径/cp-...

linux想把mnt的u盘的文件复制到home目录下肿么复制-ZOL问答

cp-rf/mnt/*/home/tmp/将/mnt的所有的文件复制到/home/tmp文件下,前提是/tmp目录存在。如不存在可以mkdir-p/home/tmp你用root用户操作...

linuxcp指令如何复制‘修改时间为一天内的文件’到某个文...

find/yourdir-mtime-1-typef-execcp{}/destdir\;搜索root/a目录下的所有.c文件并将它们移至root/b文件夹:findroo...

胆结石,胆总管结石手术后一直疼痛,安了支架还是疼痛已有三...

有RFCP留下的癜痕?请问是这些原因造成的疼痛吗?应该做什么样的手术才可以信任?

Linux命令又多又杂,新手该如何分类?

cp命令cp是copy的缩写。复制文件或文件夹。cat命令cat是concatenate的缩写。读取文件内容rm命令rm是remove的缩写。用于删除文件或文件夹。常用参数-r....

疑犯追踪里的男男cp名是什么,有他们两的贴吧吗?吧名叫什么?

RF,他俩貌似没贴吧,想看同人文的话随缘居那里有不少,搜RF和POIRF,他俩貌似没贴吧,想看同人文的话随缘居那里有不少,搜RF和POI

大金空调如何分辨几匹?

大金空调多联机的外机匹数的话看型号中间的数字代表匹数,只是约等于,实际匹数要大。举例:大金多联机VRV—P系列,外机型号RPZQ4AAV中间的4代表的是匹数,实际...

Linux批量拷贝命令,把文件1拷贝到当前目录所有文件夹里头去-...

foriin`find.-typed-print`docpfile1$idonerm-rf目录名会把目录名的文件夹删掉,建议使用:rm-rf目录名/*以保留目录...

猜你喜欢