Passa uma lista de diretórios para rsync

1

Eu tenho um arquivo de texto list_of_dirs_to_copy com 120 caminhos:

data/A/backups/2018_02_12
data/B/backups/2/files
data/B/old_files/2015_12
data/C/my_datafiles/800/dat
data/F/backups & old files (second backups)
...

OBSERVAÇÃO IMPORTANTE : as quebras de linha são LF no arquivo acima e há caracteres especiais, como & e ( nos nomes de diretório.

data está localizado em /mnt/storage3/workfiles/backups . Por isso, faço cd /mnt/storage3/workfiles/backups para que os caminhos no meu list_of_dirs_to_copy se tornem relevantes.

Agora eu quero copiar todos os diretórios listados no meu arquivo de texto (com todos os seus arquivos ocultos e subdiretórios) para outro disco rígido usando o seguinte comando.

rsync -rvh --append-verify --chmod=ugo=rwX --no-o --no-g --no-perms --progress --stats $list_of_directories /drives/f/data_backups/

Como posso passar a lista de diretórios para rsync sem quebrá-la (ou seja, recebendo Argument list too long )? Seria possível enviar cada linha do texto para rsync um por um? Isso faria sentido?

    
por benett 11.07.2018 / 14:28

1 resposta

2

rsync -av ...options... --files-from=list_of_dirs_to_copy \
    /mnt/storage3/workfiles/backups/ \
    /drives/f/data_backups

Os caminhos em list_of_dirs_to_copy seriam interpretados como sendo relativos ao diretório de origem. Com a lista fornecida, isso criaria data como um subdiretório em /drives/f/data_backups .

    
por 11.07.2018 / 14:35

Tags