Tüm FTP dizinlerini tekrarlı bir şekilde indirmek için wget kullanma


93

Tüm dosya ve klasörleri bir ana bilgisayardan diğerine kopyalamak istiyorum. Eski ana bilgisayardaki dosyalar / var / www / html dizinindedir ve bu sunucuya yalnızca FTP erişimine sahibim ve tüm dosyaları TAR edemiyorum. FTP aracılığıyla eski ana bilgisayara düzenli bağlantı, beni / home / admin klasörüne getirir.

Yeni sunucumda aşağıdaki komutu çalıştırmayı denedim:

wget -r ftp://username:password@ip.of.old.host

Ama tek aldığım şey bir index.html dosyası.

Wget'ı FTP üzerinde tekrarlı bir şekilde kullanmak için doğru sözdizimi nedir?


2
Varsayılan olarak, wget -r'nin maksimum 5 özyineleme derinliğine sahip olduğunu unutmayın; daha derin bir alt dizininiz varsa, bunu değiştirmediğiniz sürece göz ardı edilirler (man sayfasındaki -l'ye bakın).
— mikewaters

Yanıtlar:


125

deneyin -miçin--mirror

wget -m ftp://username:password@ip.of.old.host

15
Güvenlik nedeniyle, --ask-passwordparolanın saklanmasını önlemek için kullanmak iyi olacaktır history.
— sağlama toplamı

Bu çok havalı. Bir cazibe gibi çalıştı ..
— Sambhav Sharma 7:15

Bu kabul edilen cevap olmalıdır (daha iyi görünürlük için).
— bgondy,

indirmek için dizin yolu içermiyor, sanırım @Formoda cevap daha iyi
— Wasim A.

@WasimA, ayrıca buraya dizin yolunu da ekleyebilirsiniz:wget -m ftp://username:password@ip.of.old.host/mydir/
— Alex Che

37

Haklısın, sonunda bir sonuca ihtiyacın var *:

wget -r ftp://username:password@1.2.3.4/dir/*

Paylaşılan sunucular için şöyle kullanabilirsiniz:

wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password

Paylaşılan sunucuların çoğu ftp-username kullaniciadi @ hostname gibi bir şey olduğundan, ilk wget komutu çalışmaz ve ikinci komut iyi çalışır.


1
Bu sadece bir dizin derinlemesine gider. -M bayrağını kullanmak için daha iyi
— SvennD

Bazı durumlarda ikinci komut alanı nedeniyle çalışmıyor, böyle bir paylaşım için ilk komutu kullanabilirsiniz. ** wget -r ftp: / / kullanıcı adı% 40host: şifre @ host / dir / **
— Wasim A.

Not: Ya kullanmalısınız -mveya -r -l inf-r 5. Bkz varsayılan yineleme derinliğini sahip olduğundan gnu.org/software/wget/manual/...
— ndemou

7

Wget öğesinin yanında, lftp'yi komut dosyası modunda da kullanabilirsiniz . Aşağıdaki komut belirli bir uzak FTP dizininin içeriğini verilen yerel dizine yansıtacaktır ve cron işine yerleştirilebilir:

lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'

Dizinlere özyinelemeyi otomatik olarak işler ve veri kaynağının indirileceği uzak kaynak başlangıç ​​dizinini belirlemeye izin verir.


5

'Curlftpfs - bir ftp sunucusunu yerel dizin olarak monte et' seçeneğini kullanabilir ve bir kere monte edildiğinde 'cp -r' gibi normal dosya araçlarını kullanabilirsiniz.


curlftpfslibcurl3-gnutls
— Düşmediğiniz

5

Tekrar tekrar FTP'den veri indirmek için aşağıdaki wget komutunu kontrol edin.

wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"

-r: Özyinelemeli indirmek için var.

-np: Hiçbir artan anne-baba için değildir.

-nH: Adı URL, abc.xyz.com ile aynı olan bir dizin oluşturmak için kullanılır

--cut-dirs: Üst dizin sayısını dikkate almamak içindir. Bu seçeneğin değeri komutunuz için farklı olacaktır.

Yukarıdaki komutu çalıştırarak kontrol edebilirsiniz.



2

Çalışması gerekir denemek:

wget -r ftp://ftp:ftp@ftp.sunet.se/tst/

2

kullanın:

wget -m ftp://192.168.0.1

ve tüm dosya ve klasörleri yansıtacaktır.


Dediğim gibi, FTP üzerinden giriş yapmak beni / home / admin klasörüne götürüyor ve ihtiyacım olan dosyalar / var / www / html dizininde. İstediğiniz komutu çalıştırdığımda, yalnızca / home / admin içeriğini alıyorum 192.168.0.1/var/www/html ile çalıştırmayı denedim , ancak daha sonra CWD / home / admin / var / www / html komutunu kullanmaya çalıştı . Kökten bu klasöre gitmesini nasıl sağlayabilirim?

Bu sorunla ilgili hiçbir deneyimim yok, ancak evinizin altındaki / var / www / html ile bir bağlantı oluşturmayı deneyebilirsiniz. Sonra gibi bir adres kullanabilirsiniz 192.168.0.1/html
— prestomation

Bir sembolik bağlantı oluşturmayı denedim, ancak yerelde benzer bir sembolik bağlantı oluşturmaya çalıştı.

1

Bu doğru sözdizimi. Beklenen sonuçları neden alamadığınızdan emin değilim.

Her zaman olduğu gibi, yapmanın birden fazla yolu var. Ncftp'yi, özellikle ncftpget'ı deneyin


Yeni sunucuma daha fazla yazılım yükleyemiyorum. Tüm dosyaları / var / www / html adresinden indirmem gerektiğini söylemem gerekir mi? Wget -r kullanıcı adı denedim : password@ip.of.old.host/var/www/html fakat bir dizin bulunamadı.

1

Bunu cron ya da başka bir şeye boşaltmaya çalışıyorsanız anlayabiliyorum, ancak neden normal istemcinizle mget * 'inizle sunucuya ftp yapmıyorsunuz? Bu başarının daha hızlı bir yolu olabilir.


Mget * 'ı denedim ama yerel alt klasörün mevcut olmadığını söyleyerek alt klasörler ile çalışmadı. Yerel klasörleri otomatik olarak oluşturmasını sağlamanın bir yolu var mı?

Müşterinize bağlı olarak, -r anahtarı genellikle hile yapar. IE: mget -r *
— dr.pooter 15:09

mmm. Linux'taki AFAIK standart ftp istemcisi dizinleri tekrar tekrar almak için tasarlanmamıştır. Yani - -r seçeneği yok. ncftp veya lftp gibi diğer istemciler özyinelemeli almayı destekler ancak genellikle varsayılan olarak kullanılamazlar.
— Stann

1

Dediğim gibi, FTP üzerinden giriş yapmak beni / home / admin klasörüne götürür ve ihtiyacım olan dosyalar / var / www / html dizinindedir.

Sanırım bu sizin durumunuzda işe yarayacak:

wget -r ftp://192.168.0.1/../../var/www/html

0

Windows'da, brinkster / username olarak kullanıcı adıyla karşılaşıyorum, bu yüzden sözdizimini kullanıyorsanız wget hata yapardı:

wget -m ftp://brinkster/username:password@ip.of.the.host

Bunu geçmek için kullan

wget -m ftp://brinkster%2Fusername:password@ip.of.old.host

Windows @ barındırma @ brinkster ile yüzleşmek zorunda kaldım.


-3

wget --user username --password yourpassword ftp://example.com/ftpfiles/filename işi yapacak veya dosya adı yerine entring * ekleyebilirsiniz: durumunuzda geçersiz olan portu wget yapar.


Birden fazla açık yanıt içeren dört yıllık bir soruya verilen bu cevap, yeni bir şey sunmuyor ve özyinelemeli bir kopya için gerekliliği bile atlamıyor.
— Sven
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.