Wie kann ich eine schreibgeschützte Datei kopieren und die Kopie mit einem einzigen cp-Befehl beschreibbar machen?

10287
Hans Solo

Wie kann ich eine schreibgeschützte Datei in Linux kopieren und die Kopie mit einem einzigen cp-Befehl in Linux (Ubuntu 10.04) beschreibbar machen?

Das --no-preserve und --preserve schien ein guter Kandidat zu sein, außer, dass sie die Modeflaggen "und" sollten. Was ich suche, ist etwas, das sie will "oder" sie "(+ w-Modus hinzufügen).

Mehr Details:

Ich muss ein Repository von GIT nach Perforce importieren. Ich möchte, dass alle Perforce-Depotdateien schreibgeschützt sind (so wurde Perforce entworfen), während alle anderen Dateien, die von Depotdateien abgeleitet / kopiert wurden, schreibbar sind. Wenn ein Makefile derzeit versucht, eine schreibgeschützte Datei zu kopieren, ist die abgeleitete Datei auch schreibgeschützt. Dies führt zu Build-Fehlern, wenn cp versucht, die schreibgeschützte Datei ein zweites Mal zu überschreiben. Natürlich ist die --force hier ein Workaround, aber die abgeleitete Datei ist auch schreibgeschützt. Ich möchte auch nicht mit "chmod" nach jedem "cp" -Befehl herumspielen - das mache ich nur als letzten Ausweg.

3

2 Antworten auf die Frage

7
Majenko

Sie sollten sich den Installationsbefehl ansehen .

Vom Mann installieren

SYNOPSIS install [OPTION]... [-T] SOURCE DEST install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE... install [OPTION]... -d DIRECTORY...  DESCRIPTION This install program copies files (often just compiled) into  destination locations you choose. If you want to download and install a ready-to-use package on a GNU/Linux system, you should instead be  using a package manager like yum(1) or apt-get(1).  In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to the existing DIRECTORY, while setting permission modes and owner/group. In the 4th form, create all components of the given DIRECTORY(ies). ... -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-x 
Es scheint, dass "Installieren" das kann, was ich brauche. Ich fand auch heraus, dass "rsync" mit "--chmod" noch überlegener ist. Hans Solo vor 13 Jahren 1
0
Andrei Pokrovsky

Erstellen Sie ein cp1.sh-Skript, das nach jedem cp ein chmod + w hinzufügt. :) Der einzige Unterschied ist, dass das Skript nicht atomar sein wird, aber ich glaube nicht, dass es für cp-Atomizität Garantien gibt, die sich auf eingeschlossene Attributänderungen beziehen.

oder einfach umask verwenden? linuxgnuru vor 7 Jahren 0