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
2023-11-25 17:40:35 +01:00
$repository = " \\fileserver3.mgrote.net\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
1 { & $pfad -r $repository - -password -file $passwordfile snapshots ; break }
2021-05-04 14:12:02 +02:00
2 { & $pfad -r $repository - -password -file $passwordfile stats - -mode restore-size ; break }
3 { & $pfad -r $repository - -password -file $passwordfile stats - -mode raw-data ; break }
2021-05-02 18:32:14 +02:00
4 {
2020-05-26 22:40:23 +02:00
$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-04 14:12:02 +02:00
5 {
2021-05-27 09:40:13 +02:00
$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 `n Datei: C\Users\mg\Desktop\rclone\datei.exe `n Ordner: 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
2021-05-04 14:12:02 +02:00
}
2021-05-02 18:32:14 +02:00
6 {
2020-05-26 22:40:23 +02:00
$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-04 14:12:02 +02:00
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 }
2021-05-02 18:32:14 +02:00
9 {
2020-05-26 22:40:23 +02:00
$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-04 14:12:02 +02:00
10 {
2021-05-02 18:08:49 +02:00
$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 " ======================================================================== "
2021-05-02 18:08:49 +02:00
write-host " Es wird alles bis auf jeweils einen Snapshot pro Host gelöscht. "
2020-06-15 12:56:27 +02:00
write-host " Der letzte muss händisch gelöscht werden. "
2021-05-02 18:08:49 +02:00
write-host " Eine leere Eingabe beendet die Abfrage der Hosts. "
2021-05-02 18:32:14 +02:00
write-host " ======================================================================== "
2021-05-02 18:08:49 +02:00
$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
2021-05-02 18:08:49 +02:00
$eingabe = ( Read-host " Computername eingeben... " )
if ( $eingabe -ne '' ) {
$del_hosts + = $eingabe }
} until ( $eingabe -eq '' )
2021-05-02 18:16:55 +02:00
while ( $zaehler_del_hosts_delete -lt $del_hosts . length ) { #löscht einträge bis ende array
Write-Host $del_hosts [ $zaehler_del_hosts_delete ]
2021-05-02 18:08:49 +02:00
& $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 " `n Diese Snapshots muessen haendisch geloescht werden! "
2021-05-02 18:08:49 +02:00
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 + +
}
2020-06-15 12:56:27 +02:00
}
2021-05-04 14:12:02 +02:00
11 {
2021-05-02 18:16:55 +02:00
$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 " ======================================================================== "
2021-05-02 18:16:55 +02:00
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
2021-05-02 18:16:55 +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 + +
}
}
2021-05-04 14:12:02 +02:00
12 { & $pfad -r $repository - -password -file $passwordfile check ; break }
13 { & $pfad -r $repository - -password -file $passwordfile rebuild-index ; break }
14 { & $pfad -r $repository - -password -file $passwordfile cache - -cleanup ; break }
15 { & $pfad -r $repository - -password -file $passwordfile unlock ; break }
16 {
$befehl = Read-Host -Prompt " Befehl? " ;
write-host -nonewline $pfad -r $repository - -password -file $passwordfile $befehl ` n ;
break
}
17 {
2021-05-27 09:40:13 +02:00
$befehl = Read-Host -Prompt " Befehl? " ;
& $pfad -r $repository - -password -file $passwordfile $befehl ;
break
2021-05-04 14:12:02 +02:00
}
99 { exit ; break }
2021-05-02 18:16:55 +02:00
default { write-host " `n Ungueltige 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 )