gpt4 book ai didi

powershell - 如何识别已上传到 S3 且此后未更改的本地文件?

转载 作者:行者123 更新时间:2023-12-01 00:52:07 25 4
gpt4 key购买 nike

以下脚本从文件夹结构复制所有文件,然后将它们粘贴到 S3 存储桶。但是我希望它能够跳过自上次上传以来未更改的文件,以避免重复上传。有谁知道我如何获得文件是否存在检查或上次修改?

Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"
$bucket="bucketname"
$source="e:\dfs\*"
$outputpath="C:\temp\log.txt"
$AKey="xxxx"
$SKey="xxxx"

Set-AWSCredentials -AccessKey $AKey -SecretKey $SKey -StoreAs For_Move
Initialize-AWSDefaults -ProfileName For_Move -Region eu-west-1

Start-Transcript -path $outputpath -Force
foreach ($i in Get-ChildItem $source -include *.* -recurse)
{
if ($i.CreationTime -lt ($(Get-Date).AddDays(-0)))
{
$fileName = (Get-ChildItem $i).Name
$parentFolderName = Split-Path $i -Parent

Write-S3Object -BucketName $bucket -Key dfs/$parentFolderName/$filename -File $i
}
}

最佳答案

对于一个非常基本的“文件是否存在?”你可以用 Get-S3Object使用相同的位置,并在尝试上传之前测试每个文件。

if (!(Get-S3Object -BucketName $bucket -Key dfs/$parentFolderName/$filename)) {
Write-S3Object -BucketName $bucket -Key dfs/$parentFolderName/$filename -File $i
}

将更改日期与上次上传日期进行比较稍微复杂一些,但您可以使用更像这样的测试:
$localModified = (Get-ItemProperty -Path $fileName).LastWriteTime
$s3Modified = (Get-S3Object -BucketName $bucket -Key $file -Region us-east-1).LastModified | Get-Date

if ($s3Modified -lt $localModified) {
Write-S3Object -BucketName $bucket -Key dfs/$parentFolderName/$filename -File $i
}

关于powershell - 如何识别已上传到 S3 且此后未更改的本地文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30526101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com