1

我想备份过去 24 小时内更改过的卷上的所有文件。我希望备份文件夹保持原始文件夹结构。我发现当我测试我当前的脚本时,这些文件夹都放在根目录下。

$today = Get-Date -UFormat "%Y-%m-%d"

$storage="D:\"
$backups="E:\"
$thisbackup = $backups+$today

New-Item -ItemType Directory -Force -Path $thisbackup
foreach ($f in Get-ChildItem $storage -recurse)
{
    if ($f.LastWriteTime -lt ($(Get-Date).AddDays(-1)))
    {
        Copy-Item $f.FullName -Destination $thisbackup -Recurse
    }
}
Write-Host "The backup is complete"

它似乎也在复制这些文件夹中的所有文件。

我能得到一些帮助吗?

4

1 回答 1

2
if ($f.LastWriteTime -lt ($(Get-Date).AddDays(-1)))

应该

if ($f.LastWriteTime -gt ($(Get-Date).AddDays(-1)))

您的文件夹都放在根目录中,因为您通过递归获取所有项目Get-Childitem

以下应该有效:

#copy folder structure
robocopy $storage $thisbackup /e /xf *.*

foreach ($f in Get-ChildItem $storage -recurse -file)
{
    if ($f.LastWriteTime -gt ($(Get-Date).AddDays(-1)))
    {
    Copy-Item $f.FullName -Destination $thisbackup$($f.Fullname.Substring($storage.length))
    }
}
于 2015-05-07T00:06:20.083 回答