107

1 日に数回、リモート サーバー上のログ ファイルを確認する必要があるテストを実行することがあります。ターミナルを使用してリモート サーバーにアクセスし、目的のログ ファイルをローカル マシンにsftpプルすることに慣れてきました。/tmp

man sftpコマンドを入力したり、Enterキーを押したり、コマンドを入力したり、Enterキーを押したりする必要がないように、基本的に1行で次のコマンドを実行する方法を見つけようとして、今日のオプションを調べていました。

(私が今やっていること)

sftp myuser@myserver
--mypassword at prompt
lcd /tmp
get /dir/dir/dir/dir/file
quit

man sftp今まで使ったことのないリファレンスを調べているときに見つけましscpた。私が探しているものかもしれませんが、安全にコピーされたファイルの行き先を指定する方法がわかりませんでした。

誰かが/dir/fileリモート サーバーから取得して にダウンロードする方法を教えてくれません/tmp/file_plus-my-descriptionか?

次のような通常のUNIXコピーと同様のsftpまたはscpコマンドを実行できることを望んでいました。

scp myuser@myserver /dir/file /tmp/file_plus-my-description

TerminalMac OS X 10.8 に組み込まれているものを使用しています。ありがとう。

4

7 に答える 7

236

2017 年 9 月の更新 - tl;dr

リモート ftp サーバーからマシンに単一のファイルをダウンロードします。

sftp {user}@{host}:{remoteFileName} {localFileName}

マシンからリモート ftp サーバーに 1 つのファイルをアップロードします。

sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'

元の答え:

わかりました、それで私は少しばかげていると感じます。しかし、私はそれを理解しました。私はほとんどそれを一番上に持っていました:

sftp user@host remoteFile localFile

ターミナルに表示される唯一のドキュメントは次のとおりです。

sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]

ただし、概要の下に次のように表示されるこのサイトに出くわしました。

sftp [-vC1 ] [-b batchfile ] [-o ssh_option ] [-s subsystem | sftp_server ] [-B buffer_size ] [-F ssh_config ] [-P sftp_server path ] [-R num_requests ] [-S program ] host 
sftp [[user@]host[:file [file]]] 
sftp [[user@]host[:dir[/]]]

したがって、簡単な答えは:、ユーザーとホストの後にリモート ファイルとローカル ファイル名を指定するだけです。信じられないほど簡単!

1 行、sftp でリモート ファイルをコピー:

sftp username@hostname:remoteFileName localFileName
sftp kyle@kylesserver:/tmp/myLogFile.log /tmp/fileNameToUseLocally.log

2016 年 2 月の更新

これを逆にして、1行のコマンドでローカルコンピューターからリモートサーバーにファイルをプッシュするコマンドを誰かが探している場合、sftp 以下のユーザー@Thariamaがそれを達成するためのソリューションを投稿しました. 追加のコードについては、彼らに帽子をかぶってください。

sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
于 2013-05-23T20:19:07.640 に答える
9

SCP回答

OPはSCPに言及したので、これがそれです。

他の人が指摘しているように、アップロード構文はダウンロード構文とは完全に異なるため、SFTP は混乱を招きます。同じ形式を使用すると、わずかに覚えやすくなります。

echo 'put LOCALPATH REMOTEPATH' | sftp USER@HOST
echo 'get REMOTEPATH LOCALPATH' | sftp USER@HOST

実際には、これはまだ混乱しており、人々がまだ SCP のような「時代遅れの」コマンドを使用している理由です:

scp USER@HOST:REMOTEPATH LOCALPATH
scp LOCALPATH USER@HOST:REMOTEPATH

SCP は安全ですが、時代遅れです。.bash_profileサーバーがメッセージを送信するとクラッシュするなど、決して修正されないバグがいくつかあります。ただし、使いやすさに関しては、開発者は何年も先を行っていました。

于 2020-11-04T11:04:12.173 に答える
3

sftp はバッチ ファイルをサポートします。

マニュアルページから:

-b batchfile

Batch mode reads a series of commands from an input batchfile instead of stdin.  
Since it lacks user interaction it should be used in conjunction with non-interactive
authentication.  A batchfile of `-' may be used to indicate standard input.  sftp 
will abort if any of the following commands fail: get, put, rename, ln, rm, mkdir, 
chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink, and lmkdir.  Termination 
on error can be suppressed on a command by command basis by prefixing the command 
with a `-' character (for example, -rm /tmp/blah*).
于 2013-05-23T19:08:51.500 に答える