CURL kullanarak FTP'den dosya indirme


20

Bir FTP sunucusundan bilgisayarımdaki yerel bir sürücüye bir dosya indirmek için bir cURL komutu kullanmaya çalışıyorum. denedim

curl " ftp: // myftpsite " --kullanıcı adı: şifre -Q "CWD / users / myfolder /" -O "myfile.raw"

Ancak şöyle bir hata döndürür:

curl: Uzak dosya adının uzunluğu yok!
curl: daha fazla bilgi için 'curl --help' veya 'curl --manual' komutunu deneyin
curl: (6) host: myfile.raw; İstenen türde veri kaydı yok

Başka yöntemler denedim, ama hiçbir şey işe yaramıyor.

Ayrıca, dosyanın hangi klasöre indirilmesini istediğimi nasıl belirleyeceğimi tam olarak bilmiyorum. Bunu nasıl yaparım?

Yanıtlar:


26

Deneyin

curl -u user:password 'ftp://mysite/%2fusers/myfolder/myfile/raw' -o ~/Downloads/myfile.raw

FTP URL'lerinde, yol başlangıç ​​dizinine göredir (genellikle homedir). Mutlak bir yol belirtmeniz gerekir ve bu %2f, belirtmek için kullanmak anlamına gelir /. ftp:URL'lerde yol , her biri ayrı bir komuta verilmesi gereken eğik çizgi ile ayrılmış adların bir listesi olarak değerlendirildiğinden bu gereklidir CWD. %2fDeşifre edilir sonra bölme. Bkz. RFC 1738 ve FTP URL'leri .

Çıktı konumuna gelince, sadece bir yol verin -o.


Güvenlik önerileri:

  • Şifrenizi URL'ye koymayın. İçinde saklamak da ~/.netrcgüvenli değildir, ancak en azından gizlidir ps -ef.

  • Parolanız düz metin olarak gönderilir. Sunucu destekliyorsa, curl --ssl-reqdveyacurl ftps://mysite/...

  • SFTP (SSH dosya aktarım protokolü) kullanmak daha da iyi olurdu.


Harika çalıştı. % 2f'nin nasıl kullanıldığını tam olarak anladığımdan emin değilim, / kullandığınız gibi, ama hey işe yarıyor, bu yüzden şikayet etmeyeceğim. Yardım için teşekkürler!
Josiah

1
@Josiah: URL "yol" tarafından bölünmüş gibi görünüyor /ve her argüman bir ile gönderilir CWD: komuta %2fusers/myfolderolarak CWD /users, CWD myfolder. Bu konuda RFC 1738'e bakın .
user1686

2
curl -T /users/myfolder/myfile.raw -u username:password "ftp://myftpsite/path/myfile.raw"

Bunu her zaman kullanıyorum. Mucizevi şekilde çalışır.


1
Bu cevabın yanlış olduğunu ilk fark eden ben miyim? -T parametresi "dosya yükleme" anlamına gelirken, OP "dosya indirme" istedi
Kar.ma

0

Deneyin:

curl "ftp://user:password@myftpsite/users/myfolder/myfile.raw"

(Uzak dosya adı 'dosyam.raw' ise)


Bunu denediğimde, aşağıdaki hatayı alıyorum: "curl: (9) Sunucu verilen dizine değiştirmenizi reddetti". Ben neden -Q "CWD" komutunu kullanmak gerektiğine inanıyorum.

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.