【问题标题】:Backup folder in PowershellPowershell 中的备份文件夹
【发布时间】:2021-04-13 05:52:15
【问题描述】:

我正在编写一个脚本来创建每日备份(任务计划)

首先我复制文件夹“source_folder”并在“bkp”文件夹中重命名所有带有时间戳的文件,当在“source_folder”中添加新文件时只需要复制最后一个文件并重命名(我尝试使用LastModified或 LastAccessTime 但当我再次运行脚本时(第二天),如果在 soruce_folder 中没有创建其他文件,则最后一个文件将被复制 有什么建议吗?

$sourceFiles = Get-ChildItem -Path $source -Recurse
$bkpFiles    = Get-ChildItem -Path $bkp -Recurse
$syncMode    = 1 

if(!(Test-Path $bkp)) {
   Copy-Item -Path $source -Destination $bkp -Force -Recurse
   Write-Host "created new folder"  
   $files = get-ChildItem -File -Recurse -Path $bkp
   foreach($file in $files){
       # Copy  files to the backup directory
       $newfilename = $file.FullName +"_"+ (Get-Date -Format yyyy-MM-dd-hhmmss)
   
       Rename-Item -path $file.FullName -NewName $newfilename
   }
}
elseif ((Test-Path $bkp ) -eq 1) {
    $timestamp1 = (Get-Date -Format yyyy-MM-dd-hhmmss)
    $timestamp = "_" + $timestamp1
    @(Get-ChildItem $source -Filter *.*| Sort LastAccessTime -Descending)[0] | % { 
        Copy-Item -path $_.FullName -destination $("$bkp\$_$timestamp") -force
    }  
    Write-Host  "most recent files added" 
}

【问题讨论】:

    标签: powershell backup


    【解决方案1】:

    基于此“(Get-ChildItem $source -Filter .|Sort LastAccessTime -Descending)[0]”,您只希望每天复制 1 个文件。听起来问题是即使没有新文件添加到 $source 脚本也会复制文件。希望我有这个权利。

    假设您的文件是定期添加的,也许您可​​以添加如下过滤器

    (Get-ChildItem $source -Filter .| 排序 LastAccessTime -Descending | ? {$_.LastAccessTime -gt $(get-date).AddDays(-1))[0] #可能想使用 LastWriteTime 或 CreationTime 代替 LastAccessTime。也可以摆弄 .AddDays - .AddMinutes、.AddHours 等。

    或者,您可以在复制之前检查您的 $bkp 文件夹以查看文件是否存在:

    @(Get-ChildItem $source -Filter *.*| Sort LastAccessTime -Descending)[0] | % { 
    #check if file exists in $bkp before copying from $source
    #"$($_.name)*" part tries to account for the file in $bkp having a timestamp appended to the name
    $x = get-childitem $bkp -recurse | ? {$_.name -like "$($_.name)*"}
    if(!$x){
        Copy-Item -path $_.FullName -destination $("$bkp\$_$timestamp") -force
    }        
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2019-12-17
      相关资源
      最近更新 更多