Я пытаюсь рекурсивно создавать каталоги через ssh.

Каталог /home/user/staging существует. Но у пользователя нет прав на чтение / дом. mkdir не знает, существует ли /home/user и пытается его создать.

mkdir -p /home/user/staging/first/second/third/fourth/
mkdir: cannot create directory ‘/home/user’: Permission denied

Как пропустить этот каталог и продолжать создавать, где у пользователя есть разрешение?

Я пытаюсь сделать это с помощью моего собственного сценария,

rec()
{
    dir=$1
    if [[ ! -e $dir ]]; then
        echo "creating $dir"
        newdir=$(echo $dir | sed 's:/[^/]*$::')
        rec $newdir
        mkdir $dir
    fi
}

По какой-то причине эта проверка не проходит, если [[! -e $ dir]] и цикл проходит мимо существующих директорий и в итоге ничего не создает.

1 ответ1

0

Мне не удалось заставить этот сценарий работать.

Тем не менее, решение состоит в том, чтобы использовать параметр --relative самого rsync.

rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/

Как описано в этом ответе:https://stackoverflow.com/a/22908437/6505678

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .