Eu não consegui fazer este script funcionar.
No entanto, a solução é usar a opção --relative do próprio rsync.
rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/
Como descrito nesta resposta: link
Estou tentando criar diretórios recursivamente por meio do ssh.
O diretório / home / user / staging existe. Mas o usuário não tem permissão para ler / home . O mkdir não sabe se o / home / user existe e tenta criá-lo.
mkdir -p /home/user/staging/first/second/third/fourth/
mkdir: cannot create directory ‘/home/user’: Permission denied
Como pular este diretório e continuar criando onde o usuário tem permissão?
Estou tentando fazer isso com meu próprio script,
rec()
{
dir=$1
if [[ ! -e $dir ]]; then
echo "creating $dir"
newdir=$(echo $dir | sed 's:/[^/]*$::')
rec $newdir
mkdir $dir
fi
}
Por algum motivo, esta verificação falha se [[! -e $ dir]] e o loop desce além dos diretórios existentes e, eventualmente, não cria nada.
Eu não consegui fazer este script funcionar.
No entanto, a solução é usar a opção --relative do próprio rsync.
rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/
Como descrito nesta resposta: link
Tags mkdir linux file-permissions