Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Geänderte Dateien per dir in Datei und fc ermitteln

Frage Entwicklung Batch & Shell

Mitglied: Haegar75

Haegar75 (Level 1) - Jetzt verbinden

12.09.2008, aktualisiert 13.09.2008, 5258 Aufrufe, 7 Kommentare

Hallo Leute,
ich muss euch mal wieder belästigen..
Ich möchte Dateien die sich seit der letzten Datensicherung geändert haben packen und wegkopieren.
Da sich die bereits gepackten und wegkopierten schlecht mit den unkomprimierten vergleichen lassen, hatte ich folgenden Ansatz gewählt..
Mit dir die Dateinamen in Datei umleiten und dann mit fc die am Tag vorher erstellte datei vergleichen und aus den Unterschieden die zu kopierenden Dateien ermitteln.
Versuch:

dir *.dbx | SORT /r | FIND /v "Volumeseriennummer:" | FIND /v "Verzeichnis" | FIND /v "Datei(en)" | FIND /v "Laufwerk" > copy.txt
fc copyalt.txt copy.txt

Leider werden mir wenn sich eine Datei ändert aber auch die vorherige und die nachfolgende angezeigt, obwohl die gleich sind... Ausserdem weiß ich noch net wie ich aus dem Wust an Datum und Größe den Dateinamen extrahieren kann..
Mitglied: Biber
12.09.2008 um 18:46 Uhr
Hmmja, Haegar75,

bei aller Liebe zu Batch-Lösungen... lass uns bitte noch ein paar Zeilen bei der Backup-Strategie verweilen...

So, wie sich das End-Wunsch-Ergebnis darstellen müsste, erzeugst Du doch täglich eine Delta-Sicherung (alle heute geänderten Dateien) und dieses Delta speicherst Du als eine ZIP oder RAR-Datei weg.

Wäre es da nicht simpler und wartbarer, jeden gatesverdammten Tag per Taskplaner einen Batchjob anzustoßen, der alle Dateien mit heutigen Datum im ...\src-Verzeichnis zusammensammelt und in eine (heut z.B.) 2008-09-12.zip schreibt?
Oder welches bisher geplante Feature würde dann fehlen?

Grüße
Biber
Bitte warten ..
Mitglied: Haegar75
12.09.2008 um 18:55 Uhr
Nunja, das mache ich ja im Prinzip auch mit den "kleinen" Dateien (inkrementelles Backup mit Xcopy)
Den oben beschriebenen Eiertanz wollte ich mir nur mit den mehreren hundert MB großen Brocken abhalten, da der Platz auf dem Sicherungslaufwerk begrenzt ist..
Das sei zu meiner Verteidigung zu sagen..
Bitte warten ..
Mitglied: Biber
12.09.2008 um 19:40 Uhr
...in diesem Fall würde ich dann eher den Weg gehen, mit ZWEI komplettsicherungs-ZIPs zu arbeiten.

In der ersten Komplett-ZIP-Datei (die für Mo, Mi, Fr) lässt Du dein ZIP-Programm jeweils alle src-Files aktualisieren, die verglichen mit dem letzten Stand im Archiv neuer sind; in der anderen Zip-Datei (die für Mo und Mi) machst Du dasselbe Spielchen.
Somit hast Du immer die Daten von heute( im Src-Verzeichnis), den Vortags-Stand und den von vorgestern( oder älter).

Oder du nimmst nur ein Komplett-Archiv als zip und machst die Zwei-Dalta-Mimik nur mit Dateien, die sich im letzten Monat geändert haben.

Vorteil der ersten Lösung wäre: du kannst (solltest Du mal in Deinem Src-Ordner richtig was verkantet haben) immer noch per Knopfdruck auf einen in sich konsistenten Stand/zusammenpassende Dateien zurück.

Aus einem SRC-Ordner eine einzelne Datei aus einer Delta-Sicherung zurückzukopieren... hmmm..... kann klappen, muss aber nicht.

Aber ich wäre auch bereit, meine Einwände zurückzustellen, wenn Du auf Deinem Konzept bestehst...

Grüße
biber
Bitte warten ..
Mitglied: Haegar75
12.09.2008 um 20:06 Uhr
Naja, was heißt drauf bestehen.. Meine Einsichtigkeit wird eigentlich nur noch von meiner Bescheidenheit übertroffen!
Deine Einwände hab ich noch nicht ganz verstanden.. Was ich vorhabe ist ja eigentlich keine wirkliche Delta-Sicherung.. Die dbxe die ich sichern will (hatte mich eben vertan mit src..) kann ich ja nur als Ganzes anpacken. Ich möchte halt nur die Brocken austauschen die sich geändert haben.
Bitte warten ..
Mitglied: bastla
12.09.2008 um 22:50 Uhr
Hallo Haegar75 und Biber!

Unabhängig von den weiteren Überlegungen als Antwort auf die eigentliche Fragestellung: Als Ersatz der "fc"-Zeile sollte
01.
Z:\>for /f "delims=" %%i in (D:\copy.txt) do findstr /x /c:"%%i" D:\copyalt.txt>nul || for /f "tokens=3*" %%a in ("%%i") do echo %%b
die unterschiedlichen Dateien ausfiltern.

Grüße
bastla
Bitte warten ..
Mitglied: Haegar75
13.09.2008 um 21:17 Uhr
Funktioniert akkurat! Danke!!! Was macht das "token=3*" eigentlich?
Bitte warten ..
Mitglied: bastla
13.09.2008 um 22:46 Uhr
Hallo Haegar75!

Was macht das "token=3*" eigentlich?
Damit wird festgelegt, welche Teile der Zeile interessieren bzw den Schleifenvariablen (hier ab %%a) zugeordnet werden - so wird zB die Zeile
01.
12.09.2008  22:40             2.542 copyalt.txt
anhand der defaultmäßigen (daher auch keine Angabe von "delims=") Trennzeichen "Tab" und "Leerzeichen" in die Teile
01.
1:    12.09.2008 
02.
2:    22:40 
03.
3:    2.542 
04.
Rest: copyalt.txt
zerlegt.

Eigentlich benötigt wird zwar der Teil 4, aber, um für den Fall, dass der Dateinamen ein oder mehrere Leerzeichen enthalten könnte (wodurch auch noch die Teile 5, 6, etc entstünden), vorzusorgen, wird der Rest der Zeile durch die Angabe von "*" zu einem einzigen "token" (%%b) zusammengefasst.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...