Copying open files in Power shell

2k Views Asked by At

i am new to PowerShell and i have managed to google my way to getting the following PowerShell Script together:

#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

Email Variables

 $smtp = "smudmug.mug"
 $from = "James Clegg <[email protected]>"
 $to = "James Clegg <[email protected]>"
 $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"

Backup Process started

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      "$destination\backup_log.txt"
        $attachment = "$destination\backup_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

Can someone please help me which what i need to add to allow files in use to be copied.

Kind regards,

James

1

There are 1 best solutions below

0
On

Copying files that are open in another an application is not trivial. The problem is that even if you could copy the file, there is no guarantee that the file is in usable a state. All but the most simple text files are easily corrupted. Consider the following scenario:

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

What is the desired outcome? From user's point of view, the document should contain either state before save or before it. The actual outcome, only some saved changes, is hardly correct. If the file is more complex a structure, like a spreadsheet, the result can be corrupted beyond repair.

In order to work around this kind of concurrency issue, ther are open file agents. In Windows, there is a built-in VSS (Volume Shadow Copy Service), 3rd party products exist too. The idea is to watch the file for activity and make a consistent copy when all changes are flushed to the disk. This requires co-operation from the application too. For a detailed discussion about VSS, read Technet article. Your best bet is to use an existing backup solution that already has tackled the issue.