Hoe maak ik een map op externe host als het niet bestaat zonder SSH-ING in?

Ik weet niet zeker of dit mogelijk is of niet. Kortom, ik schrijf een script waarmee ik SCP een bestand naar mijn hosting kan gebruiken. Dit is het tot nu toe. Argument 1 is het bestand en argument 2 is de map die ik wil dat het op de externe server wordt geplaatst:

function upload {
    scp $1 [email protected]:$2
}

Zoals u misschien niet weet, als de map die ik heb opgegeven wanneer ik de functie noem, is niet, dan mislukt de overdracht. Is er een manier om te controleren of de map in de functie bestaat en als dit niet het geval is.

Ik zou liever niet in elke keer of de directory moeten maken, maar als ik geen keuze heb, heb ik geen keuze.


1, Autoriteit 100%

U kunt rsyncgebruiken.

Bijvoorbeeld

rsync -ave ssh fileToCopy ssh.myhost.net:/some/nonExisting/dirToCopyTO

Opmerking over rsync:

rsyncIS UTILITY SOFTWARE EN NETWORKPROTOCOL VOOR UNIX DIE DE BESTUUR EN MACHORES Synchroniseert van de ene locatie naar de andere. Het minimaliseert gegevensoverdrachtsmaten met behulp van DELTA-codering indien nodig met behulp van de rsyncalgoritme die sneller is dan andere hulpmiddelen.


2, Autoriteit 71%

Ik neem aan dat u bedoelt dat u niet interactief wilt inloggen en mappen met de hand wilt maken, in plaats van dat u wilt vermijden met sshAltogether, omdat u nog steeds een wachtwoord of openbare sleutel nodig hebt scp.

Als het gebruik van SSH niet-interactief acceptabel is, kunt u uw bestand streamen met catover ssh:

cat $1 | ssh $2 "mkdir $3;cat >> $3/$1"

waar

$1 = filename 
$2 = user@server
$3 = dir_on_server

Als de map al bestaat, bedekt mkdir, maar het bestand wordt nog steeds gekopieerd. De bestaande map wordt niet overschreven. Als de map niet bestaat, zal mkdirhet maken.


3, Autoriteit 54%

Als u een recursieve SCP (-R) doet, zal deze ook directories kopiëren.
Dus als u een map van de naam die u op de externe host wilt maken, kopieert u het bestand erin, en vervolgens recursief kopiëren, wordt de map met het bestand erin aangemaakt.

soort ongemakkelijk, maar het zou het werk doen.


4, Autoriteit 37%

Dit is een tweestapswerkwijze

ssh [email protected] "mkdir -p $2"

Dit zorgt ervoor dat de directorystructuur is gemaakt. Dan kopieert u

scp $1 [email protected]:$2

5, Autoriteit 17%

Wat dacht je van, bijvoorbeeld,
ssh [email protected] '[ -d /tmp/nonexist/dir ] || mkdir -p /tmp/nonexist/dir ]'; scp test.txt [email protected]:/tmp/nonexist/dir

Other episodes