Bir dosyayı FTP ile komut satırından nasıl yükleyebilirim?


114

Ubuntu'dan FTP sunucusuna tek bir dosya yüklemem gerekiyor. Bu işlem bir komut dosyasında (etkileşimli olmayan modda) yapılmalıdır. Doğru sözdizimi ne için ftp?

Bunu deniyorum, boşuna:

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

5
Sayfayı nasıl açarım?
Ignacio Vazquez-Abrams,

ftpUbuntu'daki araç hakkında pek bir şey bilmiyorum , ama sanki boğuluyor gibi görünüyor ftp://. belki onu çıkarmayı deneyin?
Nate Koppenhaver,

@ IgnacioVazquez-Abrams man ftpkomut satırı en
c.gutierrez

Benzer: Dosyaları FTP üzerinden senkronize etme , ancak birden fazla dosya için.
kenorb

'-U bilinmeyen seçenek' alıyorum.
Robert Reiz

Yanıtlar:


181

İşte bir yaklaşım:

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

Alternatif olarak, ftp komutunu çalıştıracak kullanıcının giriş dizinindeki ~ / .netrc dosyasını oluşturun (veya düzenleyin), uygun izinleri ( chmod 0600 ~/.netrc) verin ve aşağıdakileri ekleyin:

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

Ardından, giriş bilgilerini şu şekilde yapın:

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

Ayrıca, işte aynı şeyi curl kullanarak nasıl yapabilirsiniz:

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

12
Vay, curldesteklenen ftp’yi bilmiyordum ! Süper kullanışlı.
Sébastien

61
curlÇözüm için +1 . Neden diğeriyle rahatsız ediyorsun?
Asaph

3
@Asaph, çünkü curl bunu yapmam gereken yere takılı değil, bu yüzden diğer çözüm kullanışlı oldu. Teşekkürler.
bobef

1
Curl için +1. Düzgün, temiz ve düz noktaya! Eğer yoksa, Debian / Ubuntu'da "apt-get install curl" yazısını kullanın.
GTodorov

2
curlSolüsyon en iyi ve en kolay

17

Tavsiye edebilirim ftp-upload. Bu ubuntu altında kurabileceğiniz temiz küçük bir araçtır sudo apt-get install ftp-upload.

Kullanım örneği:

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

Araca veya belgelerine bir link verebilir misiniz?
bwDraco

1
Merhaba DragonLord, Ubuntu'daysanız ve ftp-upload yüklediyseniz (daha önce verdiğim komutu kullanarak) yapabilirsiniz man ftp-upload. Umarım yardımcı olur.
Floris

5

İfadenizde verilen URL'yi düzeltmeniz gerekir. URL eksik olduğu için hatayı aldınız - yüklediğiniz nesnenin adı eksikti. Aşağıda yaptığım gibi 'example.com' den sonra dosya adını ekledikten sonra, tek komutun gerçekten istediğiniz gibi çalıştığını göreceksiniz.

Bunu dene:

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


9
ftp: geçersiz seçenek - 'u'
Babken Vardanyan

2
Gerçekten :( ftp: u: bilinmeyen seçenek
webDEVILopers

ftp: u: bilinmeyen seçenek
Morten

4

Ncftp'yi yükleyin ve onunla birlikte gelen ncftpput aracını kullanın, bu sözdizimi gibi bir şey:

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

Yükleme durumunun iyi veya kötü olup olmadığını bile kontrol edebilirsiniz. Normal ftp istemcisi de beklemek ile birlikte kullanılabilir.


3

Ayrıca deneyebilirsiniz lftp.

İşte bir örnek:

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

Daha fazla bilgi için buraya bakın

.


2

Bir dosyayı komut satırı aracılığıyla uzak bir konuma yükleyin

#!/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's ftpputbunu yapmak için kullanıyorum :

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

Not: busybox ftpgetÇok iyi çalışın.


0

Sftp veya ftp komutunu da kullanabilirsiniz

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


0

Marty'nin cevabını aşağıdaki gibi geliştirdim (ikili kod dahil):

[Ftp_example_1.sh]

$ ftp_example_sh.sh döküm_dosyası

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 dökümü_dosyası

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.