Tek bir komutla bir FTP'ye dosya gönderin

Bir FTP sunucusuna nasıl bağlanılacağını ve bununla (veya içeriğiyle) terminal aracılığıyla, yani grafik uygulamaları kullanmadan nasıl çalışılacağını zaten görmüştük.

Bu sefer sana bir artı veya fazladan getiriyorum ... açıklamama izin ver.

Birkaç yıl önce onları terk ettim yedekleme yapmak için kullanılan bir bash betiği bir sunucudan veri (kaydeder). Komut dosyası bir dizi klasörü (/ etc / gibi), dışa aktarılan veritabanlarını vb. Kopyaladı ve bir parola ile bir .RAR veya .7z dosyasına sıkıştırdı (şu anda 7z kullanıyorum), betiğin sahip olmadığı tek şey o sıkıştırılmış dosyadan sonra bir FTP sunucusuna yüklenebilir, bu şekilde sunucudan kaydetme başka bir konuma kopyalanacaktır.

Bu günlerde betiği biraz optimize etmek, iyileştirmek ve açıkçası size bahsettiğim son şeye duyulan ihtiyaç gün ışığına çıktı, sıkıştırılmış arşivi harici bir FTP'ye yükleyerek.

Tek bir komutla bir FTP'ye nasıl yükleme yapılır?

İhtiyacım olan şey, bir FTP'ye kullanıcı adı ve parola ile bağlanmak için tek bir komut vermekti. dosyayı belirli bir klasöre yükleyin.

Bir FTP'ye bağlanmama, kullanıcı ve şifre koymama ve dosya yüklememe izin veren terminal uygulamaları çok fazla, ancak… bunu tüm parametreleri önceden belirlenmiş tek bir satırda yapmama izin veren…. soru orada.

4 veya 5'i gözden geçirdikten sonra… Huh! ... ama var kıvırmak

Curl ile bir FTP'ye yükleyin

Curl ile sonsuz sayıda şey yapabilirim, belki istediğimi yapabilirim… ve hepsi bu!

-U parametresi ile kullanıcı ve şifreyi belirleyebiliyorum, ayrıca -T parametresi ile bir dosya yüklemesini söyleyebilirim ve son olarak hangi FTP ve hangi klasöre yüklemek istediğimi söyleyebilirim, sonunda sadece tam yolu, aşağı yukarı şöyle koyun:

curl -u usuario:password -T archivo-backup.7z ftp://192.168.128.2/SERVER_BACKUPS/

Bunun yaptığı şey, kullanıcı ile FTP 192.168.128.2'ye bağlanmaktır. kullanıcı ve şifre şifre ve klasöre yükle SUNUCU_BACKUPS dosya aradı dosya-yedekleme.7z

Ve hazır!

Basit değil mi? ...

Tabii ki, bu bizim için ve tek başına komut için faydalı olabilir, ancak onu kullanmanın en iyi yolu, daha önce bahsettiğim gibi bir komut dosyası kullanmaktır.

Peki ya bahsedilen senaryo?

Komut dosyasında, özellikle kullanıcılardan gelen bazı istek veya önerileri dahil ederek iyileştirmeler yapıyorum.

  • Yapmak istediğim ilk şey, kaydetme dosyasını bir FTP'ye yükleyebilmek için tek bir komutla size açıkladığım tam da buydu.
  • Bir kullanıcının bana önerdiği diğer bir şey de yedek hazır olduğunda bir e-posta göndermekti, bunun için kullanabilirim mail gönder o un harici komut dosyası, Tercihen sendmail kullanacağım. Sendmail kullanmanın ayrıntısı, e-postayı göndermek için GMail hesabınızı (veya başka herhangi birini) şifrelemeyle ... SSL vb. İle kullanabilmenizdir.
  • Ayrıca bir kullanıcı, daha dinamik bir bildirim biçimi olarak, GTalk'ın XMPP'si veya Hotmail'leri (Canlı veya benzeri bir şey, ne dendiğini bile bilmiyorum) kullanılarak IM tarafından bir mesaj gönderilmesini tavsiye etti. Bunu önce GTalk ile yapmaya çalışacağım, çünkü Hotmail için bir Hotmail hesabı oluşturmak için kendimi bir yerde hatırlamam veya desteklemem gerekiyor, çünkü Microsoft'un sahip olduğu o kadar çok değişiklik-değişiklikle, bunun nasıl bir şey olduğu hakkında hiçbir fikrim yok.
  • İkincisinin başka bir çeşidi, Facebook veya Twitter tarafından gönderilen bildirimleri veya mesajları kullanmak olacaktır. Twitter için kullanabilirsiniz dal Facebook için kullanabilirsin fbcmd. Her iki uygulama da bu sosyal ağlarla terminalden etkileşim kurmama izin veriyor.
  • Dışa aktardığım sql'nin bütünlüğünü de kontrol etmeyi düşünüyorum ama bu zaten biraz daha zaman gerektiriyor :)

ftp sunucusu

Son!

Pekala, ekleyecek başka bir şey yok ... Şimdilik, onları optimize etmek ve iyileştirmek için Bash'te oluşturduğum birkaç senaryoyu ele alıyorum, umarım haber getirmek çok uzun sürmez 😀

selamlar


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Barnarasta dijo

    Harika proje,
    Onu büyük bir ilgiyle takip edeceğim.
    - Sunucu arızalıysa veya teslimat yapılamıyorsa @ herhangi bir bildirim var mı?

    Terminal / konsol severlerin makalelerini okumak son derece keyifli.

    1 salu2

    1.    KZKG ^ Gaara dijo

      Zevk benimdir 🙂

      İyi fikir, FTP sunucusunun çevrimiçi olup olmadığını doğrulamak ve değilse bir e-posta gönderin ... Bunu dikkate alacağım ^ _ ^

  2.   Moses Serrano dijo

    Yedek komut dosyanızı uyarladım ve son dosyayı Dropbox'a yüklemenizi sağlayan bir proje uyarladım (https://github.com/andreafabrizi/Dropbox-Uploader) ve sonunda sendmail ile bir e-posta gönderin.

  3.   dhunter dijo

    Gaara bunun için doğru aracı denemelisiniz: lftp

    Aynalamayı bile destekler, repoları ftp'den senkronize etmek paha biçilemez.

    http://www.cyberciti.biz/faq/lftp-mirror-example/

  4.   Jorge dijo

    Çok ilginç, bu sistemin güzelliği, aynı sonucu birden çok yoldan elde edebilirsiniz; Bir ftp sunucusuna dosya yüklemeyi başardığım yöntemi size gösteriyorum, biraz rustik ama yine de çalışıyor:

    {
    echo kullanıcı kullanıcı şifresi
    yankı kutusu
    yankı istemi
    echo cd / dizin / / sunucudan / ftp
    echo dosya koy
    yankı kapat
    güle güle
    } | ftp -n server.ftp

    1.    KZKG ^ Gaara dijo

      OOOHHH ilginç, böyle ne yapılabileceğini bilmiyordum 😀
      Teşekkürler!

  5.   Sephiroth dijo

    Diğer yollar, örneğin wput ile:

    wput file_to_upload ftp: // KULLANICI: PASS@123.123.123.123: 21

    veya eski telnet kullanan bir komut dosyasında basitliği tercih edenler için:

    ftp -n server_ip << EOF
    anonim kullanıcı test@test.cu
    FILE.txt gönder
    çıkış
    EOF

  6.   xavier dijo

    Merhaba, ben Linux'ta yeni başlayan biriyim ve bilgisayar bilimini bilmiyorum - sadece kullanıcı düzeyinde - veya programlama veya bunun gibi bir şey, bu konuda pratik olarak cahilim. Bu makaleyi okuyordum ve ikinci paragrafın sonunda "yer" kelimesini okudum; bu kelime yanlış kullanıldı, şunu demek istediniz: konum, konum, konum, yer. RAE "http://dle.rae.es/?id=NXeOXqS" dediği gibi konum kelimesi başka bir anlama gelir.