Quero copiar parte de uma origem para um destino:
SRC_DIR=/a/b/c/d/e
DEST_DIR=/x/y/z/d/e
Quando meu script é iniciado, crio todas as pastas em $DEST_DIR
:
mkdir -pv /x/y/z/d/e
Eu tenho uma lista de caminhos relativos da fonte que são os primeiros filhos que e
desejo copiar. Esta lista é construída a partir da saída de um comando find e se parece com:
/USER_CONFIG_COPY/G731GV/REAL/2023_06_17_22h11/user_install/root
....
....
/002_DATA/SSH/2023_09_01.prev/root
....
....
....
/002_DATA/USER_CONFIG_INITIAL/root
....
....
....
....
/001_SCRIPTS/000_TOOLS/root
....
....
Para construir a lista Include, primeiro coloco a pasta pai e depois a lista obtida na saída find. Então a lista fica assim:
/a
/a/b
/a/b/c
/a/b/c/d
/a/b/c/d/e
/USER_CONFIG_COPY/G731GV/REAL/2023_06_17_22h11/user_install/root
....
....
/002_DATA/SSH/2023_09_01.prev/root
....
O comando final é:
rsync -arzh -vvv --include='/tmp/000_my_include_root_dirlist.txt' --exclude='*' "$SRC_DIR/" "$DST_DIR/"
Tentei muitas dicas encontradas no U&L Stack Exchange sem sucesso. O que estou fazendo de errado?
Ok, a sugestão do Chris funciona em um pequeno conjunto de pastas. Meu problema vem de uma opção --recursive ausente e de um problema ao usar sticky bit nas pastas. Vou fazer um teste completo. Dou notícias o mais rápido possível.