[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: