Datenarchivierungssoftware gesucht
Hallo zusammen,
ich bin derzeit auf der Suche nach einer Software, mit der es möglich ist automatisiert
Dateien, welche älter als X Jahre/Monate sind, auf ein externes Storage zu verschieben/archivieren.
Das Ganze soll so ablaufen:
Die Software scannt das Hochverfügbarkeitslaufwerk nach Dateien, die eine gewisse Zeit lang
nicht angefasst wurden. Diese Dateien werden dann auf ein anderes Laufwerk verschoben/archiviert,
und es soll ein Shortcut am Originalort erstellt werden, durch welchen man auf das Archivlaufwerk
weitergeleitet wird (damit trotzdem noch auf alle Dateien ohne Probleme zugegriffen werden kann).
Hat jemand von euch so etwas schon einmal eingerichtet?
Wenn ja, habt ihr Vorschläge was für eine Software man dafür benutzen könnte?
Es soll keine Kombination aus Hard- und Software sein, die Hardware habe ich bereits,
fehlt also nur die Software.
Zusammengefasst, das sind die Kriterien bzw. Anforderungen:
Gesucht ist eine Software, die ich so konfigurieren kann, dass:
- 1x die Woche ein/oder mehrere Laufwerke gescannt werden
- erkannt wird welche Dateien seit X Monaten nicht mehr berührt wurden
- alte Dateien auf ein anderes Storage (das Archivlaufwerk) verschiebt werden
- an der Stelle, wo die Dateien ursprünglich lagen, eine Verknüpfung erstellt wird, durch die man zum Archiv weitergeleitet wird
- Das Ganze soll vollautomatisch passieren, ohne, dass man 1x die Woche einen Scan starten muss..
Danke euch im Voraus!
ich bin derzeit auf der Suche nach einer Software, mit der es möglich ist automatisiert
Dateien, welche älter als X Jahre/Monate sind, auf ein externes Storage zu verschieben/archivieren.
Das Ganze soll so ablaufen:
Die Software scannt das Hochverfügbarkeitslaufwerk nach Dateien, die eine gewisse Zeit lang
nicht angefasst wurden. Diese Dateien werden dann auf ein anderes Laufwerk verschoben/archiviert,
und es soll ein Shortcut am Originalort erstellt werden, durch welchen man auf das Archivlaufwerk
weitergeleitet wird (damit trotzdem noch auf alle Dateien ohne Probleme zugegriffen werden kann).
Hat jemand von euch so etwas schon einmal eingerichtet?
Wenn ja, habt ihr Vorschläge was für eine Software man dafür benutzen könnte?
Es soll keine Kombination aus Hard- und Software sein, die Hardware habe ich bereits,
fehlt also nur die Software.
Zusammengefasst, das sind die Kriterien bzw. Anforderungen:
Gesucht ist eine Software, die ich so konfigurieren kann, dass:
- 1x die Woche ein/oder mehrere Laufwerke gescannt werden
- erkannt wird welche Dateien seit X Monaten nicht mehr berührt wurden
- alte Dateien auf ein anderes Storage (das Archivlaufwerk) verschiebt werden
- an der Stelle, wo die Dateien ursprünglich lagen, eine Verknüpfung erstellt wird, durch die man zum Archiv weitergeleitet wird
- Das Ganze soll vollautomatisch passieren, ohne, dass man 1x die Woche einen Scan starten muss..
Danke euch im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 265015
Url: https://administrator.de/forum/datenarchivierungssoftware-gesucht-265015.html
Ausgedruckt am: 01.05.2025 um 20:05 Uhr
8 Kommentare
Neuester Kommentar

Moin,
das lässt sich einfach mit Powershell realisieren. Einfach nach Files älter als x Monate filtern, dann diese Files verschieben und mit der Win32 Funktion CreateSymbolicLink durch einen Softlink ersetzen.
Scriptingaufwand keine 20 Minuten ...
Das ganze dann in den Taskplaner gepackt und jede Woche einmal automatisch ausgeführt.
Gruß jodel32
das lässt sich einfach mit Powershell realisieren. Einfach nach Files älter als x Monate filtern, dann diese Files verschieben und mit der Win32 Funktion CreateSymbolicLink durch einen Softlink ersetzen.
Scriptingaufwand keine 20 Minuten ...
Das ganze dann in den Taskplaner gepackt und jede Woche einmal automatisch ausgeführt.
Gruß jodel32
Zitat von @114757:
das lässt sich einfach mit Powershell realisieren. Einfach nach Files älter als x Monate filtern, dann diese Files
verschieben und mit der Win32 Funktion CreateSymbolicLink durch einen Softlink ersetzen.
Scriptingaufwand keine 20 Minuten ...
Das ganze dann in den Taskplaner gepackt und jede Woche einmal automatisch ausgeführt.
Hallo fabkstn,das lässt sich einfach mit Powershell realisieren. Einfach nach Files älter als x Monate filtern, dann diese Files
verschieben und mit der Win32 Funktion CreateSymbolicLink durch einen Softlink ersetzen.
Scriptingaufwand keine 20 Minuten ...
Das ganze dann in den Taskplaner gepackt und jede Woche einmal automatisch ausgeführt.
um dem ganzen dann mal etwas Form anhand von Code zu verleihen, hier eine mögliche Powershell-Variante für dein Vorhaben:
(In Zeilen 1-8 legt man die Variablen fest Quell-Ordner/Archiv-Ordner/Tage nach denen archiviert wird)
Für das ermitteln der Aktivität wird im Beispiel das Änderungsdatum der Dateien herangezogen.
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# Quell Ordner
$quelle = '\\server\quelle'
# Archiv-Ordner
$ziel = '\\storage\archiv'
# Dateien älter als X Tage archivieren
[int]$olderthan = 365
# <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# Funktion zum erstellen eines symbolischen Links
function New-Softlink {
param
(
[Parameter(Mandatory=$true)]$symlinkpath,
[Parameter(Mandatory=$true)]$targetpath,
[Parameter()][switch]$dir
)
$code = '
[DllImport("Kernel32.dll")]
public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
'
Add-Type -MemberDefinition $code -Name Links -Namespace Utils
if ($dir){$type = 1}else{$type= 0}
[Utils.Links]::CreateSymbolicLink($symlinkpath,$targetpath,$type) | out-null
}
# log arrays
$log = @(); $errorlog = @()
# Ziel-Ordner erstellen falls nicht existiert
if(!(Test-Path $ziel)){md $ziel -Force | out-null}
# Quelle rekursiv nach älteren Dateien druchsuchen
dir $quelle -Recurse | ?{!$_.PSIsContainer -and $_.LastWriteTime -lt (get-date).AddDays(-$olderthan)} | %{
$origPath = $_.FullName
# Zielpfad erstellen
$targetFilePath = $origPath.Replace($quelle,$ziel)
# Zielpfad im Archiv
$targetPath = Split-Path $targetFilePath -Parent
# Zielordner erstellen falls noch nicht existiert
if(!(Test-Path $targetPath)){md $targetPath -Force | out-null}
Try{
# Datei verschieben
move-item $origPath $targetFilePath -Force -ErrorAction Stop
# Symlink zur Datei erstellen
New-Softlink $_.Fullname $targetFilePath
$log += new-Object PSObject -Property @{"Quellpfad"=$origPath;"Zielpfad"=$targetFilePath;}
}catch{
$errorlog += new-Object PSObject -Property @{"Quellpfad"=$origPath;"Zielpfad"=$targetFilePath;"Fehler"=$_.exception.message}
}
}
if ($log){
write-host "Folgende Dateien wurden archiviert und durch einen symbolischen Link ersetzt:" -ForegroundColor Green
$log | ft -AutoSize -Wrap
}else{
write-host "In diesem Durchlauf wurden keine Dateien archiviert." -ForegroundColor Yellow
}
if ($errorlog){
write-host "Bei folgenden Dateien ist ein Fehler beim Archivieren aufgetreten" -ForegroundColor Red
$errorlog | ft -AutoSize -Wrap
}
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Für den Fall das du noch nie etwas mit Powershell zu tun hattest und nicht weißt wie man damit umgeht und diese startet, hier noch eine kurze Einweisung:
Anleitung: Wie starte ich Powershell-Scripte
- Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
- Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl
Set-ExecutionPolicy RemoteSigned -Force
ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden:Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
- Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
- Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Pfad\Script.ps1"
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:"C:\Pfad\script.ps1"
.\script.ps1
Starten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
powershell -?
in einer Konsole an.
Starten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Zitat von @fabkstn:
Was ich mich nun frage ist, könnte man theoretisch auch noch einbauen, dass die Log bzw. das Protokoll
per Mail versendet wird, über den firmeninternen Mailserver?
klar. Send-MailmessageWas ich mich nun frage ist, könnte man theoretisch auch noch einbauen, dass die Log bzw. das Protokoll
per Mail versendet wird, über den firmeninternen Mailserver?
Kannst du das hier an das Script anhängen ... Details des Servers / Username / Password etc. natürlich anpassen:
$mailbody = @"
<style type="text/css">
body,td,h3{font-family:Arial, Helvetica, sans-serif;}
</style>
<h3>Archivierte Dateien</h3>
$($log | ConvertTo-Html -Fragment)
<h3>Aufgetretene Fehler</h3>
$(if ($errorlog){$errorlog | ConvertTo-Html -Fragment}else{"Keine"})
"@
Send-MailMessage -From "user@domain.de" -to "empfaenger@domain.de" -Subject "Archivierungslog" -Body $mailbody -BodyAsHtml -SmtpServer smtp.domain.de -Credential (New-Object PSCredential("USERNAME",(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -UseSSL