windows - 将最新修改的日志文件从一台服务器复制并粘贴到另一台服务器(服务器位于不同的域中)
问题描述
我正在尝试编写一个脚本,将最新修改的日志文件从一台服务器复制到另一台服务器(服务器位于不同的域中),同时复制它应该检查凭据然后执行脚本。
请让我知道脚本是否正确或需要进行任何更正。
$sourcePath = 'sourcepath'
$destPath = 'Destinationpath'
$compareDate = (Get-Date).AddDays(-1);
$LastFileCaptured = Get-ChildItem -Path $sourcePath |
where {$_.Extension.EndsWith('.log') -and $_.LastWriteTime -gt $compareDate } |
Sort LastAccessTime -Descending |
select -First 1 |
select -ExcludeProperty Name, LastAccessTime
Write-Host $LastFileCaptured.Name
$LastFileCaptured.LastAccessTime
$LastFileCaptured = Get-ChildItem -Recurse |
Where-Object{$_.LastWriteTime.AddDays(-1) -gt (Get-Date)}
Write-Host $LastFileCaptured
Get-ChildItem $sourcePath -Recurse -Include '.log' | Where-Object {
$_.LastWriteTime.AddDays(-1).ToString("yyyy/MM/dd") -gt (get-date).ToString("yyyy/mm/dd")
} | ForEach-Object {
$destDir = Split-Path ($_.FullName -replace [regex]::Escape($sourcePath), $destPath)
if (!(Test-Path $destDir)) {
New-Item -ItemType directory $destDir | Out-Null
}
Copy-Item $_ -Destination $destDir
}
解决方案
您的脚本的“正确性”很容易通过运行它来确定!但是,虽然这不是一个直接的答案,但我建议使用robocopy来完成这项任务。
特别注意这些选项:
- /mon:监视源,当检测到超过 N 的更改时再次运行。
- /maxage:指定最大文件年龄(排除超过 N 天或日期的文件)。
推荐阅读
- php - 应用程序在 php mvc 项目中仅加载一个(默认)控制器?
- c - 为什么浮点数和 int 的加法结果是浮点数?
- node.js - Docker Image 似乎没有安装所有 NPM 依赖项
- python - 为什么 pip 安装过程卡在“安装收集的包”步骤?
- pytorch - PyTorch VAE 无法转换为 onnx
- azure-logic-apps - 我如何从逻辑应用程序中读取 CloudQueueMessage.DequeueCount
- python - 从 CSV 列表中选择到表中
- spring-integration - 无法在 Spring Integration Flow 的建议中删除文件资源
- python - 谷歌 colab python3 名称 cv2 未定义
- node.js - 如何在 node-oidc-provider 中重定向失败的登录尝试