Invia un file a un FTP con un singolo comando

Abbiamo già visto come connettersi a un server FTP e lavorare con esso (o il suo contenuto) tramite terminale, cioè senza utilizzare applicazioni grafiche.

Questa volta ti porto un plus o un extra ... lasciami spiegare.

Alcuni anni fa li ho lasciati uno script bash utilizzato per eseguire i backup (salva) di dati da un server. Lo script ha copiato una serie di cartelle (come / etc /), database esportati, ecc ... e lo ha compresso con una password in un file .RAR o .7z (attualmente uso 7z), l'unica cosa che mancava allo script era potendo poi caricare quel file compresso su qualche server FTP, in questo modo il salvataggio dal server verrebbe copiato in un'altra posizione.

In questi giorni ho ripreso lo script per ottimizzarlo un po ', migliorarlo ed ovviamente è venuta alla luce la necessità dell'ultima cosa che ti ho menzionato, caricare l'archivio compresso su un FTP esterno.

Come caricare su un FTP con un solo comando?

Quello di cui avevo bisogno era tramite un unico comando per connettermi a un FTP con nome utente e password, e bene; carica il file in una cartella specifica.

Applicazioni terminali che mi permettono di connettermi a un FTP, inserire user & password e caricare file ce ne sono molte, ma ... che mi permettono di fare tutto questo in una riga, con tutti i parametri già specificati ... hey ecco la domanda.

Dopo aver esaminato 4 o 5 ... ho pensato, eh !! ... ma esiste arricciare

Carica su un FTP con curl

Con curl posso fare un'infinità di cose, forse posso fare quello che voglio ... e basta!

Con il parametro -u posso specificare user e password, inoltre con il parametro -T posso dirgli di caricare un file, e infine di dirgli su quale FTP e quale cartella voglio caricarlo, alla fine mi limito metti il ​​percorso completo, più o meno così:

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

Ciò che fa è connettersi all'FTP 192.168.128.2, con l'utente utente e password parola d'ordine e caricare nella cartella SERVER_BACKUP il file chiamato file-backup.7z

E pronto!

Semplice vero? ...

Certo, questo può esserci utile anche il comando da solo, tuttavia, il modo migliore per usarlo è con uno script come ... quello che ho citato prima

E che dire della sceneggiatura menzionata?

Sto apportando miglioramenti allo script, in particolare incorporando alcune richieste o suggerimenti da parte degli utenti.

  • La prima cosa che volevo fare era proprio questa che ti ho appena spiegato, con un unico comando per poter caricare il file di salvataggio su un FTP.
  • L'altra cosa che un utente mi ha consigliato è stata di inviare un'e-mail quando il backup era pronto, per quello che posso usare sendmail o un script esterno, Userò preferibilmente sendmail. Il dettaglio dell'utilizzo di sendmail è che puoi utilizzare il tuo account GMail (o qualsiasi altro) per inviare l'email, con crittografia ... SSL e quant'altro.
  • Inoltre, un utente ha raccomandato che anche, come forma di notifica più dinamica, un messaggio venga inviato tramite IM utilizzando XMPP di GTalk o Hotmail (Live o qualcosa del genere, non so nemmeno come si chiama). Proverò a farlo prima con GTalk, perché per Hotmail dovrei ricordarmi o sostenermi da qualche parte per creare un account Hotmail, perché con così tanti cambiamenti che Microsoft ha, non ho idea di come sia.
  • Un'altra variante di quest'ultimo sarebbe quella di utilizzare notifiche o messaggi che vengono inviati da Facebook o Twitter. Per Twitter potresti usare Twidge mentre per Facebook potresti usare fbcmd. Entrambe le applicazioni mi consentono di interagire con questi social network dal terminale.
  • Sto anche pensando di verificare l'integrità dello sql che esporto, ma questo richiede già un po 'più di tempo :)

server ftp

La fine!

Bene, niente altro da aggiungere ... per il momento, sto riprendendo molti dei miei script realizzati in Bash per ottimizzarli e migliorarli, spero che non mi ci vorrà troppo tempo per portare notizie 😀

saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   barbarasta suddetto

    Ottimo progetto,
    Lo seguirò con grande interesse.
    - Qualche avviso @ se il server non funziona o non è stato possibile effettuare la consegna?

    È estremamente divertente leggere articoli di appassionati di terminali / console.

    1ciao2

    1.    KZKG ^ Gaara suddetto

      Il piacere è mio 🙂

      Buona idea, per verificare se il server FTP è online e se non lo è, manda una mail ... ne terrò conto ^ _ ^

  2.   Moses Serrano suddetto

    Avevo adattato il tuo script di backup e adattato un progetto che ti permette di caricare il file finale su Dropbox (https://github.com/andreafabrizi/Dropbox-Uploader) e inviare un'e-mail alla fine tramite sendmail.

  3.   cacciatore suddetto

    Gaara devi provare lo strumento giusto per questo: lftp

    Supporta anche il mirroring, sincronizzare i repository da ftp non ha prezzo.

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

  4.   Jorge suddetto

    Molto interessante, è la bellezza di questo sistema, si può ottenere lo stesso risultato in più modi; Ti mostro il metodo con cui stavo riuscendo a caricare i file su un server ftp, è un po 'rustico ma funziona ancora:

    {
    echo user password utente
    cestino dell'eco
    eco prompt
    echo cd / directory / da / server / ftp
    echo put file
    eco vicino
    echo ciao
    } | ftp -n server.ftp

    1.    KZKG ^ Gaara suddetto

      OOOHHH interessante, non sapevo cosa si potesse fare in questo modo 😀
      Grazie !!

  5.   Sephiroth suddetto

    Altri modi, ad esempio con wput:

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

    o per coloro che preferiscono la semplicità in uno script utilizzando il vecchio telnet:

    ftp -n server_ip << EOF
    utente anonimo test@test.cu
    invia FILE.txt
    exit
    EOF

  6.   Xavier suddetto

    Ciao, sono un principiante in Linux e non conosco l'informatica - solo a livello di utente - o la programmazione, o qualcosa del genere, praticamente ignoro questo. Stavo leggendo questo articolo e ho letto alla fine del secondo paragrafo la parola "posizione"; quella parola è usata male, hai inteso: posizione, posizione, posizione, luogo. La parola posizione significa qualcos'altro poiché RAE dice "http://dle.rae.es/?id=NXeOXqS".