发布新构建至本地服务器前,如何用Azure CI/CD的CopyFileTask@2备份文件夹
使用Copy Files v2任务完成指定路径的归档备份
步骤1:生成符合要求的日期变量
因为目标路径需要按YYYY\DDMMYYYY的日期结构归档,首先要生成对应的日期变量:
- 如果用PowerShell脚本生成(适合在Pipeline中前置执行):
$currentDate = Get-Date # 生成年份变量(如2024) Write-Host "##vso[task.setvariable variable=year;]$($currentDate.Year)" # 生成DDMMYYYY格式的日期变量(如11062024) Write-Host "##vso[task.setvariable variable=dateFolder;]$($currentDate.ToString('ddMMyyyy'))" - 也可以直接用Azure DevOps内置的变量表达式(无需额外脚本):
- 年份变量:
$[formatDateTime(variables['System.Date'], 'yyyy')] - 日期文件夹变量:
$[formatDateTime(variables['System.Date'], 'ddMMyyyy')]
- 年份变量:
步骤2:配置Copy Files v2任务
直接在Pipeline中添加CopyFileTask@2任务,按需求填写参数:
- SourceFolder:填写要备份的源路径
D:\Applications\wwwroot\Example - Contents:填
**表示递归复制源文件夹下所有文件和子目录;如果只需要特定文件,可写匹配规则(如*.dll) - TargetFolder:用变量拼接目标路径:
D:\Applications\test-backup\Example-backup\$(year)\$(dateFolder) - 可选参数按需配置:
OverWrite:设为true可覆盖目标路径中已存在的同名文件PreserveTimestamp:设为true保留文件原始时间戳Recursive:设为true确保所有子目录内容被复制
完整的YAML配置示例:
- task: CopyFiles@2 displayName: '备份Example文件夹' inputs: SourceFolder: 'D:\Applications\wwwroot\Example' Contents: '**' TargetFolder: 'D:\Applications\test-backup\Example-backup\$(year)\$(dateFolder)' OverWrite: true PreserveTimestamp: true Recursive: true
注意事项
- 确保执行任务的账号对源文件夹有读取权限,对目标路径有写入权限
- 目标路径不存在时,任务会自动创建所有层级的文件夹
- 若需要验证备份结果,可在任务后添加PowerShell脚本检查目标文件夹内容
内容的提问来源于stack exchange,提问作者RahulKumar Surati
相关产品推荐
相关产品推荐

