正在Powershell中复制打开的文件



我是PowerShell的新手,我已经设法在谷歌上找到了以下PowerShell脚本:

#System Variable for backup Procedure
 $date = Get-Date -Format d.MMMM.yyyy
 New-PSDrive -Name "Backup" -PSProvider Filesystem -Root "\server><path>"
 $source = "\server><path>"
 $destination = "\<server><path>$date"
 $path = test-Path $destination

电子邮件变量

 $smtp = "smudmug.mug"
 $from = "James Clegg <email@email.com>"
 $to = "James Clegg <email@email.com>"
 $body = "Hi All, </br></br> Please find the back up log File for <Server>      attached.</br></br> Back up complete on $date</br></br>Kind Regards,</br></br> James"
 $subject = "Backup of <Server> is Complete $date"

备份过程已启动

if ($path -eq $true) {
write-Host "Folder Already exists"
Remove-PSDrive "Backup"  
} elseif ($path -eq $false) {
        cd backup:
        copy-Item -Recurse $source -passthru -Destination $destination
        $backup_log = Dir -Recurse $destination | out-File      "$destinationbackup_log.txt"
        $attachment = "$destinationbackup_log.txt"
        #Send an Email to User 
        send-MailMessage -SmtpServer $smtp -From $from -To $to -Subject        $subject -Attachments $attachment -Body $body -BodyAsHtml
        write-host "Backup Successful"
        cd c:
     Remove-PSDrive "Backup"  
     }
   cmd /c pause | out-null

有人能帮我添加哪些内容以允许复制正在使用的文件吗。

问候,

James

复制在另一个应用程序中打开的文件并非易事。问题是,即使您可以复制该文件,也不能保证该文件处于可用状态。除了最简单的文本文件外,其他文件都很容易损坏。考虑以下场景:

   user           backup
    |                |
 (saves doc)         |
    |                |
(write n chars)      |
    |             (read file)   
(write m chars)   (write copy)
    |                |

期望的结果是什么?从用户的角度来看,文档应该包含保存前或保存前的状态。实际结果,只有一些保存的更改,很难是正确的。如果文件是一个更复杂的结构,比如电子表格,结果可能会被损坏,无法修复。

为了解决这种并发问题,有一些开放文件代理。在Windows中,有一个内置的VSS(卷影复制服务),也存在第三方产品。其想法是监视文件的活动,并在所有更改都刷新到磁盘时制作一致的副本。这也需要申请方的合作。有关VSS的详细讨论,请阅读Technet的文章。您的最佳选择是使用已经解决该问题的现有备份解决方案。

最新更新