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


3

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

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

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

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

Ответы:


7

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

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

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

1
Кажется, что «установка» может делать то, что мне нужно. Я также узнал, что «rsync» с «--chmod» еще лучше.
Ганс Соло

0

Сделать скрипт cp1.sh, который будет добавлять chmod + w после каждого cp? :) Разница лишь в том, что сценарий не будет атомарным, но тогда я не думаю, что есть гарантии на атомарность cp в отношении каких-либо изменений атрибутов?


или просто использовать umask?
linuxgnuru
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.