Script Bash rsync --include-from falha

Script Bash rsync --include-from falha

Escrevi um script bash para fazer backup de pastas e arquivos de uma máquina para nosso servidor de backup. Meu objetivo é excluir todos os arquivos com mais de 6 meses deste backup semanal. Para fazer isso, usei um comando find para construir um arquivo txt que contém o caminho desses arquivos.

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/Exclusions.txt "%P\n"

E então usei a opção "--include-from" do rsync.

rsync . -e ssh -qrtl --exclude-from=$SCRIPT_DIR/Exclusions.txt $USER@$DEST_SRV:$DEST_DIR

O resultado foi que o backup funcionou, mas não a inclusão. Portanto, todos os arquivos foram copiados, mesmo aqueles com mais de 6 meses.

Como posso fazer isso?

desde já, obrigado

Responder1

De acordo com as páginas de manual,

--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

A exclusão é feita de acordo com o padrão de leitura dos arquivos, e não de acordo com os nomes dos arquivos em si.

Concordo que incluir/excluir arquivos de acordo com os nomes também pode ser difícil, mas não é assim que funciona.

Você poderia tentar algo assim para incluir arquivos mais recentes que 1 semana atrás:

--files-from=<(find . -mtime -7 -print0)

Responder2

Ok, resolvi meu problema! A linha "find" permanece a mesma:

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"

E eu uso a opção "--files-from" em vez de "--exclude-from"

rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR

informação relacionada