scp force overwrite read only files
You cannot modify/overwrite any file if you don't have write permission, and no possible scp
option may change that.
In order to solve it you should connect to the server first (using ssh
for instance) and modify the permission on your file. If you don't know how to do it, here's a simple command which does the trick:
chmod +w /path/to/your/file
A few notes:
There's probably a reason why these files are read-only. Before doing anything, make sure you know why and that changing this is not going to break anything or introduce security holes.
If necessary you could remove the write permission after executing your
scp
command (with this:chmod -w /path/to/file
).If there are too many files with read-only permission, you need to hunt them down.
find
(at least the GNU version available in most Linux distributions) has a-perm
test which you can use (man find
for more info).Someone might suggest that you connect as root or use
sudo
. It'll work, but for the love of God don't. I cannot begin to tell you how wrong this would be.
If SFTP is available on the server (it usually is), you can use SSHFS. This lets you mount the remote files on the client. You need an SFTP daemon on the server and FUSE on the client.
mkdir /net/myserver
sshfs myserver:/ /net/server
You can then use any local command such as cp
, chmod
, rsync
, etc., without having to worry whether the files are local or remote. With rsync
, pass the --no-whole-file
option to tell it to use its bandwidth-saving delta-transfer algorithm (which is otherwise turned off when rsync believes that both paths are local).
rsync -a --no-whole-file somedir /net/myserver/somewhere