コマンドラインからFTPで1つのファイルをアップロードする方法は?


115

UbuntuからFTPサーバーに1つのファイルをアップロードする必要があります。この操作は、スクリプトで実行する必要があります(非インタラクティブモード)。正しい構文はftp何ですか?

私はこれを試していますが、役に立ちません:

$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'

5
マニュアルページはどうすればいいですか?
イグナシオバスケス-エイブラムス

ftpUbuntu のツールについてはあまり知りませんが、で窒息しているようftp://です。多分それを取り出してみてください?
ネイトコッペンヘイバー

@ IgnacioVazquez-Abrams man ftpコマンドラインで
-c.gutierrez

同様:FTPを介したファイルの同期化、ただし複数のファイル用。
ケノーブ

「-u unknown option」が表示されます。
ロバートレイズ

回答:


182

1つのアプローチを次に示します。

$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF

または、ftpコマンドを実行するユーザーのホームディレクトリに〜/ .netrcファイルを作成(または編集)し、適切な権限(chmod 0600 ~/.netrc)を付与して、以下を追加します。

# ~/.netrc
machine ftp.example.com
login user
password secret

次に、次のようにログイン情報を省略します。

$ echo put my-local-file.txt | ftp ftp.example.com

また、curlを使用して同じことを行う方法は次のとおりです。

$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret

12
うわー、curlサポートされているftpを知りませんでした!とても便利です。
セバスチャン

62
curlソリューションの+1 。なぜ他の人も気にしますか?
アサフ

3
@Asaphは、これを行う必要がある場所にcurlがインストールされていないため、他のソリューションが役に立ちました。ありがとう。
ボベフ14

1
カールに対して+1。きちんとして、きれいで、まっすぐに!Debian / Ubuntuの「apt-get install curl」をお持ちでない場合。
-GTodorov

2
curlソリューションは、最高かつ最も簡単です

17

お勧めできftp-uploadます。これは、ubuntuからを介してインストールできる、すてきなツールですsudo apt-get install ftp-upload

使用例:

ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}

ツールまたはそのドキュメントへのリンクを提供できますか?
bwDraco

1
こんにちはDragonLord、Ubuntuにいて、ftp-uploadをインストールしている場合(前に指定したコマンドを使用)、ただ実行できますman ftp-upload。お役に立てば幸いです。
フローリス

5

ステートメントで指定されたURLを修正する必要があります。URLが不完全であるため、エラーを受け取りました-アップロードするオブジェクトの名前がありませんでした。以下で行ったように、「example.com」の後にファイル名を追加すると、1つのコマンドが実際に意図したとおりに機能することがわかります。

これを試して:

ftp -u ftp://user:secret@ftp.example.com/my-local-file.txt my-local-file.txt


9
ftp:無効なオプション
-'u

2
実際:( FTP:U:不明なオプション
webDEVILopers

ftp:u:不明なオプション
モーテン

4

ncftpをインストールし、付属のncftpputツールを使用します。この構文は次のようなものです。

ncftpput -u ftpuser -p ftppass ftphostname /path/where/to/upload localfile.name
if [ $? -ne 0 ]; then echo "Upload failed"; fi

アップロードの状態が良いか悪いかを確認することもできます。通常のftpクライアントもexpectとともに使用できます。


3

試すこともできlftpます。

以下に例を示します。

lftp -e 'cd folder1/folder2; put /home/path/yourfile.tar; bye' -u user,password ftp.theserver.com

詳細はこちらをご覧ください


2

コマンドライン経由でファイルをリモートの場所にアップロードする

#!/bin/bash
#$1 is the file name
#usage:this_script <filename>
HOST='yourhost'
USER="youruser"
PASSWD="pass"
FILE="abc.php"
REMOTEPATH='/html'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $REMOTEPATH
put $FILE 
quit
END_SCRIPT
exit 0

1

ftpputこれを行うにはBusyBoxを使用します。

# /bin/busybox ftpput

BusyBox v1.20.2 (Debian 1:1.20.0-7) multi-call binary.

Usage: ftpput [OPTIONS] HOST [REMOTE_FILE] LOCAL_FILE

Upload a file to a FTP server

    -v,--verbose            Verbose
    -u,--username USER      Username
    -p,--password PASS      Password
    -P,--port NUM           Port

注:busybox ftpgetうまく機能します。


0

sftpまたはftpコマンドも使用できます

sftp {user}@{IP}
Password:
put {path To File On Local Computer}


0

以下のようにマーティの答えを改善しました(バイナリを含む):

[ftp_example_1.sh]

$ ftp_example_sh.sh dump_file

ftp -n <<EOF
open 192.168.0.10
user anonymous aaa
binary
put $1
EOF

[ftp_example_2.sh]

$ ftp_example_2.sh 192.168.0.10 dump_file

ftp -n <<EOF
open $1
user anonymous aaa
binary
put $2
EOF

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.