Stuur een bestand naar een FTP met een enkele opdracht

We hebben al gezien hoe we verbinding kunnen maken met een FTP-server en ermee kunnen werken (of de inhoud ervan) via de terminal, dat wil zeggen zonder grafische toepassingen te gebruiken.

Deze keer breng ik je een plus of een extra ... laat het me uitleggen.

Enkele jaren geleden heb ik ze verlaten een bash-script dat wordt gebruikt om back-ups te maken (bewaart) gegevens van een server. Het script kopieerde een reeks mappen (zoals / etc /), exporteerde databases, enz ... en comprimeerde het met een wachtwoord in een .RAR- of .7z-bestand (ik gebruik momenteel 7z), het enige dat het script ontbrak was het kunnen uploaden vervolgens dat gecomprimeerde bestand naar een FTP-server, op deze manier zou de opslag van de server naar een andere locatie worden gekopieerd.

Tegenwoordig heb ik het script opgepakt om het een beetje te optimaliseren, het te verbeteren en uiteraard kwam de behoefte aan het laatste dat ik je noemde aan het licht door het gecomprimeerde archief naar een externe FTP te uploaden.

Hoe upload ik naar een FTP met een enkele opdracht?

Wat ik nodig had, was via een enkele opdracht verbinding maken met een FTP met gebruikersnaam en wachtwoord, en tja; upload het bestand naar een specifieke map.

Terminal applicaties waarmee ik verbinding kan maken met een FTP, gebruiker & wachtwoord kan invoeren en bestanden kan uploaden. Er zijn veel, maar… die me in staat stellen om dit allemaal op één regel te doen, met alle parameters al gespecificeerd…. hey daar de vraag.

Na het bekijken van 4 of 5… dacht ik, hè !! ... maar het bestaat krullen

Upload naar een FTP met curl

Met curl kan ik oneindig veel dingen doen, misschien kan ik doen wat ik wil ... en dat is het dan!

Met de -u parameter kan ik de gebruiker en het wachtwoord specificeren, ook met de -T parameter kan ik het vertellen om een ​​bestand te uploaden, en uiteindelijk om het te vertellen naar welke FTP en welke map ik het wil uploaden, aan het einde zet ik gewoon het volledige pad, min of meer zo :

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

Wat dit doet, is verbinding maken met de FTP 192.168.128.2, met de gebruiker gebruiker en wachtwoord wachtwoord en upload naar de map SERVER_BACK-UPS het bestand met de naam file-backup.7z

En klaar!

Simpel toch? ...

Dit kan natuurlijk ook voor ons nuttig zijn, alleen het commando, maar de beste manier om het te gebruiken is met een script zoals ... degene die ik eerder noemde

En hoe zit het met dat script dat wordt genoemd?

Ik breng verbeteringen aan in het script, vooral door enkele verzoeken of suggesties van gebruikers op te nemen.

  • Het eerste dat ik wilde doen, was precies dit wat ik je zojuist heb uitgelegd, met een enkele opdracht om het opslagbestand naar een FTP te kunnen uploaden.
  • Het andere dat een gebruiker mij aanbeveelde, was om een ​​e-mail te sturen wanneer de back-up klaar was, daar kan ik gebruik van maken Verzend mail of extern script, Ik zal bij voorkeur sendmail gebruiken. Het detail van het gebruik van sendmail is dat je je Gmail-account (of een andere) kunt gebruiken om de e-mail te verzenden, met encryptie ... SSL en wat dan ook.
  • Een gebruiker raadde ook aan om, als een meer dynamische vorm van melding, een bericht te verzenden via IM met behulp van GTalk's XMPP of Hotmail's (Live of iets dergelijks, ik weet niet eens hoe het heet). Ik zal proberen om het eerst met GTalk te doen, omdat ik voor Hotmail mezelf ergens zou moeten onthouden of ondersteunen om een ​​Hotmail-account aan te maken, omdat met zoveel verandering dat Microsoft heeft, geen idee hoe het is.
  • Een andere variant van dat laatste is het gebruik van notificaties of berichten die door Facebook of Twitter worden verstuurd. Voor Twitter zou je kunnen gebruiken Twijfelen terwijl je voor Facebook zou kunnen gebruiken fbcmd. Met beide applicaties kan ik vanaf de terminal communiceren met deze sociale netwerken.
  • Ik denk ook aan het controleren van de integriteit van de sql die ik exporteer, maar dit kost al wat meer tijd :)

ftp-server

Het einde!

Nou, niets meer toe te voegen ... op dit moment gebruik ik verschillende van mijn scripts die in Bash zijn gemaakt om ze te optimaliseren en te verbeteren, ik hoop dat het niet te lang zal duren om nieuws te brengen 😀

groeten


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Barnarasta zei

    Geweldig project,
    Ik zal het met grote belangstelling volgen.
    - Enig bericht @ als de server niet beschikbaar is of als de levering niet kon worden gedaan?

    Ontzettend leuk om artikelen te lezen van liefhebbers van terminals / consoles.

    1hallo2

    1.    KZKG ^ Gaara zei

      Het plezier is van mij 🙂

      Goed idee, om te controleren of de FTP-server online is en zo niet, om een ​​e-mail te sturen ... ik zal er rekening mee houden ^ _ ^

  2.   Moses Serrano zei

    Ik had je back-upscript aangepast en een project aangepast waarmee je het uiteindelijke bestand naar Dropbox kunt uploaden (https://github.com/andreafabrizi/Dropbox-Uploader) en stuur aan het einde een e-mail via sendmail.

  3.   djager zei

    Gaara, je moet hiervoor de juiste tool proberen: lftp

    Het ondersteunt zelfs mirroring, het synchroniseren van repo's vanaf ftp is onbetaalbaar.

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

  4.   Jorge zei

    Heel interessant, het is de schoonheid van dit systeem, je kunt hetzelfde resultaat op meerdere manieren verkrijgen; Ik laat je de methode zien waarmee ik erin slaagde om bestanden naar een ftp-server te uploaden, het is een beetje rustiek maar het werkt nog steeds:

    {
    echo gebruikerswachtwoord
    echo bak
    echo-prompt
    echo cd / directory / van / server / ftp
    echo put-bestand
    echo dichtbij
    echo doei
    } | ftp -n server.ftp

    1.    KZKG ^ Gaara zei

      OOOHHH interessant, ik wist niet wat er zo kon worden gedaan 😀
      Dank je wel!

  5.   Sephiroth zei

    Andere manieren, bijvoorbeeld met wput:

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

    of voor degenen die de voorkeur geven aan eenvoud in een script met behulp van het oude telnet:

    ftp -n server_ip << EOF
    gebruiker anoniem test@test.cu
    stuur FILE.txt
    afrit
    EOF

  6.   Xavier zei

    Hallo, ik ben een beginner in Linux en ik ken geen computergebruik - alleen op gebruikersniveau - of programmeren, of iets dergelijks, ik ben hier praktisch onwetend over. Ik las dit artikel en ik las aan het einde van de tweede alinea het woord "locatie"; dat woord wordt misbruikt, je bedoelt: locatie, locatie, locatie, plaats. Het woord locatie betekent iets anders, aangezien de RAE zegt "http://dle.rae.es/?id=NXeOXqS".