Sadece ftp veya lftp kullanarak bir dizini FTP sunucusuna özyinelemeli olarak nasıl yükleyebilirim?


19

Yerel bir dizini uzak bir sunucuya kopyalamak için bir Linux kabuk komut dosyası yazıyorum (varolan dosyaları kaldırarak).

Yerel sunucu: ftp ve lftpkomutlar kullanılabilir, grafik araçlar yoktur ncftp veya herhangi bir grafik aracı yoktur.

Uzak sunucu: yalnızca FTP üzerinden erişilebilir. Rsync, SSH veya FXP yok.

Bir lftp komut dosyası oluşturmak ve sonra çalıştırmak için yerel ve uzak dosyaları listeleme hakkında düşünüyorum. Daha iyi bir yol var mı?

Not: Yalnızca değiştirilmiş dosyaları yüklemek bir artı olur, ancak zorunlu değildir.


ncftp tamamen söz konusu değil mi? En kolay imho olurdu. (ve bu şekilde kullandığım zaman yapacağımı biliyorum)
Sirex

Sirex: Bunu varsayılan olarak RedHat'ta gelen araçlarla yapmayı tercih ederim. Lftp kullanılamazsa, kullanıcıların ncftp'yi yüklemesi için bir gereksinim ekleyeceğim.
Nicolas Raoul

wput(Bir wget benzeri ftp yükleyici) sözdizimi :wput dir/ ftp://user:pass@host/dir
kenorb

Yanıtlar:


39

lftp bunu tek adımda, özellikle lftp mirror:

DÜZENLEME: lftp komut sözdizimi kafa karıştırıcı, gönderdiğim orijinal çağrı çalışmıyor. Şöyle deneyin:

lftp -e "ayna -R {yerel dizin} {uzak dizin}" -u {kullanıcı adı}, {şifre} {host}

-eanahtarın bağımsız değişkenleri içindeki tırnaklara dikkat edin .


1
1 lftp en ayna modu FXP (ı okuduktan sonra tam tersi ikna oldu kullanılabilir olmasa bile çalıştığını beni devrilme için tutorials.papamike.ca/pub/lftp.html bu işlemin başarılı olması için diyor "her iki sunucuları bu protokolü desteklemesi gerekir "). Ancak, bu komut Ubuntu sunucumda başarısız oluyor: lftp: mirror: Ad veya hizmet bilinmiyor, Bilinmeyen komut `-R '.
Nicolas Raoul

Cevabımı daha iyi bir lftp çağrısı ile yeniden yazdım, umarım yardımcı olur.
Phil Hollenback

Sonunda işe gt! Çalışması için uzaktan ve yerel geçiş yapmanız gerektiği anlaşılıyor. Lütfen güncelleyin, bu yanıtı kabul edeceğim. İşte çalışan bir komut satırı: lftp -e "ayna -R / tmp / mylocalfiles / var / www" -u uzaktan kumanda, uzaktan şifre uzaktan kumanda
Nicolas Raoul

Lftp belgelerinde -R kullanırken yerel ve uzak dizinleri değiştirmek zorunda kaldığınızı düşünüyorum ama unutmuş olmalıyım. Cevabım güncellendi.
Phil Hollenback

Nasıl başarısız oluyor? Ne yapmaya çalıştığını belirlemek için daha ayrıntılı çıktı için 'lftp -vvv' çalıştırmayı denediniz mi?
Phil Hollenback

1

Phil'in lftp'in ayna modunu kullanma fikrine dayanarak, bu komut hile yapar:

lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'

Bir dezavantajı, yerel sunucunun bir FTP sunucusunun çalışmasını gerektirmesidir.


1
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*

Bu benim için çalıştı, diğer birçok girişim başarısız oldu. Lftp'e girdikten sonra şu adresten daha fazla bilgi edinebilirsiniz:

help mput

2
Burada kullanmak muhtemelen daha iyi olurdu mirror -R.
17'de gauteh

@gauteh haklısın. en iyi cevap ^
austin

0

Sonunda cevap var !!! Ftpmirror.sh kabuk betiği oluştur

#!/bin/bash 
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
  • Path = ftp sunucusuna kopyalamak istediğimiz yerel dizin
  • username = ftp sunucusu kullanıcı adı
  • password = ftp sunucusu şifresi
  • ftp-server-ip = ftp sunucusunun IP adresi

Lftp paketi yüklü değilse yum kullanarak yüklü.

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.