Я пишу свой собственный скрипт резервного копирования для резервного копирования некоторых (но не всех) каталогов с моего компьютера.На данный момент список каталогов запрограммирован в моем файле сценариев (powershell), но идеальным способом был бы список внешних файлов.
Это то, что у меня есть до сих пор.
Clear-Host
$host.ui.RawUI.WindowTitle = "Backup script"
# get drive name
$driveName="smrbackup"
if ($backupDrive=(Get-PSDrive | Where-Object {$_.Description -eq $driveName}).root) {
write-host "found drive"
}
else {
write-error "no backup drive"
exit 1
}
$destFolder="robackup"
$dest=Join-Path -Path $backupDrive -ChildPath $destFolder
Write-host "backup destination is $dest"
# robocopy parameters
# /MIR Spiegelt eine Verzeichnisstruktur und löscht Dateien, die in der Quelle gelöscht wurden
# /V verbose output
# /DCOPY:T kopiert Verzeichnistimestamp
$parameters = @("/MIR", "/NP", "/R:3", "/W:2", "/FFT", "/MT:16")
$shutdown= Read-Host "`r`nshutdown after backup? (j/n/q = quit)"
if ($shutdown -eq "j") {
"Der Computer wird nach dem Backup heruntergefahren!"
}
elseif ($shutdown -eq "q"){
exit 0
}
cd c:\
# Liste aller zu kopierenden Verzeichnisse
"users\Stefan M\Documents",
"users\Stefan M\Desktop",
"users\Stefan M\Downloads",
"users\Stefan M\Music",
"users\Stefan M\VirtualBox VMs",
"MESS" | % { robocopy $_ ($dest + "/" + $_) $parameters }
Некоторые вопросы:
- Я нашел последнюю строку (pipe и команду) в интернете, и она, кажется, работает.Может ли кто-нибудь объяснить мне, что здесь происходит?
- с помощью rsync. Я могу сделать все каталоги за один раз rsync, и после резервного копирования у меня есть сводная информация о том, сколько файлов было скопировано и произошли ошибки.С помощью приведенной выше строки Robocopy запускается для каждого каталога, поэтому я не вижу, была ли скопирована предыдущая папка или произошла ошибка.Как я могу получить сводку всех папок в конце?
Для 2 я мог бы построить что-то с помощью цикла for, но как я могу увидеть общий результат копирования?Что-нибудь более изящное, чем сбор кодов выхода?
Cheers, Stefan
edit: я нашел эту строку, чтобы использовать список файлов.Таким образом, остающийся вопрос заключается в том, как я могу получить итоговую сводку после всех прогонов робокопии?
cd c:\
gc "c:\Users\Stefan Mayrhofer\Documents\script\backup-src.txt" | % { robocopy $_ ($dest + "/" + $_) $parameters }