回答:
sshとは異なり、scpは小文字のpではなく大文字のPスイッチを使用してポートを設定します。
scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default
小文字のpスイッチは、時刻とモードを保持するためにscpで使用されます。
以下は、scpのmanページからの抜粋で、2つのスイッチに関するすべての詳細と、scpに大文字のPが選択された理由の説明が含まれています。
-P portリモートホストで接続するポートを指定します。-pはrcp(1)のファイルの時間とモードを保持するためにすでに予約されているため、このオプションは大文字の「P」で書かれていることに注意してください。
-p変更時間、アクセス時間、および元のファイルのモードを保持します。
(非常に賛成された)コメントの1つに対処するために更新して脇に置きます:
scp
オプションの順序に関するアブドゥルのコメントに関して、彼が示唆していること:
scp -P80 -r some_directory -P 80 ...
...、オプションとパラメーターが点在しています。getopt(1)
パラメータは、オプションの後に来る必要があり、それらに点在してはならないことを明確に定義します。
getoptで呼び出されるパラメーターは、getoptが解析を行う方法を変更するオプション(構文のオプションとoptstring)と、解析されるパラメーター(構文のパラメーター)の2つの部分に分けることができます。2番目の部分は、オプション引数ではない最初の非オプションパラメータから、または最初の '-'の後に始まります。最初の部分に「-o」または「--options」オプションが見つからない場合、2番目の部分の最初のパラメーターが短いオプション文字列として使用されます。
-r
コマンドラインオプションはそれ以上引数を取らないため、some_directory
「オプション引数ではない最初の非オプションパラメータ」です。したがって、getopt(1)
manページに明記されているように、それに続くすべてのコマンド行引数(つまり、-P 80 ...
)は、非オプション(および非オプション引数)と見なされます。
したがって、実際には、これはgetopt(1)
、オプションの終わりと、灰色の後続のテキストbingで区切られたパラメーターの始まりを示した例の見え方です。
scp -P80 -r some_directory -P 80 ...
これはscp
動作とは関係なく、POSIX標準アプリケーションgetopt(3)
がC関数のセットを使用してコマンドラインオプションを解析する方法とはすべて関係があります。
コマンドラインの順序付けと処理に関する詳細については、次getopt(1)
を使用してマンページをお読みください。
man 1 getopt
scp
正しいオプションの順序を要求します:scp -r some_directory -P 80 ...
機能しません----- scp -P 80 -r some_directory ...
機能します。
-P
パラメーターの順序を説明する回答があります。基本的に、ポートはホストの前に移動する必要があります。これにより、あいまいさがなくなり、-P
両方のホストがリモートの場合に2つのパラメーターが許可されます。
あなたは何がより涼しいか知ってい-P
ますか?何もない
このサーバーを数回以上使用する場合は、次の~/.ssh/config
ようなエントリを含むファイルをセットアップ/作成します。
Host www.myserver.com
Port 80
または
Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
HostName www.myserver.com
Port 80
User username
それからあなたは使うことができます:
scp username@www.myserver.com:/root/file.txt .
または
scp short:/root/file.txt .
ssh、scp、rsync、gitなどの「ホスト」行で何でも使用できます
構成ファイルで使用できる多くの構成オプションがあります。以下を参照してください。
man ssh_config
scp -3
異なるポートでsshリスナーを使用するサーバーとの間のサーバーの使用を許可する唯一のソリューション。scp -3 -P 123 server1:/file -P 456 server2:/file
または同様の代替手段が機能しない場合、scpは両方のサーバーで同じポートを想定しました
標準とは異なるポートを使用しており、次のようにファイル間でファイルをコピーします。
scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine
これは、使用頻度が低い場合にのみ使用します。スケジュールに基づいて繰り返し実行される場合は、rsyncおよびcronジョブを使用して実行する必要があります。
ホストにファイルをコピーしています:
scp SourceFile remoteuser@remotehost:/directory/TargetFile
ホストからファイルをコピーしています:
scp user@host:/directory/SourceFile TargetFile
ホストからディレクトリを再帰的にコピーしています:
scp -r user@host:/directory/SourceFolder TargetFolder
注:ホストがポート22以外のポートを使用している場合は、-Pオプションで指定できます。
scp -P 2222 user@host:/directory/SourceFile TargetFile
これが完璧な答えを探している誰かを助けることを願っています
ポートが定義されているサーバーから別のサーバーまたはローカルマシンにフォルダーまたはファイルをコピーする
scp -r -Pポートuser @ IP_address:/ home / file / pathDirectory。
**Note:** The last . on the command directs it to copy everything in that folder to your directory of preference