Вы не можете изменить/перезаписать файл, если у Вас нет разрешения записи, и не возможный scp
опция может изменить это.
Для решения его, необходимо соединиться с сервером сначала (использование ssh
например), и изменяют разрешение на Вашем файле. Если Вы не знаете, как сделать это, вот простая команда, которая добивается цели:
chmod +w /path/to/your/file
Несколько примечаний:
Существует, вероятно, причина, почему эти файлы только для чтения. Прежде, чем сделать что-либо, удостоверьтесь, что Вы знаете, почему и что изменение этого не собирается повреждать что-либо или представлять дыры в системе безопасности.
При необходимости Вы могли удалить разрешение записи после выполнения Вашего scp
команда (с этим: chmod -w /path/to/file
).
Если существует слишком много файлов с разрешением только для чтения, необходимо выследить их. find
(по крайней мере, версия GNU, доступная в большинстве дистрибутивов Linux), имеет a -perm
тест, который можно использовать (man find
для большего количества информации).
Кто-то мог бы предложить, чтобы Вы соединились как корень или использование sudo
. Это будет работать, но из любви к Богу не делают. Я не могу начать говорить Вам, как неправильно это было бы.
Если SFTP доступен на сервере (это обычно), можно использовать SSHFS. Это позволяет Вам смонтировать удаленные файлы на клиенте. Вам нужны демон SFTP на сервере и FUSE на клиенте.
mkdir /net/myserver
sshfs myserver:/ /net/server
Можно затем использовать любую локальную команду такой как cp
, chmod
, rsync
, и т.д., не имея необходимость волноваться, являются ли файлы локальными или удаленными. С rsync
, передайте --no-whole-file
опция сказать этому использовать свой сохраняющий пропускную способность алгоритм передачи дельты (который иначе выключен, когда rsync полагает, что оба пути локальны).
rsync -a --no-whole-file somedir /net/myserver/somewhere
Rsync не должен быть на целевом сервере; можно использовать
# rsync -avz -e ssh /path/to/files/ blah@somehost.com:/tmp/
Информация об этом здесь:
http://troy.jdmz.net/rsync/index.html
Как сказано ранее, хотя, не берите файлы только для чтения слегка; я предположу, что Вы знаете точно, что Вы делаете. Другой метод, хотя к scp или rsync файлы в/tmp/blah каталог на целевом сервере, и затем перемещают их когда-то записанный.
Если scp выдает вам «ошибку отказа в доступе» к данному файлу (но ssh -v показывает успешную аутентификацию), проблема заключается в том, что вы пытаетесь перезаписать существующий файл с другим набором разрешений, или файл может иметь другой владелец (с другими наборами разрешений).
Попробуйте удалить исходный файл. Затем последующие scps будут перезаписаны.