Linux rsync sem pastas recursivas

0

Eu tenho uma hierarquia de pastas e quero rsync o conteúdo do arquivo de um para outro.

Portanto, um simples dirA rsync para dirB

No entanto, sem o elemento recursivo, ele não inclui os arquivos na pasta.

dave:/tmp# mkdir dirA
dave:/tmp# mkdir dirB
dave:/tmp# touch dirA/tmp.txt
dave:/tmp# rsync --stats dirA/ dirB/
skipping directory .

Number of files: 0
Number of files transferred: 0

Eu posso fazer

dave:/tmp# rsync --stats dirA/* dirB/

Number of files: 1
Number of files transferred: 1

No entanto, se houver dezenas de milhares de arquivos, a lista de argumentos poderá ficar muito longa.

Parece uma operação bastante simples para sincronizar o conteúdo de duas pastas, sem subpastas, no entanto, estou claramente faltando alguma coisa?

    
por wcndave 09.05.2016 / 13:59

1 resposta

3

Isso ajuda? Opção -d e -m do man-page:

   -d, --dirs                  transfer directories without recursing 
   -m, --prune-empty-dirs      prune empty directory chains from file-list

e execute ...

mkdir dirA
mkdir dirB
mkdir dirA/dirAA
touch dirA/fileA
touch dirA/dirAA/fileAA
rsync --stats -dm dirA/ dirB/

Saída:

Number of files: 3 (reg: 1, dir: 2)
Number of created files: 1 (reg: 1)
Number of deleted files: 0
Number of regular files transferred: 1
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 123
Total bytes received: 31

Resultado:

ls dirB
fileA
    
por 09.05.2016 / 23:33

Tags