커맨드 라인에서 FTP로 하나의 파일을 업로드하는 방법은 무엇입니까?


114

우분투에서 FTP 서버로 단일 파일을 업로드해야합니다. 이 작업은 스크립트에서 수행해야합니다 (비 대화식 모드). 올바른 구문은 ftp무엇입니까?

나는 이것을 시도하고 있는데 아무 소용이 없다.

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

5
맨 페이지는 어떻게합니까?
이그나시오 바스케스-아 브람스

ftp우분투 의 도구에 대해서는 많이 모르지만 도구가 질식하는 것처럼 보입니다 ftp://. 어쩌면 그것을 꺼내보십시오?
네이트 Koppenhaver

man ftp명령 행에서 @ IgnacioVazquez-Abrams
c.gutierrez

유사 : FTP를 통해 파일을 Syncronizing 하지만, 여러 파일.
kenorb

'-u unknown option'을 받고 있습니다.
Robert Reiz

답변:


181

한 가지 방법이 있습니다.

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

또는 ftp 명령을 실행할 사용자의 홈 디렉토리에 ~ / .netrc 파일을 작성 (또는 편집)하고 적절한 perms ( 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를 몰랐다 ! 매우 편리합니다.
Sébastien

61
curl솔루션의 경우 +1 왜 다른 쪽도 귀찮게합니까?
Asaph

3
@Asaph는 curl이 설치되어 있지 않기 때문에 다른 솔루션이 유용했습니다. 감사.
bobef

1
컬의 경우 +1 단정하고 깨끗하며 바로 포인트! 데비안 / 우분투에서 "apt-get install curl"이 없다면이를 설치하십시오.
GTodorov

2
curl솔루션은 최고의 가장 쉬운

17

나는 추천 할 수있다 ftp-upload. 우분투에서 설치할 수있는 깔끔한 작은 도구입니다 sudo apt-get install ftp-upload.

사용 예 :

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

도구 또는 해당 문서에 대한 링크를 제공 할 수 있습니까?
bwDraco

1
안녕 DragonLord, 당신이 우분투에 있고 ftp-upload를 설치했다면 (이전에 명령을 사용하여) 당신은 할 수 있습니다 man ftp-upload. 희망이 도움이됩니다.
Floris

5

명세서에 제공된 URL을 수정해야합니다. URL이 불완전하여 오류가 발생했습니다. 업로드중인 객체 이름이 누락되었습니다. 아래 에서처럼 'example.com'뒤에 파일 이름을 추가하면 단일 명령이 실제로 의도 한대로 작동하는 것을 볼 수 있습니다.

이 시도:

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


9
FTP : 잘못된 옵션 - 'U'
Babken의 Vardanyan

2
실제로 :( ftp : u : 알 수없는 옵션
webDEVILopers

ftp : u : 알 수없는 옵션
Morten

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

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잘 작동합니다.


0

sftp 또는 ftp 명령을 사용할 수도 있습니다

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


0

아래처럼 Marty 답변을 개선했습니다 (이진 포함).

[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.