restic/Befehle.ps1

167 lines
8.6 KiB
PowerShell
Raw Normal View History

2020-04-14 19:51:48 +02:00
#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
2021-04-23 08:49:49 +02:00
$pfad="C:\Users\mg\Desktop\NextCloud\code\restic\bin\restic.exe"
2020-04-14 19:51:48 +02:00
### repository
2020-07-19 12:52:04 +02:00
$repository="\\fileserver2.grote.lan\backup\restic"
2020-04-14 19:51:48 +02:00
### passwordfile
2021-04-23 08:49:49 +02:00
$passwordfile="C:\Users\mg\Desktop\NextCloud\code\restic\config\password.txt"
2020-04-14 19:51:48 +02:00
### exclude file
2021-04-23 08:49:49 +02:00
$excludefile="C:\Users\mg\Desktop\NextCloud\code\restic\config\exclude.txt"
2020-04-14 19:51:48 +02:00
2020-05-11 10:38:20 +02:00
#ausgabe der varriablen und einfaerben der werte mit -foregroundcolor
2020-04-14 19:51:48 +02:00
#`n ist zeilenumbruch
2021-05-02 18:32:14 +02:00
write-host "========================================================================"
2020-04-26 19:01:26 +02:00
write-host "Repository: "
2020-04-14 19:51:48 +02:00
write-host -ForegroundColor Yellow $repository
2020-04-26 19:01:26 +02:00
write-host "Pfad zu Restic: "
2020-04-14 19:51:48 +02:00
write-host -ForegroundColor Yellow $pfad
2020-04-26 19:01:26 +02:00
write-host "Passworddatei: "
2020-04-14 19:51:48 +02:00
write-host -ForegroundColor Yellow $passwordfile
2021-05-02 18:32:14 +02:00
write-host "========================================================================"
2020-05-11 10:38:20 +02:00
write-host -ForegroundColor Red "Auschluesse: "
2020-04-14 19:51:48 +02:00
get-content $excludefile
2021-05-02 18:32:14 +02:00
write-host "========================================================================`n`n"
2020-04-14 19:51:48 +02:00
2020-04-26 19:01:26 +02:00
do
2020-04-14 19:51:48 +02:00
{
2021-05-02 18:32:14 +02:00
write-host " 1 = Snapshots anzeigen"
write-host "========================================================================"
write-host " 2 = Statistiken - Groesse nach wiederherstellen"
write-host " 3 = Statistiken - Groesse auf Storage"
write-host "========================================================================"
write-host " 4 = Restore - komplett"
write-host " 5 = Restore - nur bestimmte Daten"
write-host " 6 = Restore - alles bis auf bestimmte Daten"
write-host "========================================================================"
write-host " 7 = Forget(Standard...)"
write-host " 8 = Prune"
write-host "========================================================================"
write-host " 9 = einen Snapshot loeschen"
write-host "10 = Alle Snapshots eines/mehrerer Hosts löschen"
write-host "11 = mehrere Snapshots löschen"
write-host "========================================================================"
write-host "12 = Check"
write-host "13 = Rebuild-Index"
write-host "14 = Cache leeren"
write-host "15 = unlock"
write-host "========================================================================"
write-host "16 = Befehlszeile ausgeben"
write-host "17 = Befehl absetzen"
write-host "99 = Beenden"
write-host "========================================================================"
2020-04-14 19:51:48 +02:00
$aktion = Read-Host
switch ($aktion)
2020-05-11 10:38:20 +02:00
# switch, default faengt alle nicht eingetragen eingaben ab
2020-04-14 19:51:48 +02:00
{
2021-05-02 18:32:14 +02:00
14 {& $pfad -r $repository --password-file $passwordfile check ; break}
7 {& $pfad -r $repository --password-file $passwordfile forget --keep-daily 7 --keep-weekly 4 --keep-monthly 1 ; break}
8 {& $pfad -r $repository --password-file $passwordfile prune ; break}
1 {& $pfad -r $repository --password-file $passwordfile snapshots ; break}
2020-04-26 19:01:26 +02:00
5 {
$befehl=Read-Host -Prompt "Befehl?";
2020-04-26 19:01:26 +02:00
& $pfad -r $repository --password-file $passwordfile $befehl;
2020-04-14 19:51:48 +02:00
break
}
99 {exit;break}
2021-05-02 18:32:14 +02:00
17 {& $pfad -r $repository --password-file $passwordfile unlock; break}
18 {
$befehl=Read-Host -Prompt "Befehl?";
write-host -nonewline $pfad -r $repository --password-file $passwordfile $befehl`n;
2020-04-14 19:51:48 +02:00
break
2020-04-26 19:01:26 +02:00
}
2021-05-02 18:32:14 +02:00
4 {
$snapshot = read-host -Prompt "Snapshot(latest/id)";
$target = read-host -Prompt "Zielpfad: ";
2020-04-26 19:01:26 +02:00
& $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target
2020-04-14 19:51:48 +02:00
}
2021-05-02 18:32:14 +02:00
19 {
$snapshot = read-host -Prompt "Snapshot(latest/id)";
$target = read-host -Prompt "Zielpfad: ";
2020-04-14 19:51:48 +02:00
write-host "Include: "
2021-05-02 18:32:14 +02:00
write-host "========================================================================"
2020-04-14 19:51:48 +02:00
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!"
2021-05-02 18:32:14 +02:00
write-host "========================================================================"
2020-04-14 19:51:48 +02:00
$include = read-host
& $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target --include $include
}
2021-05-02 18:32:14 +02:00
6 {
$snapshot = read-host -Prompt "Snapshot(latest/id)";
$target = read-host -Prompt "Zielpfad: ";
$exclude = read-host -Prompt "Exclude: ";
2020-04-14 19:51:48 +02:00
& $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target --exclude $exclude
}
2021-05-02 18:32:14 +02:00
9 {
$snapshot = read-host -Prompt "Snapshot(latest/id)";
2020-04-14 19:51:48 +02:00
& $pfad -r $repository --password-file $passwordfile forget $snapshot
}
2021-05-02 18:32:14 +02:00
15 {& $pfad -r $repository --password-file $passwordfile rebuild-index ; break}
2 {& $pfad -r $repository --password-file $passwordfile stats --mode restore-size ; break}
3 {& $pfad -r $repository --password-file $passwordfile stats --mode raw-data ; break}
16 {& $pfad -r $repository --password-file $passwordfile cache --cleanup ; break}
12 {
$zaehler_del_hosts_delete=0 # setzte die beiden zählvariablen
$zaehler_del_hosts_print=0
2021-05-02 18:32:14 +02:00
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."
2021-05-02 18:32:14 +02:00
write-host "========================================================================"
$del_hosts=@() #erstellt array leer
2021-05-02 18:16:42 +02:00
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++
}
2021-05-02 18:32:14 +02:00
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++
}
}
2021-05-02 18:32:14 +02:00
13 {
$zaehler_del_snaps_delete=0 # setzte die beiden zählvariablen
$zaehler_del_snaps_print=0
2021-05-02 18:32:14 +02:00
write-host "========================================================================"
write-host "Eine leere Eingabe beendet die Abfrage der Snapshots."
2021-05-02 18:32:14 +02:00
write-host "========================================================================"
2020-04-14 19:51:48 +02:00
$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!"}
2020-04-14 19:51:48 +02:00
}
2020-05-11 10:38:20 +02:00
#der auskommentiert absatz ist ob nochmal extra gefragt werden soll ob das script weiterausgefuehrt werden soll, entfaellt da option 99 jetzt beende ist
2021-05-02 18:32:14 +02:00
#write-host "========================================================================"
2020-04-14 19:51:48 +02:00
#Write-Host "Abbrechen (j/n)?"
2021-05-02 18:32:14 +02:00
#write-host "========================================================================"
2020-04-14 19:51:48 +02:00
#$abbrechen = read-host
}
#while($abbrechen -eq "n")
2020-05-11 10:38:20 +02:00
#fuehrt die schleife immer wieder aus
2020-04-14 19:51:48 +02:00
while (1 -eq 1)