scpを使用していくつかのファイルをコピーしていて、すでに存在するファイルを上書きしたくない。Scpを使用しているときにファイルを上書きしないようにする
私はcpコマンドを使用していた場合、これはcp -nを使って行うことができると思います。
scpにも同様のオプションがありますが、私はSCPのドキュメントを参照しましたが、そのようなオプションはないようです。
rsyncまたはsftpはこの問題を解決する方法ですか?
追加情報:
OS:Ubuntuの12.04
scpを使用していくつかのファイルをコピーしていて、すでに存在するファイルを上書きしたくない。Scpを使用しているときにファイルを上書きしないようにする
私はcpコマンドを使用していた場合、これはcp -nを使って行うことができると思います。
scpにも同様のオプションがありますが、私はSCPのドキュメントを参照しましたが、そのようなオプションはないようです。
rsyncまたはsftpはこの問題を解決する方法ですか?
追加情報:
OS:Ubuntuの12.04
rsync
は、問題の解決策であるようです。
rsync -avz foo:src/bar /data/tmp
-aオプションは、アクセス権、ディレクトリ構造、所有権、およびシンボリックリンクが保持されます:ここで私はhereからもらった例です。これらのオプションも個別に指定することもできます。
-vと-zはそれぞれ冗長と圧縮を意味します。大きなファイルをコピーしているのであれば、-zはいいですが、実際には必要ありません。
rsync over sshそれがなければならないだろう。
私はそれをテストしなかったかもしれませんが、最初にsshfs
でマウントしてから、cp
を使ってマッチさせてください。
私は過去にこのためにrsyncを使っていましたが、CopSSHとrsyncがないWindowsのボックスから取得しようとしていました:-(以下は、ファイルテストを使用して、上書き、およびsftpのインスタンスにみとめ「取得の要求を生成する。
( echo 'cd work/ftp/' ;
ssh <user>@<machine> 'cd work/ftp/ && ls -1 ITEM_SALE_SUMMARY_V.*.dat.xz' |
while read line; do [[ -f "$line" ]] || echo get "$line"; done
) | sftp <user>@<machine>
他は非rsyncのソリューションを必要と念のために!
私はちょうど簡単なハックを発見した。既読に既存のファイルは、 -only。
rsync -avz --ignore-existing /source folder/* [email protected]:/dstfolder/
--ignore-existing
は、リモートサーバーまたは送信先サーバー*のファイルを上書きしません。
だけ補うために他のソリューション:
1つのアスキー/ binファイルの場合は、あなたがそれを行うことができます:あなたは、既存のファイルを上書きしたくない場合は、完璧な理にかなっている
cat source_file | ssh host "test ! -f target_file && cat > target_file"
: 'chmod uw srcfile; scp -p srcfile $ USER @ $ host:$ directory/'を実行します。 scpのmanページから: '-p元のファイルから変更時刻、アクセス時刻、モードを保持する.' –