Re: Rechte übertragen
On Friday 25 April 2014 20:00:24 Andre Tann wrote:
> Hallo zusammen,
>
> ich habe zwei Trees, die ich kürzlich mit rsync synchronisiert habe.
> Inzwischen wurde auf dem Ziel etwas geändert, aber nicht viel. Vor
> allem aber, und das ist mein Problem, wurde versehentlich UID und GID
> aller Dateien verändert.
>
> Daher möchte ich alle Dateien auf der Quelle durchgehen, und wenn die
> Datei auch auf dem Ziel existiert, dann möchte ich UID/GID übertragen.
>
> In Prinzip ginge das so:
>
> find /quelle -printf 'chown %U:%G "%p"\n'
>
> Dahinter vielleicht noch ein wenig sed-Magie, und fertig wäre das
> Skript, welches man auf den Zielbaum jagen kann.
>
> Allerdings enthalten die Dateinamen allerlei Unfug wie ' und " und
> beides auch zusammen in einem Pfad, sodaß das nicht so ganz einfach
> ist, wirklich alles zu erwischen.
>
> Nochmal mit rsync rüberbügeln will ich nicht, denn dann gehen die
> Änderungen verloren.
>
> Hat jemand ne Idee, wie man das machen könnte? Wenn nicht, dann würde
> ich mir was mit Perl bauen. Aber vielleicht gibts ja was fertiges.
>
> Freue mich über Ideen.
Wie *ich* das machen würde:
Auf der Quelle
find /quelle -printf '%U\t%G\t%p"\n' > ugp.dsv
Auf dem Ziel
#! /usr/bin/ruby
user_group_path_list =
File.open('ugp.dsv') { |f|
f.each_line.map { |l| l.split("\t", 3) }
}
user_group_path_list.each do |user, group, path|
File.chown(user, group, path)
end
Oder so ähnlich. Hab's nicht ausprobiert.
Michael
--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/
Reply to: