題 如何通過FTP從命令行上傳一個文件?


我需要從Ubuntu上傳一個文件到FTP服務器。此操作應在腳本中完成(在非交互模式下)。什麼是正確的語法 ftp

我正在嘗試這個,但無濟於事:

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

102
2017-08-15 01:40


起源


我怎麼做手冊頁? - Ignacio Vazquez-Abrams
我不太了解 ftp Ubuntu中的工具,但它看起來像是在窒息 ftp://。嘗試拿出那個可能嗎? - Nate Koppenhaver
@ IgnacioVazquez,艾布拉姆斯 man ftp 在命令行 - c.gutierrez
類似: 通過FTP同步文件,但對於多個文件。 - kenorb
我得到'-u未知選項'。 - Robert Reiz


答案:


這是一種方法:

$ 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

162
2017-08-15 04:39



哇,我不知道 curl 支持ftp!它超級方便。 - Sébastien
+1為 curl 解。為什麼甚至打擾另一個? - Asaph
@Asaph因為curl沒有安裝在我需要這樣做的地方,所以另一個解決方案派上用場了。謝謝。 - bobef
捲曲+1。整潔,乾淨,直截了當!在Debian / Ubuntu中“apt-get install curl”,如果你沒有它。 - GTodorov
該 curl 解決方案是最好的,也是最簡單的


我可以推薦 ftp-upload。這是一個簡潔的小工具,你可以在ubuntu下安裝 sudo apt-get install ftp-upload

用法示例:

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

13
2018-01-27 15:52



您能提供該工具或其文檔的鏈接嗎? - bwDraco
嗨DragonLord,如果你在Ubuntu並且你已經安裝了ftp-upload(使用我之前給出的命令)你可以做 man ftp-upload。希望有所幫助。 - Floris


您需要修復語句中給出的URL。您收到錯誤是因為URL不完整 - 它缺少您要上傳的對象的名稱。在'example.com'之後添加文件名,如下所示,您將看到單個命令確實按預期工作。

試試這個:

ftp -u FTP://用戶:secret@ftp.example.com/my-local-file.txt my-local-file.txt


5
2017-12-02 19:59



ftp:無效選項 - '你' - Babken Vardanyan
確實:( ftp:你:未知選項 - webDEVILopers
ftp:你:未知選項 - Morten


安裝ncftp並使用 ncftpput 與它一起出現的工具,幾乎像這樣的語法:

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

您甚至可以檢查上傳狀態是好還是壞。 普通的ftp客戶端也可以與expect一起使用。


4
2017-08-15 04:37





你也可以試試 lftp

這是一個例子:

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

請參考此處 更多細節


2
2018-01-10 09:06





通過命令行將文件上載到遠程位置

#!/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

2
2018-04-29 07:48





我用的是BusyBox ftpput 去做這個:

# /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 工作也很好。


1
2018-02-16 17:47





您也可以使用sftp或ftp命令

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


0
2018-02-16 19:37