
scp
SSHサーバーからいくつかのファイルをダウンロードするコマンドを実行しました。現在のフォルダに入れるのではなく、.
誤って入れました*
。 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
時にはエラーが発生することがあります。
¹名前が.で始まるファイルは除外されます。.