scpは読み取り専用ファイルを強制的に上書きします。

scpは読み取り専用ファイルを強制的に上書きします。

scp一部のファイルを移動し、ターゲットサーバー上のそのファイルの既存のインスタンスを上書きするために使用したいと思います。そのうちのいくつかは読み取り専用である可能性があり、もちろんscp「権限の拒否」によって失敗します。--forceの型スイッチが見つからないようです。scpこれは可能ですか?

私は知っていますが、rsync現在ターゲットサーバーでは利用できません。

答え1

書き込み権限がないと、ファイルを変更/上書きできず、scpファイルを変更するオプションもありません。

この問題を解決するには、まずサーバーに接続(ssh使用するなど)し、ファイルの権限を変更する必要があります。何をすべきかわからない場合は、問題を解決するための簡単なコマンドは次のとおりです。

chmod +w /path/to/your/file

いくつかの注意:

  • おそらく、これらのファイルが読み取り専用である理由があります。何をする前に、なぜこの設定を変更しても問題が発生したり、セキュリティホールが発生しないことを確認してください。

  • 必要に応じてコマンドを実行した後、書き込み権限を削除できますscpchmod -w /path/to/file:使用)。

  • 読み取り専用権限を持つファイルが多すぎる場合は、そのファイルを見つける必要があります。find(少なくともほとんどのLinuxディストリビューションで利用可能なGNUバージョン)-perm利用可能なテストがあります(man find詳細)。

  • 誰かがrootに接続するか、を使用することを提案するかもしれませんsudo。しかし、マブソサ、そうではありません。これがどれほど間違っているかは言えません。

答え2

サーバーがSFTPを使用できる場合(通常は使用可能)、次のものが使用できます。SSHFS。これにより、クライアントにリモートファイルをマウントできます。サーバーにSFTPデーモンをインストールする必要があります。ヒューズクライアントから。

mkdir /net/myserver
sshfs myserver:/ /net/server

その後、ファイルがローカルなのかリモートなのか気にせずに、cpなどchmodのローカルコマンドを使用できます。をrsync使用して帯域幅を節約するデルタ転送アルゴリズム(rsyncが両方のパスをローカルと見なすとオフ)を使用するように指示するオプションをrsync渡します。--no-whole-file

rsync -a --no-whole-file somedir /net/myserver/somewhere

答え3

Rsyncはターゲットサーバーに存在する必要はありません。

# rsync -avz -e ssh /path/to/files/ [email protected]:/tmp/ 

これに関する情報は次のとおりです。

http://troy.jdmz.net/rsync/index.html

前述のように、読み取り専用ファイルを軽く見ないでください。自分が何をしているのかを正確に知っているとします。別の方法は、ファイルをターゲットサーバーの/ tmp / blahディレクトリにscpまたはrsyncしてから書き込んで移動することです。

答え4

scpが特定のファイルに対して「許可拒否エラー」を表示する場合(ただし、ssh -vに認証の成功が​​表示される)、問題は、既存のファイルを別の権限セットで上書きしようとしたり、ファイルに別の所有者がいる可能性があることです。 (その他の権限セット)。

元のファイルを削除してみてください。次にその後のscpsを上書きします。

関連情報