Datei Attribute ändern

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Woolfgang359

Benutzer
Registriert
17. Nov. 2010
Beiträge
125
Reaktionspunkte
21
Punkte
18
Hallo,
ich habe blöderweise bei der Übernmahme der Daten vom alten zum neuen NAS etwa 6,5TB Daten mit der File Station kopiert.

Jetzt wie ich mit robocopy über das Netzwerk meine anderen Sicherungsplatten (von ext4 nach NTFS) synchronisieren wollte da wird alles angegriffen und neu synchronisiert obwohl sich nichts geändert hat. Ich vermute, dass mit dem Kopieren alle Dateien ein neues Datum haben. Und für robocopy ist das nun alles neu zu synchronisieren auch wenn Name und Dateigröße gleich sind.
Blöd. Ich hätte das Übernehmen der Daten mit rsync machen sollen, da die Übernahme von ext4 nach ext4 gemacht wurde und die Attribute hätte ich dann behalten. Pech.

Frage:
Kann ich (sinnvollerweise in einem Script) die Attribute, vom alten Datenbestand zum neuen Datenbestand übertragen.
Also, wenn die Ordnerstruktur, der Name und die Größe übereinstimmen, dann würde ich die Attribute insbesondere alle Datumswerte im Ziel überschreiben. Owner, Group und Berechtigung sind bei reinen Daten nicht das Problem, ich würde sie aber kontrollieren und ggf. anpassen. Aber wie bitte ändert man ein Erstellungsdatum.
Ich habe nämlich mehrere Sicherungsplatten, damit auch welche außer Haus kommen. Und wenn ich jetzt mehrfach 6,5TB sichern muss, obwohl die Daten eh schon am Ziel sind, das sind Tage für nix. Ich würde das Ganze in einem Script machen, aber wie lese ich die Attribute aus und wie schreibe ich sie in einen anderen File?

Es wäre schön wenn jemand meine Frage beantworten könnte ohne das Thema auf die Art der Sicherung zu lenken.

Danke für die Info.
lg Wolfgang
 
Zuletzt bearbeitet:
Der touch Befehl kann in Verbindung mit der Option -t den Zeitstempel ändern. Wie du dabei aber Quelle und Ziel vergleichst, um bei Abweichung den Zeitstempel zu korrigieren, kann ich dir grade nicht beantworten.
 
Rather writing a script (and I love writing scripts) I would do it the easy way with Beyond Compare. You can use the trial version, but it's well worth buying the standard edition. I use it almost every day.
  1. Open Beyond Compare.
  2. Select the 2 folders to compare.
  3. Click On "Session > Session Settings > Comparison" and make sure "Compare file size" and Compare timestamps" are ticked.
  4. Select all the folders on the side with incorrect time stamps.
  5. Right-click and select Touch.
  6. Tick "Including folder contents".
  7. Select "Copy timestamps from other side"
  8. Click Start.

Session Settings

1736227015439.png

1736227032922.png


Touch

1736227089061.png
 
Zuletzt bearbeitet:
@DaveR
Okay, thank you, that will be the second solution. First I try to write a script, because I have 100% control of what is done. But at the same time, I am also looking at your proposed app. :D

----

@Tommes
Danke für den ersten Schritt.
Ich habe gesehen, dass man mit "stat" die Attribute auslesen kann.
stat -c="%n %U %G %x %y %z" ./testfile.txt

Jetz muss ich nur eine Schleife machen in /volume1 (destfile) wo die Dateien mit dem falschen Zeitstempel liegen. Und dann schaue ich zum Originalfile der auf /volumeUSB1/usbshare (sourcefile) liegt und zwar in der exakt gleichen Ordnerstruktur. (andere HDD, aber gleiche Ordnerstruktur, gleicher Filename, gleiche Größe)

Und dann den sourcefile mit "stat" auslesen, einen String für "touch" aufbereiten und dann den destfile ändern.
Ich muss das natürlich so aufbauen, dass ich damit nicht einen riesen Mist veranstalte. Daher werde ich zuerst simulieren und ein Protokoll schreiben, bevor ich scharf schiesse.
Ich denke das sollte machbar sein.

Den Vorschlag von @DaveR schaue ich mir parallel dazu an.
Falls jemand eine bessere Idee hat oder mich warnen möchte, welche Fallstricke lauern könnten, bitte um Info.
 
  • Like
Reaktionen: Tommes
Natürlich darfst du dein funktionsfähiges Script gerne hier veröffentlichen, wenn du magst!

Mit stat habe ich zuletzt Ordner- und Dateirechte ausgelesen und bei Bedarf angepasst. Das sollte dann wohl auch mit dem Timestamp funktionieren. Gut zu wissen.
 
Vielleicht hilft Dir auch die Option touch -r - da gibst Du ein Referenz-File an, von dem der Zeitstempel übernommen wird.
Ist vielleicht auch besser als der stat-Befehl, da sonst eventuell Sekundenbruchteile fehlen und es doch nicht funktioniert.
 
  • Like
Reaktionen: DaveR
So könntest Du es probieren:

cd ZIEL find . -type f -exec touch {} -r QUELLE/{} \;

Voraussetzung: Zugang per SSH ist hergestellt und die Verzeichnisse ZIEL und QUELLE (durch richtige Pfade ersetzen!) sind beide von der Shell aus erreichbar und sie haben den identischen Inhalt.
Der Befehl find sucht im ZIEL-Verzeichnis rekursiv alle Dateien und führt einen touch mit Referenzierung der entsprechenden Datei im QUELL-Verzeichnis aus.
Ohne Gewähr 😉
 
  • Like
Reaktionen: DaveR
@Tommes
Ja das Script gebe ich hier gerne bekannt. Bin nur gerade 14 Tage weg. Dauert.
(Das rsync Script aus dem anderen Beitrag funktioniert nach vielen Tests auch astrein, aber das ist so speziell für genau meine Bedürnisse, sodass eine Veröffentlichung eher peinlich wäre, wenn ich dein allgemein gültiges Script so anschaue. :))

@Hagen2000
Danke, ja die Option -t habe ich schon im Radar. Danke auch für deinen Vorschlag, solche Code-Schnippsel helfen mir ungemein, weil ich nicht alles von null weg ergründen muss.

Für euch beide die Info:
Das Script ist direkt für den Rechner gedacht wo die Daten lokal vorhanden sind. Bei mir sind die Originaldateien (von der alten DS109) angesteckt als USB-Platte sowie die (fehlerhaften) Zieldateien auf der internen Platte in der neuen DS224+. Ich erstelle mein Script nicht speziell für das Netzwerk.
 
Ich habe geschrieben: "Ja das Script gebe ich hier gerne bekannt. Bin nur gerade 14 Tage weg. Dauert."

Ich habe die gesamte Struktur meiner Daten geändert und somit werde ich einfach alle Sicherungen neu überschreiben. Wird Tage dauern, aber es macht für mich daher keinen Sinn mehr so ein Script zu erstellen. Soviel nur zur abschließenden Info, weil ich zuvor etwas anderes gesagt hatte.
 
  • Like
Reaktionen: DaveR

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat