O que você deseja fazer deve ser possível com a opção --relative
(ou -R
) e uma execução anterior de find
para gerar uma lista de arquivos:
find /cvs1 -type f -not \( -name *Locks -o -name tmp \) -print0 > filelist
rsync -pR --modify-window=1 -0 \
--files-from=filelist /mnt/DUBBU01/Linux/Buzz/
Aqui você cria uma lista de arquivos com terminação nula (somente arquivos, não diretórios) e alimenta isto para rsync como a fonte para sua operação, informando sobre a terminação nula com -0
. Isso é útil para evitar problemas com espaços, etc. em nomes de arquivos.
da página de manual do rsync:
-R, --relative
Use caminhos relativos. Isso significa que os nomes de caminho completos especificados na linha de comando são enviados para o servidor, em vez de apenas as últimas partes dos nomes de arquivos. Isso é particularmente útil quando você deseja enviar vários diretórios diferentes ao mesmo tempo. Por exemplo, se você usou este comando:
rsync -av /foo/bar/baz.c remote:/tmp/
... isso criaria um arquivo chamado baz.c
in /tmp/
na máquina remota. Se ao invés disso você usou
rsync -avR /foo/bar/baz.c remote:/tmp/
então um arquivo chamado /tmp/foo/bar/baz.c
seria criado na máquina remota - o nome do caminho completo é preservado.