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 rsync
gebruiken.
Bijvoorbeeld
rsync -ave ssh fileToCopy ssh.myhost.net:/some/nonExisting/dirToCopyTO
Opmerking over rsync
:
rsync
IS 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 rsync
algoritme 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 ssh
Altogether, 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 cat
over 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 mkdir
het 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