If-Koubou

Shell-komentotiedosto, jonka avulla tiedosto voidaan siirtää kauko-palvelimen samaan alihakemistoon

Shell-komentotiedosto, jonka avulla tiedosto voidaan siirtää kauko-palvelimen samaan alihakemistoon (Miten)

Erittäin yleinen tehtävä web-kehittäjälle on ladata yksittäinen tiedosto kehitystiedostosi alihakemistosta samaan alihakemistoon etäpalvelimessa. Valitettavasti tämä päättyy aina ärsyttävään manuaaliseen prosessiin, jossa on kytketty hakemistoja molemmilla palvelimilla, ja jätetään paljon aikaa.

Joten, olen ottanut sen itseni kirjoittamaan komentosarjan, joka automatisoi tämän minulle käyttäen scp: tä suojatun tiedostojen kopioimiseen. (Tärkeä sivu Huomautus: ftp on hirvittävän epävakaa, käytä WinSCP: tä sen sijaan)

Suurin ongelman ratkaisemiseksi oli se, että minun WordPressin asennus kehitystyökalulla on eri tukihakemisto kuin asennukseni palvelimellani. Kehityskoneellani on / var / www, ja palvelimellani on jotain enemmän kuin / var / www / howtogeek / docs /. Päätin siirtää ne muuttujiksi komentosarjan alussa, kuten:

[email protected]
RDIR = / var / www / howtogeek / dokumentit
LDIR = "\ / var \ / www"

Huomaa, että komentosarjan paikallisessa hakemistossa (LDIR) on \ ennen jokaista / polussa. Tämä johtuu siitä, että siirrämme tämän sed-komentoon myöhemmin käsikirjoituksessa, joten meidän on vältettävä nämä arvot. Olen varma, että tämä on muu asia, mutta en ole tietoinen siitä.

Seuraavaksi otan käyttöön automaattiset ssh-kirjautumiset. Voit tehdä tämän ensin käynnistämällä ssh keygen -apuohjelman seuraavasti:

ssh-keygen -t rsa

Sitten sinun on kopioitava ~ / .ssh / id_rsa.pub-tiedosto etäpalvelimelle ~ / .ssh / authorized_keys. Jos ~ / .ssh-hakemisto on jo luotu etäpalvelimella (ehkä haluat tarkistaa), voit suorittaa tämän komennon kopioidaksesi avaimet yli:

cat ~ / .ssh / id_rsa.pub | ssh käyttäjä @ hostname 'cat >> .ssh / authorized_keys'

Nyt meillä on automaattiset ssh-kirjautumiset, joiden avulla scp-apuohjelma voidaan käyttää ilman salasanaa. Katsokaamme nyt scp-komentoa, jota käytämme käsikirjoituksessa:

scp $ 1 $ SSHSERVER: $ RDIR'pwd | sed 's / $ LDIR //' '/' echo $ 1 | sed 's /.*\/// "

$ 1 on parametri, jonka siirrät skriptin tiedostonimeen, jonka yrität lähettää. $ SSHSERVER ja $ RDIR ovat muuttujia, jotka asetamme komentosarjan alkuun asettaa käyttäjän @ hostname ja edellinen etäpolku.

Ensimmäinen lohko, joka alkaa pwd | sed: lla, vie nykyisen hakemistopolun ja liuskaa pois etenemisen etenemisen, joka ei vastaa etäpalvelinta, mutta jättää jäljellä olevan polun. Esimerkiksi, jos käytit komentoa / var / www / wp-content /, sed-lohko irrottaisi / var / www LDIR-muuttujamme perusteella, mutta jätä / wp-sisältöä tai sen osaa .

Toinen lohko vain varmistaa, että kaikki edellinen polku poistetaan komentotiedostoon siirrettyyn tiedostonimiin, jotta saat vain tiedostonimen.

Jos esimerkiksi nimitti komentosarjan up.sh ja suoritti sen paikallisesta / var / www / wp-content / plugins / -hakemistosta tiedostossa:

up.sh myplugin.php

Tätä olisi laajennettava kuorella seuraavasti:

scp myplugin.php [email protected]: /var/www/howtogeek/docs/wp-content/plugins/myplugin.php

Sen sijaan, että yrität luoda omia komentosarjatiedostoasi artikkelin perusteella, olen antanut sen, että lataat sen. Tällä tavalla ei ole mitään ongelmia, joilla erikoismerkit eivät toimi ... ja kyllä, käytin käsikirjoitusta lataamaan itsensä =)

Lataa geek-uploader.sh

Laita se jonnekin poluksi ja nimeä se mitä haluat. Minun nimeksi tuli vain "ylös", joten voin vain kirjoittaa "up filename.txt" ladata. Muista myös avata se ja muuttaa muuttujat komentosarjan alussa vastaamaan ympäristöäsi.

Tämän komentosarjan pitäisi toimia mitä tahansa * nix shellilla ja scp-apuohjelmalla. Käytän Ubuntua, mutta sen pitäisi toimia Solaris, OS X tai jopa Windows Cygwin asennettuna.