Que tal dividir isso em mais de um comando rsync e agrupá-los em um script de shell.
Outra alternativa possível é uma combinação de encontrar com cpio para o dispositivo de destino.
Eu tenho uma árvore de arquivos assim:
in
├── file1
├── dir1
└── dir2
├── dir3
│ ├──── file2
│ └──── junk1
├── junk2
└── junk3
Eu quero criar um irmão de in
que se pareça com o seguinte:
out
├── file1
├── dir1
└── dir2
└─── dir3
└── file2
Em outras palavras, copie recursivamente in
para out
, excluindo in/dir2
, mas incluindo in/dir2/dir3/file2
.
Eu tentei o seguinte:
rsync -a --exclude='in/dir2' --include='in/dir2/dir3/file2' in out
O que resulta no seguinte:
out
└── in
└── file1
Então eu tentei o seguinte:
rsync -a --exclude='dir2' --include='dir2/dir3/file2' in/ out
O que resulta em:
out
└── file1
Como posso alcançar o que quero com rsync
ou outras ferramentas unix? Eu preferiria ficar longe de usar métodos estranhos como canalizar tar
em tar
...
Você pode explorar as opções --exclude-from=FILE
e --include-from=FILE
com o rsync.
--include-from=FILE
This option is related to the --include option, but it specifies a FILE that contains include patterns
(one per line). Blank lines in the file and lines starting with ’;’ or ’#’ are ignored. If FILE is -,
the list will be read from standard input.
Tags rsync