Как скопировать файл только для чтения и сделать копию доступной для записи с помощью одной команды cp?

9968
Hans Solo

Как скопировать файл только для чтения в Linux и сделать копию доступной для записи с помощью одной команды cp в Linux (Ubuntu 10.04)?

--No-preserve и --preserve казались хорошими кандидатами, за исключением того, что они должны "и" флаги режима, в то время как я ищу что-то, что будет "или" их (режим добавления + w).

Больше деталей:

Я должен импортировать репозиторий из GIT в Perforce. Я хочу, чтобы все файлы хранилища Perforce были доступны только для чтения (именно так был разработан Perforce), а все остальные файлы, которые были получены / скопированы из файлов хранилища, доступны для записи. В настоящее время, если Makefile пытается скопировать файл только для чтения, то производный файл также будет доступен только для чтения. Это приводит к ошибкам сборки, когда cp пытается перезаписать файл только для чтения во второй раз. Конечно, --force - это обходной путь, но тогда производный файл также доступен только для чтения. Также я не хочу связываться с "chmod" после каждой команды "cp" - я сделаю это только в крайнем случае.

3

2 ответа на вопрос

7
Majenko

Вы должны посмотреть на команду установки .

От человека установить

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 
Кажется, что «установка» может делать то, что мне нужно. Я также узнал, что «rsync» с «--chmod» еще лучше. Hans Solo 13 лет назад 1
0
Andrei Pokrovsky

Make a cp1.sh script that will add a chmod +w after each cp? :) Only difference is that the script isn't going to be atomic, but then I don't think there are guarantees on cp atomicity wrt any included attribute changes?

or just use umask? linuxgnuru 7 лет назад 0

Похожие вопросы