Как создать каталог на удаленном хосте, если он не существует без ssh-ing?
Я не уверен, если это возможно или нет. В принципе, я пишу сценарий, который позволяет мне scp файл на мой хостинг. Это пока все. Аргумент 1-это файл, а аргумент 2-это папка, в которую я хочу поместить его на удаленном сервере:
function upload {
scp [email protected]:
}
Как вы можете/не можете знать, если каталог, который я указываю при вызове функции, не существует, то передача не выполняется. Есть ли способ проверить, существует ли каталог в функции, а если нет, создайте оно.
Я бы предпочел не иметь ssh в каждый раз и создать каталог, но если у меня нет выбора, то у меня нет выбора.
5 ответов:
вы можете использовать rsync.
например,
rsync -ave ssh fileToCopy ssh.myhost.net:/some/nonExisting/dirToCopyTOпримечание о rsync:
rsync-это служебное программное обеспечение и сетевой протокол для Unix, который синхронизирует файлы и каталоги из одного места в другое при минимизации передачи данных с помощью Дельта-кодирования, когда это необходимо, используя алгоритм rsync, который быстрее, чем другие инструменты.
Я предполагаю, что вы имеете в виду, что вы не хотите интерактивно войти в систему и создавать каталоги вручную, а не то, что вы хотите избежать использования
sshв целом, так как вам все еще нужен пароль или открытый ключ сscp.если использование ssh неинтерактивно приемлемо, то вы можете передавать свой файл с помощью
catoverssh: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