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

300
TheKitMurkit

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

0
что бы помочь: `id`; `ls -ld / home` A.B 6 лет назад 0
Как насчет того, чтобы зайти в дом пользователя, а затем создать относительные каталоги? Xen2050 6 лет назад 0
если `user` не имеет разрешения на выполнение для` / home`, то это ожидаемое поведение. [Этот ответ] (https://unix.stackexchange.com/a/13891/285436) о правах доступа к каталогам может помочь вам. danzel 6 лет назад 0

1 ответ на вопрос

0
TheKitMurkit

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

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

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

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

Похожие вопросы