zeroblue2005
Goto Top

Xcopy jedoch nur die Dateien die nicht älter

Hallo Zusammen,

Wie kann ich diese Script anpassen, so dass aus der Quelle nur die Dateien kopiert werden, die nicht älter sind als 24 stunden?

xcopy "G:\Backup-VM-Cloud-Web-2\imagessystem\*.*" "F:\Backup-VM-Cloud-Web-2\" /S /Y

danke

Content-ID: 273674

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

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

emeriks
emeriks 03.06.2015 aktualisiert um 10:59:03 Uhr
Goto Top
Wenn Du das Script alle 24h laufen lässt, dann sollte sich das doch von selbst ergeben ...?
E.

Edit: Ansonsten nimm statt xcopy eben robocopy mit "/maxage".
zeroblue2005
zeroblue2005 03.06.2015 um 11:04:03 Uhr
Goto Top
Nein leider nicht, da sich im DIR nicht nur ein Image sonder bis zu 7 enthalten sind und ich will nur das neuste für das externe Backup. Robocopy ist nicht so mein ding
emeriks
emeriks 03.06.2015 um 11:11:47 Uhr
Goto Top
Das sind aber zwei verschiedene Ansätze! Was denn nun? Dateien kopieren, die nicht älter als 24 h sind, oder nur die jeweils neueste Datei in einem Verzeichnis?
eisbein
Lösung eisbein 03.06.2015 aktualisiert um 11:50:44 Uhr
Goto Top
Hallo!

Robocopy ist nicht so mein ding
Sollte es aber unbedingt werden ! face-wink

robocopy.exe E:\Ordner E:\TEMP /E /MAXAGE:1 /R:1 /W:1


E:\Ordner                  : Quellordner
E:\TEMP                    : Zielordner
/E                         : inklusive Unterverzeichnisse
/MAXAGE:1                  : Maximalalter, Dateien die älter als 1Tag sind werden ignoriert
/R:1                       : Bei Fehler 1x noch mal versuchen
/W:1                       : zwischen Wiederholungen 1 Sekunde warten (bei Fehler)

Gruß
Eisbein

Edit: @emeriks Frage ist durchaus berechtigt!! Was soll es nun sein?
mschaedler1982
mschaedler1982 03.06.2015 um 11:21:10 Uhr
Goto Top
Hi zeroblue.

Schau dir doch mal bitte dieses Beispiel an.

Forfiles /P E:\Ordner\ /S /M *.* /D -8 /C "cmd /c del /q @path"

/P E:\Ordner : Pfad auf dem die Suche gestartet werden soll
/S : Bitte mit allen Unterordnern
/M *.* : Suchmaske - hier alle Dateien (ausser denen ohne Dateiendung)
/D -8 : Letztes Änderungsdatum älter als 8 Tage zum heutigen Datum
/C "cmd /c del /q @path" : Befehl der mit diesen Dateien ausgeführt werden soll (hier löschen)

das del /q dann einfach durch dein xcopy mit Parametern ersetzen.

Grüße
zeroblue2005
zeroblue2005 03.06.2015 um 11:46:02 Uhr
Goto Top
Wo ihr recht habt habt ihr nun mal recht! Hat geklappt Danke!
zeroblue2005
zeroblue2005 08.06.2015 um 09:58:50 Uhr
Goto Top
Hallo Eisbein,

du hattest recht! Ich brauche den script oben so, dass er mir nur die neuste Datei kopiert. Jetzt nimmt er natürlich auch die Datei vom Vortag! Es wird wohl nicht reichen bei: /MAXAGE:0 zu schreiben oder?
eisbein
eisbein 08.06.2015 aktualisiert um 12:02:04 Uhr
Goto Top
Mahlzeit!


Wie sehen denn nun die Verzeichnisse/Dateien aus die du kopieren willst?
Hast du nun mehrere Verzeichnisse die die selbe Datei beinhalten?

Erweitere deine robocopy-Parameter mit /xo

/XO
Es werden keine Dateien kopiert, die im Quell-Verzeichnis als älter definiert sind.


Alternativ schau dir mal diese Seite an:
http://stackoverflow.com/questions/97371/how-do-i-write-a-windows-batch ...

(der vorletzte Eintrag dürfte interessant sein face-wink)

Gruß
Eisbein
zeroblue2005
zeroblue2005 08.06.2015 um 12:11:13 Uhr
Goto Top
Im Prinzip ist das nur ein Ordner mit gepakten Dateien im Format image_backup-sda1-2015-06-08.dd.gz ohne Unterordner! Dort befinden sich von einer Woche die Backups drin. Ich möchte aber nur die neuste Datei kopieren nicht den Rest! Der Zielpfad ist immer leer!
eisbein
eisbein 09.06.2015 aktualisiert um 06:56:27 Uhr
Goto Top
Guten Morgen!

Wenn du immer den gleichen Dateinamen hast und sich nur das Datum ändert, kannst du diesen aktuellen Dateinamen im Patch erstellen und dann immer diese Datei kopieren:

Beispiel:
set mydate=%date:~-4%-%date:~3,2%-%date:~0,2%

robocopy.exe C:\Ordner\image_backup-sda-%mydate%.dd.gz X:\TEMP  /R:1 /W:1 

Parameter /L bei robocopy:
Gibt nur eine Liste der Dateien aus, führt aber keinen Kopiervorgang durch. Die Option ist sinnvoll um einen Kopiervorgang zu simulieren - dazu die Option einfach ans Ende des Befehls stellen.

Gruß
Eisbein
zeroblue2005
zeroblue2005 09.06.2015 um 07:53:19 Uhr
Goto Top
Hi Eisbein,

das mit: set mydate=%date:~-4%-%date:~3,2%-%date:~0,2% funktioniert so weit richtig! Die richtige Datei wird ermittelt!

Jedoch beim unteren Teil muss ein Sytaxfehler drin sein er hält die Datei für einen Ordner und schreibt:

set mydate=%date:~-4%-%date:~3,2%-%date:~0,2%
robocopy.exe G:\Backup-VM-Cloud-Web-2\imagessystem\image_backup-sda1-%mydate%.dd.gz D:\test /R:3 /W:300 /L


ROBOCOPY :: Robustes Dateikopieren für Windows


Gestartet: Tue Jun 09 07:50:18 2015

Quelle : G:\Backup-VM-Cloud-Web-2\imagessystem\image_backup-sda1-2015-06-09.dd.gz\
Ziel : D:\test\

Dateien : *.*

Optionen: *.* /L /COPY:DAT /R:3 /W:300


2015/06/09 07:50:18 FEHLER 123 (0x0000007B) Zugriff auf Quellverzeichnis G:\Back
up-VM-Cloud-Web-2\imagessystem\image_backup-sda1-2015-06-09.dd.gz\
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
ist falsch.
eisbein
Lösung eisbein 09.06.2015 aktualisiert um 09:38:39 Uhr
Goto Top
Stimmt!

set mydate=%date:~-4%-%date:~3,2%-%date:~0,2%

robocopy.exe G:\Backup-VM-Cloud-Web-2\imagessystem D:\test  image_backup-sda1-%mydate%.dd.gz /R:3 /W:300 /L

robocopy [QUELLE] [ZIEL] [FILE] [Parameter]

Gruß
Eisbein
zeroblue2005
zeroblue2005 09.06.2015 um 09:38:17 Uhr
Goto Top
Super jetzt läuft es DANKE