ubuntuusers.de

Rechte ohne Dateien kopieren

Status: Gelöst | Ubuntu-Version: Server 8.04 (Hardy Heron)
Antworten |

marcap

Anmeldungsdatum:
14. Juli 2008

Beiträge: 14

Wohnort: Stuttgart

Hallo,

Ich habe zwei von den Dateien her identische Verzeichnisse, allerdings unterscheiden sich die Rechte und die Besitzer/Gruppen voneinander. In dem einem Verzeichnis stimmen die Rechte, Besitzer & Gruppen in dem anderen nicht!

Gibt es eine Möglichkeit die Rechte, Besitzer & Gruppen von dem einen Verzeichnis auf das andere zu kopieren?

Hinweis: Die Erläuterung oben ist vereinfacht um keinen mit Aufsätzen zu belasten, es ist NICHT möglich die Dateien neu zu kopieren mit einem cp -p o.ä.

Gruß Marcap

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

a) Rechte: lt. man chmod

--reference DATEI

also sollte sowas gehen:

1
2
3
4
5
6
#!/bin/bash
for file in SOURCE/* 
do
       chmod --reference SOURCE/$file TARGET/$file 
done
 

(Vorsicht: ungetestet!)

b) Besitzer, Gruppe: analog: chown

Bei Blanks etc. in Dateinamen sind hier und da Maskierungen zu setzen. ☺

marcap

(Themenstarter)

Anmeldungsdatum:
14. Juli 2008

Beiträge: 14

Wohnort: Stuttgart

Hallo,

Danke für die schnelle antwort, mit SOURCE/* meinst du den Ordner bsp. /var/*, läuft das dann auch rekursiv??

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

marcap schrieb:

Hallo,

Danke für die schnelle antwort, mit SOURCE/* meinst du den Ordner bsp. /var/*, läuft das dann auch rekursiv??

Na ich hoffe Du hast nicht 9 Stunden gewartet, sondern einfach mal ein Testverzeichnis erstellt, und ausprobiert. Bzw. die man-pages gelesen.

Ein rekursives Durchlaufen wäre ja nicht jederzeit in jedermanns Sinn - es wäre dokumentiert, wenn es eine rekursive Variante gäbe, und es wäre nur eine Option. Ist es aber nicht.

Es ist ja nichtmals so, daß es ein Kommando für ein Verzeichnis ist, sondern die for-Schleife sorgt ja erst dafür den Befehl auf jede Datei anzuwenden. Und nicht rekursiv. Dafür nimmt man find.

Mit find läßt sich aber eine rekursive Lösung stricken; das konnte ich aber nicht ahnen. Da Du uns ja nicht mit Aufsätzen belästigen wolltest bekommen wir nun einen Fortsetzungsroman. ☺

Mit SOURCE und TARGET meinte ich Ordner, ja.

marcap

(Themenstarter)

Anmeldungsdatum:
14. Juli 2008

Beiträge: 14

Wohnort: Stuttgart

Huhu,

Also da ich ungelöste Threads nicht mag meine Lösung:

1
2
3
4
5
6
7
8
9
#!/bin/bash

cd $1
find . -print | awk '
{
        system("chmod --reference=\""$0"\" \"../'$2'/"$0"\"")
        system("chown --reference=\""$0"\" \"../'$2'/"$0"\"")
}
'
Antworten |