(Von: /programming/15245144/copy-file-permissions-but-not-files , geschlossen, weil Off-Topic)
Ich habe zwei Kopien des gleichen Verzeichnisbaums. Sie haben fast die gleichen Dateien in beiden (eine Version kann ein paar zusätzliche oder fehlende Dateien haben). Die meisten Dateien sind jedoch beiden Verzeichnissen gemeinsam (haben dieselben relativen Pfade und alles).
Angenommen, diese befinden sich in Verzeichnissen:
version1/
version2/
Das Problem ist, dass die Berechtigungen in Version 1 / durcheinander geraten sind und ich die Berechtigungen aus Version 2 / überschreiben möchte, aber ohne die Dateien in Version 1 / zu ersetzen, die neuer sind.
Gibt es eine automatisierte Möglichkeit, dies über Shell-Befehle oder Skripte zu tun?
unix
file-permissions
unix-shell
copying
Mariano Paniga
quelle
quelle
Antworten:
GNU cp kennt das
--attributes-only
Flag seit Coreutils 8.6quelle
Meine Version von
cp
hat die--attributes-only
Flagge nicht, also habe ich das aufgearbeitet. Kurz auf einfache Ordner getestet, YMMV.quelle
Sie können, aber ich denke nicht "automatisiert"!
GNU chown und GNU chmod haben einen
--reference=RFILE
Parameter, den Sie verwenden können.Es verwendet
RFILE
Einstellungen (Berechtigungen, Eigentümer, Gruppe usw.) und kopiert sie nachyourfile
.das Handbuch erklärt es genauer.
quelle
In meinem Fall habe ich mithilfe des Befehls "stat" mit "find" und "vi" ein Skript erstellt, das Berechtigungen anwendet.
In "vi" habe ich in alle Zeilen den Befehl "chmod" eingefügt:
%s/^/chmod /g
Ich habe das Skript in dasversion2/
Verzeichnis kopiert und ausgeführt.Andere Lösungen scheinen gültig zu sein, ich habe sie jedoch nicht getestet.
quelle
Inspiriert von Mariano Panigas Antwort, denke ich, dass ich eine bessere habe, die keine vi und Suchen / Ersetzen-Befehle benötigt. Ich möchte sogar die Besitzdaten mitkopieren (uid / gid).
Sie können die darin enthaltenen Befehle beliebig anpassen
stat -c '...'
. Alle verfügbaren Optionen finden Sie unterman stat
.quelle