我想备份过去24小时内已更改的卷上的所有文件。我希望备份文件夹保留原始文件夹的结构。我发现当我测试当前脚本时,文件夹全部放在root中。
$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"
它似乎也在复制这些文件夹中的所有文件。
我可以就此获得一些帮助吗?
答案 0 :(得分: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))
}
}