zero5liters
Goto Top

Dateien verschieben in Datumsordner

Hallo, ich versuche eine mir vorgegebene Sicherungslösung zu verbessern/verschönenern.

Ich habe einen Server auf dem werden täglich Daten von mehreren Geräten gesichert. Zu meinem Leidwesen sicherheitshalber die Daten der letzten 3 Tage. Diese werden in einen Tagesscontainer geschrieben. Leider nur nicht in den jeweils zugehörigen Ordner, sondern in den Tagescontainer/Ordner von dem Tag an dem die Sicherung läuft.

Beispiel:

Ordner1 von heute 21.09.2011 darin enthalten sind die Dateien "Ordner1_Sicherung_19092011",""Ordner1_Sicherung_20092011","Ordner1_Sicherung_21092011"

Hier mal die Ordnerstruktur:

Workstation1-n
-Jahr
-Monat
-Tag
-Ordner1
-Datei1(Dateiname beginnt immer genauso wie der Ordnername)
-Ordner2
-Datei2
-Ordner_n
-Datei_n

An der Sicherung kann ich leider nicht drehen, die kommt von extern. Derzeit lösche ich die Dateien die nicht in den Ordner gehören von Hand raus und zippe den Tagescontainer. Aber das müsste man doch mit einer Batch lösen können. Ich habe eine ungefähre Vorstellung (Batchlaie) wie ich das für einen Tagescontainer lösen könnte. Aber mir fehlt jegliche Vorstellungskraft wie ich das aus der root machen müsste.

Vielleicht hat ja jemand eine Idee. Wäre echt cool wenn ich mir die Arbeit (täglich von Hand lsöchen/verschieben) sparen könnte.

Mfg
zero


So hier dann mal ein Bild der Ordnerstruktur
fd9fa7f607250b72d9c9e27a5fa4623a
damit es ein wenig einleuchtender ist. Bin leider ne 0 im Erklären.
Die Dateien die im Ordner "Anwendung1" liegen sollen nach Möglichkeit nach Datum in die jeweils passenden Tagesordner wegsortiert (move & overwrite) oder gelöscht werden.
Also die Datei "Anwendung1_*" vom 19.09. (anhand des Änderungsdatums) soll in den Ordner Workstation\Jahr\Monat\Tag (Workstation1\2011\09\19\Anwendungs1) verschoben werden.
Der Ordner "Backup" stellt die Freigabe dar ...

Hoffe damit könnt ihr mehr anfangen.

thx in advance

Content-Key: 173453

Url: https://administrator.de/contentid/173453

Printed on: April 19, 2024 at 21:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Sep 21, 2011 at 10:31:39 (UTC)
Goto Top
moin zero,

also nach dem drittenmal Durchlesen ...
soll nun was genau geschehen?

alles was nicht mit "Odner_Sicherung_DatumNichtvonHeute" endet soll gelöscht werden?
Ja ich wart dann mal vorher auf Food aeähm Feedback.

Gruß Phil
Member: Skyemugen
Skyemugen Sep 21, 2011 at 10:35:44 (UTC)
Goto Top
Aloha Phil,

ich habe es eher so verstanden, dass er Sicherungsordner von einigen Geräten hat (allerdings kP wo die genau liegen)

z.B. Ordner1, Ordner 2 etc.

Und dort liegen gesicherte Dateien der letzten drei Tage.

Diese sollen dann, je nach Datum entsprechend, in ihre jeweiligen Ordner geschoben werden, denke ich.

Also Ordner1\Ordner1_Sicherung_19092011.xyz soll zu Workstation1-n\2011\09\19\Ordner1\Ordner1_Sicherung_19092011.xyz etc. pp.

nunja, erstmal Mahlzeit

greetz André
... wobei, beim vierten Mal durchlesen, bin ich mir doch unsicher, ob die Ordnerstruktur nicht doch die gesicherten Daten enthält, wobei ich dann nicht weiß, was er will face-wink
Member: zero5liters
zero5liters Sep 21, 2011 at 11:28:14 (UTC)
Goto Top
Zum Bild: also es fehlen natürlich weitere Monate, Tage, Workstations und Anwendungen das ist nur um mal die Struktur aufzuzeigen face-wink
Member: Skyemugen
Skyemugen Sep 21, 2011 at 11:50:17 (UTC)
Goto Top
Aloha,

ja was denn nun:

Die Dateien die im Ordner "Anwendung1" liegen sollen nach Möglichkeit nach Datum in die jeweils passenden Tagesordner wegsortiert (move & overwrite) oder gelöscht werden

entscheide dich bitte, wenn die nicht-von-heute-Dateien unwichtig sind, fliegen sie raus, bumm! Ist nämlich auch das Einfachste und könnte z.B. so ablaufen:
Ausgehend davon, dass das Skript heute mit dem Datum von heute und vorhandenen Dateien von heute arbeitet (dass ich mit heute nicht unbedingt den 21.September 2011 meine, dürfte klar sein *gg*)
@echo off & setlocal
set "Pfad=K:\Backup\Workstation1\%date:~-4%\%date:~3,2%\%date:~0,2%"  
set "Datum=%date:.=%  
for /f "delims=" %%s in ('dir /B /S /A-D "%Pfad%"^|findstr /V %Datum%') do echo del "%%s"  
pause
goto :eof
das echo in Zeile 04 dient der Voransicht, wenn du es entfernst, geht der Code knallhart zur Sache face-wink

greetz André
edit:
Also die Datei "Anwendung1_*" vom 19.09. (anhand des Änderungsdatums) soll in den Ordner Workstation\Jahr\Monat\Tag (Workstation1\2011\09\19\Anwendungs1) verschoben werden.

Entscheide dich!
Member: pieh-ejdsch
pieh-ejdsch Sep 21, 2011 at 11:51:37 (UTC)
Goto Top
aus dem Bauch raus würde ich sagen die Backups der zwei anderen Dateien im Ordner können gelöscht werden, da diese ja in einem anderen DatumsOrdner enthalten sind.

Ungetestet! Bitte Testdaten Verwenden. etwa so
@echo off
setlocal
set "BackupFolder=K:\Backup"  

for /r "%BackupFolder%" %%i in (*) do for /f "tokens=3-6delims=\" %%j in ("%%i") do echo "%%~ni"| findstr "_%%l%%k%%j." >nul || del "%%i"  

Gruß Phil
Member: zero5liters
zero5liters Sep 21, 2011 at 12:18:48 (UTC)
Goto Top
Hi - danke schon mal. Das mit dem Verschieben/Löschen ist so ne Sache. Denn eigentlich wäre löschen schon ok. ABER: derzeit wenn ich das händisch machen muss und mal nicht aufpasse und mir der Speicher voll läuft dann schreibt er eben keine Daten mehr in den Ordner. Räume ich dann wieder auf und schaffe Platz. Bekomme ich vom Server die Sicherungen der letzten Tage und verschiebe die dann einfach in die passenden Tage.
Wobei ja wenn die Batch so arbeitet wie sie soll läuft mir ja auch nicht mehr der Speicher voll. face-wink Also können wir getrost bei löschen bleiben. face-wink

Noch ne blöde Frage zum Schluss. Wie müsste ich denn den Code bearbeiten das ich das ganze aus der "root" starten kann. Denn die Workstations stehen natürlich mit Ihren echten PC-Namen da und heißen nicht einfach 1-2-3 sondern haben ihrer Funktion nach eigene Namen. Genauso wie die Anwendungen/Anwendungsordner. face-sad
Member: pieh-ejdsch
pieh-ejdsch Sep 21, 2011 at 12:38:20 (UTC)
Goto Top
zum schluss antworten wir immer nur blöd wenns blöde Fragen gibt. face-wink
Ne zum schluss sagen wir tschü.

beim Script von André trägst Du bei Pfad nur K:\Backup ein
ach ne geht ja nicht da muss eine Unteroutine rein oder eine extra Vor-Forschleife gebastelt werden.
wenn Du das jeden tag startest nimmste dieses Script

für den Anfang um wirklich alle Doppelten Daten zu löschen nimmste das von mir.

Gruß Phil
Member: zero5liters
zero5liters Sep 21, 2011 at 13:10:21 (UTC)
Goto Top
Ja cool - danke geht 1A. Herzlichen Dank.
Zu André´s Script hab ich noch ne Frage. Was bedeuten die "Parameter" dieser Zeile?:

"for /f "delims=" %%s in ('dir /B /S /A-D "%Pfad%"^|findstr /V %Datum%') do echo del "%%s" "

Will ja nicht nur copy/pasten - würds ja gern auch verstehen.

thx
Member: Skyemugen
Skyemugen Sep 21, 2011 at 13:23:49 (UTC)
Goto Top
Aloha,

es war einmal eine Schleife, die durfte nichts trennen, dafür aber in der Suche-nach-Dateien-in-allen-Unterordnern-von-%Pfad%-aus die Funde mit dem %Datum% rauswerfen und nur die restlichen Treffer ausgeben (und ggf. löschen, wenn man denn so wollte)
for /?
dir /?
findstr /?

greetz André
Member: zero5liters
zero5liters Sep 21, 2011 at 13:48:20 (UTC)
Goto Top
ok - habe mal brain.exe neugestartet und schon ist das Verständnis gleich größer.

Wenn ich das jetzt richtig verstehe löschts die Dateien die im Dateinamen ungleich des Ordner-Datums sind - oder?
Member: Skyemugen
Skyemugen Sep 21, 2011 at 13:55:01 (UTC)
Goto Top
Aloha,

rein technisch gesehen, löscht er die Daten, deren Dateinamenbestandteil ungleich dem aktuellen Datum ist (was natürlich auch der Ordnerstruktur an dem Tag entspricht) face-wink

greetz André
Member: zero5liters
zero5liters Sep 21, 2011 at 14:03:25 (UTC)
Goto Top
Könntest Du mir bitte noch nen Tip geben wie ich es statt auf den Dateinamen auf das Änderungsdatum jagen kann.
Member: Skyemugen
Skyemugen Sep 21, 2011 at 14:21:38 (UTC)
Goto Top
Aloha,

for /f "delims=" %%s in ('dir /B /S /A-D "%Pfad%"') do (  
	echo %%~ts |findstr /V %date%>nul && echo del "%%s"  
)

du meinst so?

greetz André

zur Erklärung:

für jede gefundene Datei wird das Änderungsdatum per echo ausgeben und dann wie gehabt per findstr gefiltert und nur der passende Treffer wird dann auch (sofern man will) gelöscht
Member: zero5liters
zero5liters Sep 22, 2011 at 07:57:56 (UTC)
Goto Top
Super - danke. Das hilft mir deutlich weiter - als meine möchtegern Batches. face-wink