scp コマンドによってディレクトリの内容が完全にコピーされない

scp コマンドによってディレクトリの内容が完全にコピーされない

私はWindows 10を実行しており、サーバーはDebian 10上にあり、スヴェルト自分のコンピューターからリモート サーバーにビルド ディレクトリを作成します。次のコマンドを使用してファイルをコピーします。

scp -r ./build [email protected]:~/directory

しかし、いくつかのファイル (およびディレクトリ全体) が常に省略されており、最終的にはそれらを調べて手動でコピーする必要があります。

リモート ディレクトリ。

スクリーンショット。

ローカル ディレクトリ。ディレクトリ全体(play)が削除されます。

スクリーンショット。

verbose 引数を付けて実行してみましたが、特に何も表示されませんでした (そう思います)。なぜこのようなことが起こるのでしょうか。また、これを防ぐにはどうすればよいのでしょうか。

答え1

私は通常、一度に1つのファイルを転送するためにSCPを使用します。または、特定のディレクトリからパターンに一致するファイルのみを転送します。ディレクトリ構造全体をコピーするためには使用しません。

このような場合には、代わりに Rsync を使用します。たとえば、以下は Rsync の同等のコマンドに変換されたものです。

rsync -avzh ./build [email protected]:~/directory

試してみてください。うまくいくはずです。

答え2

SCP はリモート サーバー上にディレクトリ構造が存在する必要があると思います。フォルダーは作成されません。

rsync でフラグを使用する-eと、リモート シェルを使用して転送を実行できます。

rsync -r -e "ssh -p 222" /home/test/dev [email protected]:/home/remotetest/dev

答え3

私も同じ問題を抱えていましたが、おそらくこのバグが原因でした:参考:

SCP は、8 つ以上のフォルダーの深さを持つディレクトリ構造の再帰コピーでは失敗します。8 番目のディレクトリまでのディレクトリはコピー先に作成されますが、8 番目のディレクトリより深いディレクトリは作成されません。ファイルはまったくコピーされません。

私の場合、実際にはほとんどのファイルはコピーされましたが、8 レベル下のディレクトリだけでなく、それより上のディレクトリ レベルからも一部のファイルが欠落していました。

私のWindows 10(すべてのアップデートを含む)で機能不全に陥っていたscpのバージョンは8.1.0.1でした。openssh v9.5.0.0p1をインストールしました。スクープ代わりに問題なく動作します。

関連情報