scpはこのファイルをどこに保存しますか?

scpはこのファイルをどこに保存しますか?

scpSSHサーバーからいくつかのファイルをダウンロードするコマンドを実行しました。現在のフォルダに入れるのではなく、.誤って入れました*。 scpがファイルをコピーしてどこかに置いたようです。私のコマンドは次のようになります。

$moshe> scp [email protected]:~/SomeDirectory/SubDir/* *

私は次のように入力しようとしました:

$moshe> scp [email protected]:~/SomeDirectory/SubDir/* .

彼らはどこにいますか?

答え1

シェルは*現在のディレクトリのすべてのファイルに展開されます。scp複数のソースファイルとターゲットパス(と同じ)が必要なので、現在のディレクトリの最後のファイルを除くすべてのファイルを最後のファイルにcpコピーします。[email protected]:~/SomeDirectory/Subdir/*したがって、現在のディレクトリのファイルのリストが変更されていないとし、最後にリストされたディレクトリを確認してください。

$ ls | tail -1

答え2

現在のディレクトリのサブディレクトリに配置されます。

たとえば、現在のディレクトリが次のような場合:

[andcoz@...] ~/test> ls -F
e  f  r  s  v  w  Z/

Zはディレクトリです。あなたが書くとき:

scp [email protected]:~/SomeDirectory/SubDir/* *

シェル拡張はコマンドを次の形式に変換します。

scp [email protected]:~/SomeDirectory/SubDir/* e  f  r  s  v  w  Z 

Zしたがって、リモートシステム上のすべてのファイルとすべてのローカルディレクトリファイルがそのディレクトリにコピーされます。

答え3

現在のディレクトリにファイルがない場合、scpすべてのリモートファイルは名前付きディレクトリに順次コピーされます*。つまり、./*ファイルには最後のリモートファイルがアルファベット順に含まれます。リモートファイルがディレクトリの場合、scpエラーメッセージが表示されますが、コピーは続行されます。

現在のディレクトリに通常のファイルが1つしかない場合は、scpすべてのリモートファイルがそのファイルに順番にコピーされます。

現在のディレクトリに複数の項目がある場合は、アルファベット順の最後の項目のファイル形式によって状況が異なります(実行中の場合はリストの最後の要素)ls

  • 通常のファイルの場合、scp「ディレクトリではありません」というエラーで中断されます。
  • ディレクトリの場合、scpすべてのリモートファイルと現在のディレクトリの最後のエントリを除くすべてのエントリがそのディレクトリにコピーされます。

リモートディレクトリをマウントすることをお勧めしますsshfsまたはワイルドカードなしでrsync -avまたはを使用してrsync -auvファイルをコピーします。scp時にはエラーが発生することがあります。

¹名前が.で始まるファイルは除外されます.

関連情報