148 lines
7.5 KiB
PowerShell
148 lines
7.5 KiB
PowerShell
#scriptpfad ermitteln
|
|
function Get-ScriptDirectory {
|
|
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
|
|
Split-Path $Invocation.MyCommand.Path
|
|
}
|
|
$scriptpfad = Get-ScriptDirectory
|
|
#restic variablen
|
|
### pfad zu restic, wird mit & $pfad aufgerufen
|
|
$pfad="C:\Users\mg\Desktop\NextCloud\code\restic\bin\restic.exe"
|
|
### repository
|
|
$repository="\\fileserver2.grote.lan\backup\restic"
|
|
### passwordfile
|
|
$passwordfile="C:\Users\mg\Desktop\NextCloud\code\restic\config\password.txt"
|
|
### exclude file
|
|
$excludefile="C:\Users\mg\Desktop\NextCloud\code\restic\config\exclude.txt"
|
|
|
|
#ausgabe der varriablen und einfaerben der werte mit -foregroundcolor
|
|
#`n ist zeilenumbruch
|
|
write-host "===================================="
|
|
write-host "Repository: "
|
|
write-host -ForegroundColor Yellow $repository
|
|
write-host "Pfad zu Restic: "
|
|
write-host -ForegroundColor Yellow $pfad
|
|
write-host "Passworddatei: "
|
|
write-host -ForegroundColor Yellow $passwordfile
|
|
write-host "===================================="
|
|
write-host -ForegroundColor Red "Auschluesse: "
|
|
get-content $excludefile
|
|
write-host "====================================`n`n"
|
|
|
|
do
|
|
{
|
|
write-host "===================================="
|
|
write-host "Befehl eingeben: "
|
|
Write-Host " 1 = Check`n 2 = Forget(Standard...)`n 3 = Prune`n 4 = Snapshots anzeigen`n 5 = Befehl absetzen`n 6 = unlock`n 7 = Befehlszeile ausgeben"
|
|
Write-Host " 8 = Restore - komplett`n 9 = Restore - nur bestimmte Daten`n10 = Restore - alles bis auf bestimmte Daten"
|
|
Write-Host "11 = einen Snapshot loeschen`n12 = Rebuild-Index`n13 = Statistiken - Groesse nach wiederherstellen`n14 = Statistiken - Groesse auf Storage"
|
|
Write-Host "15 = Cache leeren`n16 = Alle Snapshots eines/mehrerer Hosts löschen`n17 = mehrere Snapshots löschen`n99 = Beenden"
|
|
write-host "===================================="
|
|
$aktion = Read-Host
|
|
switch ($aktion)
|
|
# switch, default faengt alle nicht eingetragen eingaben ab
|
|
{
|
|
1 {& $pfad -r $repository --password-file $passwordfile check ; break}
|
|
2 {& $pfad -r $repository --password-file $passwordfile forget --keep-daily 7 --keep-weekly 4 --keep-monthly 1 ; break}
|
|
3 {& $pfad -r $repository --password-file $passwordfile prune ; break}
|
|
4 {& $pfad -r $repository --password-file $passwordfile snapshots ; break}
|
|
5 {
|
|
$befehl=Read-Host -Prompt "Befehl?";
|
|
& $pfad -r $repository --password-file $passwordfile $befehl;
|
|
break
|
|
}
|
|
99 {exit;break}
|
|
6 {& $pfad -r $repository --password-file $passwordfile unlock; break}
|
|
7 {
|
|
$befehl=Read-Host -Prompt "Befehl?";
|
|
write-host -nonewline $pfad -r $repository --password-file $passwordfile $befehl`n;
|
|
break
|
|
}
|
|
8 {
|
|
$snapshot = read-host -Prompt "Snapshot(latest/id)";
|
|
$target = read-host -Prompt "Zielpfad: ";
|
|
& $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target
|
|
}
|
|
9 {
|
|
$snapshot = read-host -Prompt "Snapshot(latest/id)";
|
|
$target = read-host -Prompt "Zielpfad: ";
|
|
write-host "Include: "
|
|
write-host "===================================="
|
|
write-host -Foregroundcolor red "Beispiele: "
|
|
write-host -ForegroundColor yellow "Dateitypen: *.exe`nDatei: C\Users\mg\Desktop\rclone\datei.exe`nOrdner: C\Users\mg\Desktop\rclone\"
|
|
write-host "Alles ist Case-Sensitive!"
|
|
write-host "===================================="
|
|
$include = read-host
|
|
& $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target --include $include
|
|
}
|
|
10 {
|
|
$snapshot = read-host -Prompt "Snapshot(latest/id)";
|
|
$target = read-host -Prompt "Zielpfad: ";
|
|
$exclude = read-host -Prompt "Exclude: ";
|
|
& $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target --exclude $exclude
|
|
}
|
|
11 {
|
|
$snapshot = read-host -Prompt "Snapshot(latest/id)";
|
|
& $pfad -r $repository --password-file $passwordfile forget $snapshot
|
|
}
|
|
12 {& $pfad -r $repository --password-file $passwordfile rebuild-index ; break}
|
|
13 {& $pfad -r $repository --password-file $passwordfile stats --mode restore-size ; break}
|
|
14 {& $pfad -r $repository --password-file $passwordfile stats --mode raw-data ; break}
|
|
15 {& $pfad -r $repository --password-file $passwordfile cache --cleanup ; break}
|
|
16 {
|
|
$zaehler_del_hosts_delete=0 # setzte die beiden zählvariablen
|
|
$zaehler_del_hosts_print=0
|
|
write-host "===================================="
|
|
write-host "Es wird alles bis auf jeweils einen Snapshot pro Host gelöscht."
|
|
write-host "Der letzte muss händisch gelöscht werden."
|
|
write-host "Eine leere Eingabe beendet die Abfrage der Hosts."
|
|
write-host "===================================="
|
|
|
|
$del_hosts=@() #erstellt array leer
|
|
do{ #schreibt solange die eingabe in das array bis ein leerer eintrag erfolgt
|
|
$eingabe=(Read-host "Computername eingeben...")
|
|
if ($eingabe -ne ''){
|
|
$del_hosts += $eingabe}
|
|
}until ($eingabe -eq '')
|
|
|
|
while ($zaehler_del_hosts_delete -lt $del_hosts.length){ #löscht einträge bis ende array
|
|
Write-Host $del_hosts[$zaehler_del_hosts_delete]
|
|
& $pfad -r $repository --password-file $passwordfile forget --host $del_hosts[$zaehler_del_hosts_delete] --keep-last 1
|
|
$zaehler_del_hosts_delete++
|
|
}
|
|
write-host -ForegroundColor yellow "`nDiese Snapshots muessen haendisch geloescht werden!"
|
|
while ($zaehler_del_hosts_print -lt $del_hosts.length){ # druckt rest-ids ab die zum händisch löschen benötigt werden
|
|
& $pfad -r $repository --password-file $passwordfile snapshots --host $del_hosts[$zaehler_del_hosts_print]
|
|
$zaehler_del_hosts_print++
|
|
}
|
|
}
|
|
17 {
|
|
$zaehler_del_snaps_delete=0 # setzte die beiden zählvariablen
|
|
$zaehler_del_snaps_print=0
|
|
write-host "===================================="
|
|
write-host "Eine leere Eingabe beendet die Abfrage der Snapshots."
|
|
write-host "===================================="
|
|
|
|
$del_snaps=@() #erstellt array leer
|
|
do{ #schreibt solange die eingabe in das array bis ein leerer eintrag erfolgt
|
|
$eingabe=(Read-host "Snapshots-ID eingeben...")
|
|
if ($eingabe -ne ''){
|
|
$del_snaps += $eingabe}
|
|
}until ($eingabe -eq '')
|
|
|
|
while ($zaehler_del_snaps_delete -lt $del_snaps.length){ #löscht einträge bis ende array
|
|
Write-Host $del_snaps[$zaehler_del_snaps_delete]
|
|
& $pfad -r $repository --password-file $passwordfile forget $del_snaps[$zaehler_del_snaps_delete]
|
|
$zaehler_del_snaps_delete++
|
|
}
|
|
}
|
|
default{write-host "`nUngueltige Eingabe!"}
|
|
}
|
|
#der auskommentiert absatz ist ob nochmal extra gefragt werden soll ob das script weiterausgefuehrt werden soll, entfaellt da option 99 jetzt beende ist
|
|
#write-host "===================================="
|
|
#Write-Host "Abbrechen (j/n)?"
|
|
#write-host "===================================="
|
|
#$abbrechen = read-host
|
|
}
|
|
#while($abbrechen -eq "n")
|
|
#fuehrt die schleife immer wieder aus
|
|
while (1 -eq 1)
|