Как создать каталог на удаленном хосте, если он не существует без ssh-ing?



Я не уверен, если это возможно или нет. В принципе, я пишу сценарий, который позволяет мне scp файл на мой хостинг. Это пока все. Аргумент 1-это файл, а аргумент 2-это папка, в которую я хочу поместить его на удаленном сервере:



function upload {
scp [email protected]:
}


Как вы можете/не можете знать, если каталог, который я указываю при вызове функции, не существует, то передача не выполняется. Есть ли способ проверить, существует ли каталог в функции, а если нет, создайте оно.



Я бы предпочел не иметь ssh в каждый раз и создать каталог, но если у меня нет выбора, то у меня нет выбора.

655   5  

5 ответов:

вы можете использовать rsync.

например,

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

примечание о rsync:

rsync-это служебное программное обеспечение и сетевой протокол для Unix, который синхронизирует файлы и каталоги из одного места в другое при минимизации передачи данных с помощью Дельта-кодирования, когда это необходимо, используя алгоритм rsync, который быстрее, чем другие инструменты.

Я предполагаю, что вы имеете в виду, что вы не хотите интерактивно войти в систему и создавать каталоги вручную, а не то, что вы хотите избежать использования ssh в целом, так как вам все еще нужен пароль или открытый ключ с scp.

если использование ssh неинтерактивно приемлемо, то вы можете передавать свой файл с помощью cat over ssh:

cat  | ssh  "mkdir ;cat >> /"

здесь

 = filename 
 = user@server
 = dir_on_server

если каталог уже существует, mkdir жалуется, но файл все равно копируется. существующий каталог не будет перезаписываться. если каталог не существует, mkdir создаст его.

Если вы делаете рекурсивный scp (- r), он также будет копировать каталоги. Поэтому, если вы создадите каталог с именем, которое вы хотите, на удаленном хосте локально, скопируйте файл в него, а затем рекурсивно скопируйте, каталог будет создан с файлом в нем.

немного неудобно, но это будет делать свою работу.

это двухэтапный процесс

ssh [email protected] "mkdir -p "

это гарантирует создание структуры каталогов. Затем вы копируете

scp  [email protected]:

Как насчет, например,
ssh [email protected] '[ -d /tmp/nonexist/dir ] || mkdir -p /tmp/nonexist/dir ]'; scp test.txt [email protected]:/tmp/nonexist/dir

Comments

    Ничего не найдено.