rsync com 'arquivos de' em curingas

4

[Eu tive que mudar o exemplo para deixar claro que existem subdiretórios.]

Digamos que eu queira recriar um subconjunto da minha hierarquia. por causa de argumentos, digamos que eu quero fazer backup de arquivos em filelist.conf

# cat rsync-list
ab*
bb*

e

# find .
.
./abc
./abc/file-in-abc
./abd
./abd/file-in-abd
./aca
./bba
./bbc
./bca
./rsync-list

Eu teria esperado que

rsync -arv --include-from=rsync-list --exclude='*' . /somewhere-else

recriaria o abc, abd, bba e bbc. o problema é que ele não desce para os diretórios ab *, portanto, ele não faz abc / file-in-abc e abd / file-in-abd. então, nesse sentido, o ab * não é realmente um curinga que é expandido para abc e abd e depois rsynced.

    
por ivo Welch 30.12.2014 / 09:45

2 respostas

13

A página de manual lista estas cinco opções:

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE
--include=PATTERN       don't exclude files matching PATTERN
--include-from=FILE     read include patterns from FILE
--files-from=FILE       read list of source-file names from FILE

--files-from é para nomes de arquivos exatos e --include-from é para padrões, portanto, convém tentar isso.

Usando include-from , você não precisa para especificar + , mas precisa excluir todo o resto. Por exemplo, dado:

$ ls -v1 source
image1.tiff
...
image700.tiff
$ cat includes
image7*.tiff

Eu só posso sincronizar image7*.tiff usando:

rsync -aP --include-from=includes --exclude='*' source/ target

A página de manual também diz, na seção INCLUDE/EXCLUDE PATTERN RULES :

  • a ’*’ matches any path component, but it stops at slashes.
  • use ’**’ to match anything, including slashes.
    
por 30.12.2014 / 10:29
3

Você pode usar --include-from em vez de --files-from se quiser usar curingas. filelist.conf deve ser assim:

+ /usr/lib/ld-* 
+ /usr/bin/gcc*
+ /etc/passwd
+ /etc/nonexisting
- *

Você precisa especificar + ou - para incluir ou excluir no arquivo. A regra - * no final é necessária para incluir as regras de trabalho, já que tudo é incluído por padrão. Não coloque isso primeiro ou substitui as regras de inclusão.

    
por 30.12.2014 / 13:25

Tags