プロが教える店舗&オフィスのセキュリティ対策術

scpコマンドで、「追記」のオプションはありますか?

会社で、scp(scp2)のコマンドを組み立てている、Cシェルの改修をすることになりました。
私は"scp"というものを知ったのがここ数日、Cシェルもかろうじて読めるくらいなのですが、そのシェルを作った方がもう退職されてしまったため、私が改修することになりました…

概要は、SSHサーバ上にあるファイルを別サーバへコピーしているのですが、それを「追記」できるようにしたいのです。

いくつかサイトを見てみたのですが、それらしきオプションがある、というのは見つけられませんでした。
もう、手も出せず困っています。。。
どなたか、詳しい方からのご教示をお待ちしております。

A 回答 (1件)

scpコマンドそのものにはファイルの追記機能は無いと思います。


追記と言っても色々なパターンがある気がします。
以下の中に所望のものはありますか?

(1)別マシン(remote-host)にある「/home/test/test.txt」というファイルにメッセージを1行追加する場合、次のようになります。

% echo "test message" | ssh remoto-host 'cat >> /home/test/test.txt'

(2)追記するファイルが自マシンにあるのであれば、自マシン上で追記した後コピーすることになります。ただ、(scpによる)ネットワークを介したファイルコピーはファイルが大きくなるほど時間がかかるので、コピーを行う頻度を下げる等の工夫が必要です。

% echo "test message" >> /home/test/test.txt
% scp -p /home/test/test.txt remote-host:/home/test/test.txt

(3) (2)の際、scpの代わりにrsyncを使うと、コピー元とコピー先のファイル内容を比較して
、極力変化した部分だけをコピーするので追記したファイルを扱う場合に効率が良いです。(ただ(2)で言ったコピー頻度を下げる工夫はやはり必要だと思います。)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!