2013-03-29 23 views
7

Bir sunucuda sahip olduğumuz tüm dosyaların bir listesini almaya çalışıyorum (özellikle orada bulunan her pdf dosyası). Toplam komutanı kullanarak denedim ve dosyaları aradım. Ben orada vardı her pdf listesi var, içinde gibi, bir dereceye kadar çalıştı, ancak sonuç ihraç hiçbir şekilde ben almak için bir bash script kullanarak denedimFTP sunucusundan dosyaların listesini alın

(biz orada 100.000 + dosyaları var) bilgi, ama linux ile çok deneyimli değilim ve gerçekten ne yaptığımı bilmiyorum.

Benim komut dosyası aşağıdaki gibi görünür:

#!/bin/bash 
hostname="<host>" 
ftp -i -nv $hostname << EOF 
user <username> <password> 
ls -R 
EOF 

yukarıdaki senaryoyu Koşu i

?Invalid command 
501 Illegal PORT command 
ftp: bind: Address already in use 
221 Goodbye 

Herhangi yardım almak veya büyük takdir aramak ne beni işaret.

cevap

4

Veri aktarımları için PASV (pasif) modunu kullanmak üzere ftp'u yapılandırmaya çalışın. Bu, -p anahtarıyla yapılır.

Bu ftp istemcisi ile özyinelemeli bir dosya listelemesi yapabileceğinizden emin değilim. Benim durumumda ls -R sadece geçerli çalışma dir dosya ve dizinleri listesini verdi. Belki Recursive FTP directory listing in shell/bash with a single session (using cURL or ftp) size yardımcı olacaktır. kıvrılma ile

+0

'da çalıştı. Teşekkür ederim! pasif bayrak – Raz

26

, bu beklendiği gibi bu tür yukarıdaki komuta vb *.pdf gibi desenler çalışır
curl ftp://yourftpserver/dir/ --user username:password

+9

FYI çalıştı: 'curl -l' sadece isimleri döndürür. –

+1

Bunu nasıl tekrarlamak için kullanıyorsunuz? –

4

ncftpls ftp://yourftpserver/dir/*.pdf

Not kullanışlıdır.

Özyinelemek için -R'u kullanın. Daha fazla seçenek için bkz. man ncftpls.

ncftpls, ncftp paketi tarafından sağlanır. RHEL için, bu paket epel repo'da kullanılabilir. o bir dizin ise

3
curl ftp://user:[email protected]<ip>/path/ 

son / bir zorunluluktur. Bu, curl sürüm 7.29.0

İlgili konular