scp -i /Downloads/class4.pem/ ec2-user@hostip: /home/ec2-user/test
ローカルMacからec 2にファイルをアップロードしようとしています。私は何が間違っていますか?
答え1
ファイルのコピーまたは移動に関連するほとんどすべてのUnixツールと同様に、ソースファイルを指定する必要があります。今後目的地。また、scpの
-r
オプションを使用してディレクトリツリー全体を繰り返しコピーしない限り、実際のファイル名(または1つ以上のファイル名と一致するglobパターン)もソースとして指定する必要があります。ターゲットは単一のフルファイル名またはディレクトリにすることができます(複数のファイルまたは再帰ディレクトリツリーをコピーする場合は、しなければならないディレクトリ)です。
scp
ソースまたはターゲットが指定されている場合、デフォルトはユーザーのホームディレクトリですuser@host:
(または、host:
ローカルユーザー名がリモートユーザー名と同じか、ユーザー名がの規則によって提供される場合~/.ssh/config
)。アイデンティティ文書(秘密鍵など)は次のとおりです。文書、ディレクトリではない
/Downloads/class4.pem
のでいいえまた、IDファイルには他の人がアクセスできません。つまり、/
実行中のユーザーが所有する必要があり、そのユーザーのみが読み取り可能である必要scp
があります(例えば、権限600または400)。
あなたの命令:
scp -i /Downloads/class4.pem ec2-user@hostip: /home/ec2-user/test
コピー中~から ec2-user@hostip:
到着 /home/ec2-user/test
。
たとえば、物理ファイルが指定されておらず、そのオプションが使用されていないscp: .: not a regular file
ため、エラーメッセージで失敗します。ec2-user@hostip:
-r
/home/ec2-user/test
ローカルファイルをec2-userのホームディレクトリにコピーするには、hostip
次の手順を試してください。
scp -i /Downloads/class4.pem /home/ec2-user/test ec2-user@hostip:
ファイルではなくディレクトリで、ディレクトリ全体をtest
コピーするには、次のようにします。~ec2-user/test/
hostip
-r
scp -i /Downloads/class4.pem -r /home/ec2-user/test/ ec2-user@hostip:
または、ローカルディレクトリの最上位レベルのファイルを/home/ec2-user/test/
ホストのリモートユーザーホームディレクトリにコピーしますec2-user
。
scp -i /Downloads/class4.pem /home/ec2-user/test/* ec2-user@hostip:
test /のサブディレクトリが存在すると、エラーメッセージが生成されます(*
globと一致しますが、まだ使用していないため-r
)。
しかし、厳しい要件はありませんが、次のことを行うのが最善です。いつも/
ディレクトリに末尾があります。これは、特に何百ものファイルを誤って単一のファイルにコピーすることに対する基本的な保護を提供しない古いバージョンのユーティリティでは、致命的なエラーを防ぎますmv
(最後に移動したファイルを除くすべてのファイルは消えました!)。ターゲットがディレクトリでない場合、後に/があるとmvは失敗します。ほとんどの最新バージョンのツールは、その動作をオーバーライドし、その動作を実行しないように強制しない限り、このようなエラーを検出して防止します。
後続/も独自の文書化され、個々のファイルだけでなく、ディレクトリにコピーするか、ディレクトリからコピーすることを明確にします。
(*)例外がありますが、通常は一般的な慣行(ターゲットの前にソースなど)を無視し、すべてのソースファイルの前にターゲットディレクトリを配置するための特定のオプションです。
たとえば、-t, --target-directory=DIRECTORY
GNUバージョンではoptionscp
などmv
があります。これは主に便宜上のものであるか、ln
または他のプログラムと一緒にこれらのプログラムを使いやすくします(ソースファイル名のリストをコマンドの途中に挿入するよりもコマンドの最後に追加する方が簡単です)。find ... -exec ...
xargs