recursive mkdir - папка существует, но у пользователя нет на нее прав

Я пытаюсь рекурсивно создавать каталоги через 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 ответ

Решение

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

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

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

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

Другие вопросы по тегам