42

scp を使用していくつかのファイルをコピーしていましたが、既に存在するファイルを上書きしたくありません。

cp コマンドを使用していた場合、これは cp -n を使用して実行できると思います。

scp に同様のオプションはありますか。SCP のドキュメントを確認しましたが、そのようなオプションはないようです。

この問題を解決するには、rsync または sftp を使用しますか?

追加情報:

OS: Ubuntu 12.04

4

7 に答える 7

37

rsyncあなたの問題の解決策のようです。これは私がここから得た例です:

rsync -avz foo:src/bar /data/tmp

-a オプションは、パーミッション、ディレクトリ構造、所有権、およびシンボリック リンクを保持します。これらのオプションを個別に指定することもできます。

-v と -z は、それぞれ冗長と圧縮を意味します。大きなファイルをコピーする場合は -z が便利ですが、実際には必要ありません。

于 2012-11-16T05:48:51.863 に答える
18

簡単なハックを見つけました。既存のファイルを読み取り専用としてマークします。

于 2013-11-14T15:49:25.470 に答える
15
rsync -avz --ignore-existing /source folder/* user@remoteserver:/dstfolder/

--ignore-existingリモートサーバーまたは宛先サーバー*のファイルを上書きしません。

于 2014-04-21T03:45:21.170 に答える
0

他のソリューションを補足するために:

1 つの ascii/bin ファイルの場合、次のように実行できます。

cat source_file | ssh host "test ! -f target_file && cat > target_file"

于 2015-03-31T15:39:06.860 に答える
0

私はそれをテストしませんでしたが、おそらく最初にマウントしてsshfsから使用cpするとうまくいくでしょう。

于 2013-07-31T21:09:15.003 に答える
0

これには過去にrsyncを使用しましたが、CopSSHを使用してrsyncを使用せずにWindowsボックスから取得しようとしていることに気付きました:-(ファイルテストを使用して上書きされるファイルを排除し、 sftp インスタンスへの複数の「get」リクエストを生成します。

(  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 ソリューションを必要とする場合に備えて!

于 2013-08-09T00:25:33.663 に答える
-3

rsyncoversshである必要があります。

于 2012-11-16T05:41:07.837 に答える