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