BSDForen.de  

Zurück   BSDForen.de > BSD Allgemein > *BSD - Serverdienste

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 11.09.2007, 15:12   #1
Dinh
Registered User
 
Benutzerbild von Dinh
 
Registrierungsdatum: Aug 2005
Beiträge: 261
rsync und mod-time

Hallo zusammen

Ich habe hier ein kleines Problemchen mit rsync und obwohl das ganze auf einem Linux-Server läuft, denke ich, werde ich hier die kompetentesten Antworten erhalten - rsync gibt es ja auch unter *BSD.

Folgendes Szenario:
Ich habe die alten Backupdaten Daten-B nach Daten-A kopiert. Leider gingen alle mod-time Attribute verloren und alle Timestamps von Daten-A sind jetzt auf das Datum des cp-Befehls gesetzt.
Daraufhin wurde mit Daten-A weitergearbeitet und erst ein paar Tage später fiel mir mein Missgeschick auf.

Problem:
Wie kann ich alle Timestamps der Dateien von Daten-B in Daten-A übernehmen, aber ohne dass die Änderungen verloren gehen?

Lösungsansatz:
Vielleicht kann ich mit rsync zuerst eine Kopie (Daten-Temp) von Daten-B erstellen, dann mit rsync alle geänderten Dateien in Daten-A nach Daten-Temp syncen - wobei hier wirklich nur die tatsächlich geänderten Dateien angefasst werden dürften!! - und wenn alles gut aussieht, Daten-Temp nach Daten-A syncen.
Nur wie mach ich das?
Code:
rsync -a datenB/ temp rsync -ca --delete datenA/ temp rsync -a temp/ datenA
Gibt es vielleicht einen einfacheren Weg?

Die Frage ist hier vor Allem, welche der rsync-Optionen die richtige ist: -c oder irgend eine --ignore-Times-Option?

Ich hoffe, jemand kann mir auf die Sprünge helfen.

-- Dinh --
__________________
$ god
god: not found
Dinh ist offline   Mit Zitat antworten
Alt 11.09.2007, 16:10   #2
Dinh
Registered User
 
Benutzerbild von Dinh
 
Registrierungsdatum: Aug 2005
Beiträge: 261
Ich glaube, ich habe eine Lösung:
Code:
# daten = aktuelle Daten mit falschem Zeitstempel # backup = alte Daten, dafür mit richtigem Zeitstempel rsync -a backup/ temp rsync -crv --delete daten/ temp rsync -a temp/ daten
Könnte das jemand überprüfen? Wichtig ist vor allem, dass vor und nach den Befehlen im Ordner daten die selben Dateien mit dem selben Inhalt sein dürfen. Nur die Attribute dürfen ändern!

-- Dinh --

EDIT: weiss jemand, wie viel länger das mit -c dauert? Es handelt sich um > 60GB und mehrere 100'000 Dateien.
__________________
$ god
god: not found

Geändert von Dinh (11.09.2007 um 16:18 Uhr).
Dinh ist offline   Mit Zitat antworten
Alt 11.09.2007, 19:36   #3
MrFixit
aka uqs
 
Registrierungsdatum: Feb 2003
Beiträge: 2.024
Du kannst keine allgemeine Loesung dafuer finden, denn woher soll er wissen, welchen Timestamps er trauen kann? Ich wuerde folgenden Ansatz verfolgen

mit find(1) und stat(1) die mtime der alten Dateien extrahieren. Mit find(1) und stat(1) die mtime der neuen Dateien extrahieren. Dat ganze mit join(1) auf die Form "alt neu pfad" bringen.

Nun hast du eine ganze Latte von Timestamps in Spalte 2, welche zwischen X und X+t liegen (die Dauer deines urspruenglichen cp(1)). Die kannst du bequem mit awk(1) rausfiltern und schliesslich ein touch(1) -t alt pfad pro Zeile laufen lassen.

Du solltest die Timestamps ueber stat(1) gleich in %y%m%d%H%M%S ausgeben, weil touch(1) das so will.

Falls du da noch Hilfe brauchst, das ist schnell realisiert, sowas.
MrFixit ist offline   Mit Zitat antworten
Alt 11.09.2007, 21:27   #4
Dinh
Registered User
 
Benutzerbild von Dinh
 
Registrierungsdatum: Aug 2005
Beiträge: 261
Danke für deine Antwort. Das klingt für mich aber unendlich kompliziet und fehleranfällig!

Warum nicht einfach so, wie in meinem zweiten Post beschrieben? Im Backup stimmen ja die Timestamps.
Code:
rsync -a backup/ temp
erstellt mir eine komplette Kopie des Backups - sogesehen als working dir.

Jetzt muss ich nur noch irgendwie alle stattgefundenen Änderungen von meinen Daten aufs Backup übertragen - wobei rsync nicht auf die Zeiten schauen darf. Gelöschte Dateien sollen auch gelöscht werden etc:
Code:
rsync -crv --delete daten/ temp
Der c-Parameter sollte jede Datei mittels Hash vergleichen und wirklich nur die Dateien neu syncen, bei denen entweder die Grösse oder der Hash nicht übereinstimmt. Diese geänderten Dateien haben dann zwar den Timestamp dieses Befehls, aber da es nur ein paar Tage sind, ist das vernachlässbar. Unterdessen gelöschte Dateien werden ebenfalls gelöscht.

Theoretisch sollte das temp-Verzeichnis dann genau eine Kopie des Data-Verzeichnis sein, ausser dass alle Dateien, die in Data und Backup identisch sind, die Timestamps von Backup kriegen.
Meine Unix-Kentnisse sind aber noch nicht so fundiert und ich hab Angst, die Daten zu zerstören...

-- DInh --
__________________
$ god
god: not found
Dinh ist offline   Mit Zitat antworten
Alt 11.09.2007, 22:57   #5
MrFixit
aka uqs
 
Registrierungsdatum: Feb 2003
Beiträge: 2.024
Zitat:
Zitat von Dinh Beitrag anzeigen
Danke für deine Antwort. Das klingt für mich aber unendlich kompliziet und fehleranfällig!
Im Gegenteil, du kannst genau sehen, welche Timestamps auf welches Datum angepasst werden wuerden, bei rsync hast du ne Blackbox und musst vertrauen, dass alles gut geht.
Zitat:
Warum nicht einfach so, wie in meinem zweiten Post beschrieben? Im Backup stimmen ja die Timestamps.
...
Theoretisch sollte das temp-Verzeichnis dann genau eine Kopie des Data-Verzeichnis sein, ausser dass alle Dateien, die in Data und Backup identisch sind, die Timestamps von Backup kriegen.
Meine Unix-Kentnisse sind aber noch nicht so fundiert und ich hab Angst, die Daten zu zerstören...
Warum? in /temp kannst du dich doch nach belieben austoben. Ausserdem hat rsync den -n Parameter und -vv kannst du ja ebenfalls noch mit angeben.

Dann hast du zwar wieder "falsche" Timestamps, wenn du nicht auch -t angibst. Aber ob das mit -c genau das tut was du brauchst, das musst du in ner Sandbox testen.
MrFixit ist offline   Mit Zitat antworten
Alt 12.09.2007, 08:42   #6
Dinh
Registered User
 
Benutzerbild von Dinh
 
Registrierungsdatum: Aug 2005
Beiträge: 261
Zitat:
Zitat von MrFixit Beitrag anzeigen
Warum? in /temp kannst du dich doch nach belieben austoben. Ausserdem hat rsync den -n Parameter und -vv kannst du ja ebenfalls noch mit angeben.
Ja, nur sollten die Daten ja dann so schnell wie möglich wieder verfügbar sein. Während der "Bastlerei" kann ja nicht gearbeitet werden, darum möchte ich das möglichst als Script vorbereiten und dann über Nacht durcharbeiten lassen.

Zitat:
Dann hast du zwar wieder "falsche" Timestamps, wenn du nicht auch -t angibst. Aber ob das mit -c genau das tut was du brauchst, das musst du in ner Sandbox testen.
Ja, das stimmt, aber nur die paar Hundert Dateien, die geändert wurden. Und die Timestamps wären nur um zwei, drei Tage falsch.
Als ich das mit ein paar Daten testete, hab ich festgestellt, dass -t dazu führt, dass dann doch wieder die Timestamps übernommen werden. Auch bei den nicht übertragenen Dateien.

Ich werd' jetzt mal ein paar ausführliche Test mit einem Teil der Daten machen. Danke soweit.
__________________
$ god
god: not found
Dinh ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
rsync - Modul vs. Pfadname testit FreeBSD - Anwendungen und Ports 1 29.05.2006 18:18
rsync mit "connection unexpectedly closed" MarcoHensel FreeBSD - Anwendungen und Ports 2 16.05.2006 06:56
Security Advisory: rsync Server asg News 1 05.12.2003 08:29
Ogle hat Start-Probleme mit Video DVD raziel NetBSD - Anwendungen 7 06.10.2003 11:12


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.