Làm cách nào để tải lên một tệp bằng FTP từ dòng lệnh?


115

Tôi cần tải một tệp lên máy chủ FTP từ Ubuntu. Thao tác này nên được thực hiện trong một tập lệnh (ở chế độ không tương tác). Cú pháp đúng là ftpgì?

Tôi đang thử điều này, vô ích:

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

5
Làm thế nào để tôi trang man?
Ignacio Vazquez-Abrams

Tôi không biết nhiều về ftpcông cụ trong Ubuntu, nhưng có vẻ như nó bị nghẹt thở ftp://. Hãy thử lấy nó ra có thể?
Nate Koppenhaver

@ IgnacioVazquez-Abrams man ftptại dòng lệnh
c.gutierrez 13/03/2015

Tương tự: Đồng bộ hóa các tệp qua FTP , nhưng đối với nhiều tệp.
kenorb

Tôi đang nhận được '-u tùy chọn không xác định'.
Robert Reiz

Câu trả lời:


182

Đây là một cách tiếp cận:

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

Hoặc, tạo (hoặc chỉnh sửa) tệp ~ / .netrc trong thư mục chính của người dùng sẽ chạy lệnh ftp, cung cấp cho nó perms ( chmod 0600 ~/.netrc) thích hợp và thêm vào như sau:

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

Sau đó bỏ qua thông tin đăng nhập, như trong:

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

Ngoài ra, đây là cách bạn có thể làm điều tương tự bằng cách sử dụng curl:

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

12
Ồ, tôi không biết curlftp được hỗ trợ! Nó siêu tiện dụng.
Sébastien

62
+1 cho curlgiải pháp. Tại sao thậm chí bận tâm với người khác?
Asaph

3
@Asaph vì curl không được cài đặt ở nơi tôi cần làm điều này, vì vậy giải pháp khác có ích. Cảm ơn.
bobef

1
+1 cho cuộn tròn. Gọn gàng, sạch sẽ và đi thẳng vào vấn đề! Trong Debian / Ubuntu "apt-get install curl", nếu bạn không có nó.
GTodorov

2
các curlgiải pháp là tốt nhất và dễ nhất

17

Tôi có thể đề nghị ftp-upload. Đây là một công cụ nhỏ gọn mà bạn có thể cài đặt dưới Ubuntu sudo apt-get install ftp-upload.

Ví dụ sử dụng:

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

Bạn có thể cung cấp một liên kết đến công cụ hoặc tài liệu của nó?
bwDraco

1
Xin chào DragonLord, nếu bạn đang ở trong Ubuntu và bạn đã cài đặt ftp-upload (sử dụng lệnh tôi đã đưa ra trước đó), bạn có thể thực hiện man ftp-upload. Mong rằng sẽ giúp.
Floris

5

Bạn cần sửa URL được đưa ra trong tuyên bố của mình. Bạn đã nhận được lỗi vì URL không đầy đủ - nó thiếu tên của đối tượng bạn đang tải lên. Khi bạn thêm tên tệp sau 'example.com' như tôi đã thực hiện bên dưới, bạn sẽ thấy lệnh đơn thực sự hoạt động như bạn dự định.

Thử đi:

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


9
ftp: tùy chọn không hợp lệ - 'u'
Babken Vardanyan

2
Thật vậy :( ftp: u: tùy chọn không xác định
webDEVILopers

ftp: u: tùy chọn không xác định
Morten

4

Cài đặt ncftp và sử dụng công cụ ncftpput đi kèm với nó, khá giống với cú pháp này:

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

Bạn thậm chí có thể kiểm tra xem trạng thái tải lên là tốt hay xấu. Máy khách ftp bình thường cũng có thể được sử dụng cùng với mong đợi.


3

Bạn cũng có thể thử lftp.

Đây là một ví dụ:

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

Tham khảo tại đây để biết thêm chi tiết

.


2

Tải tệp lên một vị trí từ xa thông qua dòng lệnh

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

Tôi sử dụng BusyBox ftpputđể làm điều này:

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

Lưu ý: busybox ftpgetlàm việc tốt quá.


0

Bạn cũng có thể sử dụng lệnh sftp hoặc ftp

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


0

tôi đã cải thiện câu trả lời của Marty như dưới đây (bao gồm nhị phân):

[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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.