Создает ли scp целевую папку, если она не существует

Мне интересно, будет ли scp создавать целевую папку, если она не существует на удаленном сервере. Например, будет ли это работать?

scp -r /data/install/somefolder [email protected]:/data/install/somefolder

Здесь папка /data/install/somefolder не существует на ftp-сервере, так будет ли эта команда создавать ее?

N.B. Я читал о rsync, но я не уверен, как это работает или как его использовать.

Ответ 1

Чтобы выполнить задачу с помощью ssh и scp (вместо rsync):

Решение

Давайте разбить на 2 этапа:

1. Создайте каталог, если он отсутствует:

ssh [email protected] "mkdir -p /data/install/somefolder"

2. Скопируйте в него:

scp -r /data/install/somefolder [email protected]:/data/install/somefolder

Положить их вместе

server="[email protected]"
destiny="/data/install/somefolder"
src="/data/install/somefolder"
ssh "$server" "mkdir -p $destiny" && scp -r "$src" "$server:$destiny"

Ответ 2

Короткий ответ: нет.

... но rsync делает, поэтому я имею псевдоним scp до rsync -Pravdtze ssh на моем ящике. Да, это много переключателей, которые в сочетании создают мое предпочтительное поведение rsync. Поскольку rsync действительно предоставляет очень широкий набор переключателей и опций, я предлагаю вам провести некоторое исследование, чтобы узнать, что лучше всего подходит вашим потребностям. Manpage - хорошее место для начала, но есть много информации, которая легко доступна. Здесь достойный список примеров.

Изменить: Собственно, в этом конкретном случае, который вы отправили, будет создана папка, так же как и папка, которую вы копируете. Однако, если вы пытаетесь скопировать его на [email protected]:somenonexistentfolder/somefolder, это не сработает.