Housekeeping

This commit is contained in:
Michael Grote 2021-03-18 08:55:51 +01:00
parent 75fc420e1c
commit 8e0880d5a6
5 changed files with 0 additions and 259 deletions

View file

@ -1,63 +0,0 @@
#funktion get-scriptdirectory definieren um den scriptpfad ermitteln
function Get-ScriptDirectory {
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}
#funktion an variable zuweisen
$scriptpfad = Get-ScriptDirectory
#hostname
$hostname_ist = $env:comput
ername
$hostname_soll = "irantu"
#ziele/quellen
$quelle1 ="\\fileserver2.grote.lan\mg\"
$ziel1="$scriptpfad\backup\mg"
$quelle2 ="\\fileserver2.grote.lan\Musik\"
$ziel2="$scriptpfad\backup\Musik"
$quelle3 ="\\fileserver2.grote.lan\amd\"
$ziel3="$scriptpfad\backup\amd"
$quelle4 ="\\fileserver2.grote.lan\backup\"
$ziel4="$scriptpfad\backup\backup"
$quelle5 ="\\fileserver2.grote.lan\Videos\Filme - ueberragende"
$ziel5="$scriptpfad\backup\Videos\Filme - ueberragende"
$quelle6 ="\\fileserver2.grote.lan\Videos\Serien - überragende"
$ziel6="$scriptpfad\backup\Videos\Serien - ueberragende"
$quelle7 ="\\fileserver2.grote.lan\bilder"
$ziel7="$scriptpfad\backup\bilder"
$quelle8 ="\\fileserver2.grote.lan\videos\Youtube"
$ziel8="$scriptpfad\backup\Videos\youtube"
# Hostname prüfen
if ($hostname_ist -eq $hostname_soll)
{
Write-Host "Host = $hostname_ist"
}
else
{
Write-Host "Falscher Host(SOLL: '$hostname_soll' IST:$hostname_ist)"
start-sleep 5
Exit 1
}
robocopy $quelle1 $ziel1 /L /MIR /R:3 /W:10 /XD "\\fileserver2.grote.lan\mg\Programme\Spiele - nicht gesichert"
robocopy $quelle2 $ziel2 /L /MIR /R:3 /W:10
robocopy $quelle3 $ziel3 /L /MIR /R:3 /W:10
robocopy $quelle4 $ziel4 /L /MIR /R:3 /W:10
robocopy $quelle5 $ziel5 /L /MIR /R:3 /W:10
robocopy $quelle6 $ziel6 /L /MIR /R:3 /W:10
robocopy $quelle7 $ziel7 /L /MIR /R:3 /W:10
robocopy $quelle8 $ziel8 /L /MIR /R:3 /W:10
#Rückgabecoce robocopy auswerten
#robocopy exit codes
#https://support.microsoft.com/en-us/help/954404/return-codes-that-are-used-by-the-robocopy-utility-in-windows-server-2
if ($lastexitcode -eq 1)
{
write-host "Keine Fehler!"
}
else
{
#`n ist newline
write-host `n`n`n`n`n`n`n`n`n`n`n`n"Es sind Fehler aufgetreten!"`n`n`n`n`n`n`n`n`n`n`n`n
start-sleep 43200
}

View file

@ -1,93 +0,0 @@
# Variablen
# Quellen als Array, Reihenfolge in beiden Arrays muss übereinstimmen
# also wenn Quelle Nr. 1 Musik bei mir ist, muss das Ziiel Nr. 1 Musik bei Papa sein
$quelle =@(
"${hostname_ag}\musik",
"${hostname_ag}\bilder",
"${hostname_ag}\dokumente",
"${hostname_ag}\backup",
"${hostname_ag}\rest"
)
# Ziele als Array, Reihenfolge in beiden Arrays muss übereinstimmen
$ziel =@(
"${hostname_mg}\musik",
"${hostname_mg}\bilder",
"${hostname_mg}\dokumente",
"${hostname_mg}\backup",
"${hostname_mg}\rest"
)
# restliche Variablen
$pfad_ag = "\\NAS.XXXXX\replikation" # wo soll beim jeweils anderen alls DARIN gespeichert werden
$pfad_mg = "\\fileserver2.grote.lan\replikation"
$zeit_countdown = 2 # ohne Anführungszeichen, sonst ist es ein String
$timestamp = get-timestamp # Ruft Funktion get-timestamp auf
$scriptpfad = Get-ScriptDirectory # setzt $scriptpfad auf den Wert von Get-ScriptDirectory
$bandwidth_ipg = 64
# Funktion: speichert den aktuellen PFad(vgl. pwd) in Get-ScriptDirectory
function Get-ScriptDirectory {
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}
# Funktion: countdown, zählt von einem Wert herunter bis 0
# der Wert $laufzeit muss übergeben werden, muss int sein, gibt länge des Countdowns an
# Bsp.: set-countdown -laufzeit $zeit_countdown oder set-countdown -laufzeit 5
function set-countdown([int]$laufzeit){
for ($laufzeit; $laufzeit -gt 0; $laufzeit--){
Start-Sleep -s 1 # wartet 1 Sekunde
write-host -ForegroundColor RED $laufzeit
}
}
# Funktion: setze Timestamp, mit Rückgabewert
function get-timestamp{
$timestamp = (get-date -Format yyyy_MM_dd__HH_mm_ss)
return $timestamp
}
# Ausgabe Pfade
write-host "===================================="
write-host "Pfad_mg: "
write-host -ForegroundColor Yellow $pfad_mg
write-host "Pfad_ag: "
write-host -ForegroundColor Yellow $pfad_ag
write-host -ForegroundColor RED "Wenn die Pfade nicht passen hier abbrechen! ("$zeit_countdown"sec/Strg+C))"
write-host "===================================="
set-countdown -laufzeit $zeit_countdown # ruft Funktion Countdown auf
# Prüfe ob Quellordner existieren
write-host "Prüfe Quellordner"
write-host "===================================="
for ($i=0; $i -lt $quelle.length; $i++){
if((Test-Path $quelle[$i]) -eq $false){
write-host -ForegroundColor RED "Quellordner:" $quelle[$i] "existiert nicht!"
Exit # beendet Script
# Zielordner erstellen
# -Force gibt keine Fehler aus falls der Ordner schon existiert(vgl. mkdir -p)
write-host "Erstelle Zielordner"
write-host "===================================="
for ($i=0; $i -lt $ziel.length; $i++){
New-Item -ItemType "directory" -Force -Path $ziel[$i]
}
# Ruft Robocopy auf
for ($i=0; $i -lt $quelle.length; $i++){
for ($i=0; $i -lt $ziel.length; $i++){
write-host "`n===================================="
write-host "Von: " $quelle[$i]"`nNach:" $ziel[$i]
write-host "===================================="
robocopy $quelle[$i] $ziel[$i] /L /MIR /R:3 /W:10 /DST /TEE /IPG:$bandwidth_ipg /UNILOG+:"$scriptpfad\$timestamp.log"
# Robocopy Params
# /DST = Kompensiert Zeitunterschiede von einer Stunde aufgrund der Sommerzeit.
# /tee = Schreibt die Status Ausgabe in das Konsolenfenster sowie in die Protokolldatei.
# /L = dry-run
# /IPG $bandwidth_ipg https://www.deviousweb.com/2018/01/09/robocopy-throttle-bandwidth/
}
}
# ToDo
# [ ] Meldung Fehler + Abbruch

View file

@ -1,103 +0,0 @@
# Quellen als Array, Reihenfolge in beiden Arrays muss übereinstimmen
# also wenn Quelle Nr. 1 Musik bei mir ist, muss das Ziiel Nr. 1 Musik bei Papa sein
$quelle =@(
# ich
"${pfad_mg}\amd",
"${pfad_mg}\bilder",
"${pfad_mg}\mg",
"${pfad_mg}\musik",
"${pfad_mg}\hm",
"${pfad_mg}\proxmox",
"${pfad_mg}\tmp",
"${pfad_mg}\backup"
)
# Ziele als Array, Reihenfolge in beiden Arrays muss übereinstimmen
$ziel =@(
#ich
"${pfad_ag}\amd",
"${pfad_ag}\bilder",
"${pfad_ag}\mg",
"${pfad_ag}\musik",
"${pfad_ag}\hm",
"${pfad_ag}\proxmox",
"${pfad_ag}\tmp",
"${pfad_ag}\backup"
)
# Funktion: speichert den aktuellen Pfad(vgl. pwd) in Get-ScriptDirectory
function Get-ScriptDirectory {
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}
# Funktion: countdown, zählt von einem Wert herunter bis 0
# der Wert $laufzeit muss übergeben werden, muss int sein, gibt länge des Countdowns an
# Bsp.: set-countdown -laufzeit $zeit_countdown oder set-countdown -laufzeit 5
function set-countdown([int]$laufzeit){
for ($laufzeit; $laufzeit -gt 0; $laufzeit--){
Start-Sleep -s 1 # wartet 1 Sekunde
write-host -ForegroundColor RED $laufzeit
}
}
# Funktion: setze Timestamp, mit Rückgabewert
function get-timestamp{
$timestamp = (get-date -Format yyyy_MM_dd__HH_mm_ss)
return $timestamp
}
# restliche Variablen
$pfad_ag = "\\192.168.3.108\replikation" # wo soll beim jeweils anderen alls DARIN gespeichert werden
$pfad_mg = "\\fileserver2.grote.lan"
$zeit_countdown = 5 # ohne Anführungszeichen, sonst ist es ein String
$timestamp = get-timestamp # Ruft Funktion get-timestamp auf
$scriptpfad = Get-ScriptDirectory # setzt $scriptpfad auf den Wert von Get-ScriptDirectory
$bandwidth_ipg = 128
# Ausgabe Pfade
write-host "===================================="
write-host "Pfad_mg: "
write-host -ForegroundColor Yellow $pfad_mg
write-host "Pfad_ag: "
write-host -ForegroundColor Yellow $pfad_ag
write-host -ForegroundColor RED "Wenn die Pfade nicht passen hier abbrechen! ("$zeit_countdown"sec/Strg+C))"
write-host "===================================="
set-countdown -laufzeit $zeit_countdown # ruft Funktion Countdown auf
# Prüfe ob Quellordner existieren
write-host "Prüfe Quellordner"
write-host "===================================="
for ($i=0; $i -lt $quelle.length; $i++){
if((Test-Path $quelle[$i]) -eq $false){
write-host -ForegroundColor RED "Quellordner:" $quelle[$i] "existiert nicht!"
Exit # beendet Script
}
}
# Zielordner erstellen
# -Force gibt keine Fehler aus falls der Ordner schon existiert(vgl. mkdir -p)
write-host "Erstelle Zielordner"
write-host "===================================="
for ($i=0; $i -lt $ziel.length; $i++){
New-Item -ItemType "directory" -Force -Path $ziel[$i]
}
# Ruft Robocopy auf
for ($i=0; $i -lt $quelle.length; $i++){
for ($i=0; $i -lt $ziel.length; $i++){
write-host "`n===================================="
write-host "Von: " $quelle[$i]"`nNach:" $ziel[$i]
write-host "===================================="
robocopy $quelle[$i] $ziel[$i] /L /MIR /R:3 /W:10 /DST /TEE /IPG:$bandwidth_ipg /UNILOG+:"$scriptpfad\$timestamp.log"
# Robocopy Params
# /DST = Kompensiert Zeitunterschiede von einer Stunde aufgrund der Sommerzeit.
# /tee = Schreibt die Status Ausgabe in das Konsolenfenster sowie in die Protokolldatei.
# /L = dry-run
# /IPG $bandwidth_ipg https://www.deviousweb.com/2018/01/09/robocopy-throttle-bandwidth/
}
}
# ToDo
# [ ] Meldung Fehler + Abbruch