Personalizar opções de rsync do Synology Hyper-Backup (e significação dos parâmetros do HB)

2

Eu quero personalizar as opções de rsync que o Hyper Backup usa quando a opção de backup Data Backup Task > Remote Data Copy está selecionado, mas as opções do Hyper Backup são limitadas e um tanto blury.

Versão do DSM: Atualização do DSM 6.0.2-8451 9

Eu realmente darei minha própria solução como resposta, mas se qualquer solução melhor aparecer, eu a validarei. Para que isso seja útil para as pessoas necessitadas, também escreverei aqui minhas conclusões sobre o assunto.

O que os parâmetros de Hyper Backup significam em relação às opções de rsync

Padrão

Por padrão, quando nenhuma opção a seguir estiver marcada na guia Configurações da tarefa, o rsync usa essas opções:

--chmod=ugo=rwx -W -H -rlt -p --delete --exclude-from=/tmp/RSYNC_RULE_xxxxxx

Notas:

  • qualquer configuração levará a criação de arquivos e pastas extras no seu repositório de backups remotos: @app, _Syno_TaskConfig e synobkpinfo.db, gerenciados pelo Hyper Backup para uso próprio
  • muitos comandos rsync são iniciados para gerenciar arquivos do Hyper Backup e para verificação de integridade; As opções de rsync variam para esses comandos: estou falando apenas sobre as opções usadas ao fazer backup de seus dados reais aqui
  • o arquivo exclude-from é criado temporariamente para refletir algumas opções verificadas (veja abaixo)

Ativar compactação transferida

adiciona a opção rsync: --compress

Ativar backup em nível de bloco

remove a opção rsync: -W

Reserve os arquivos de backup no destino

remove a opção rsync: --delete

Ativar backup de metadados

nenhuma modificação de opção rsync

Cria uma pasta adicional em repositórios de backups remotos: @ app / @ metadata.
Lança mais comandos rsync para gerenciar a nova pasta, supostamente contendo dados de permissão e proprietário dos arquivos salvos.

Ativar backup de miniaturas

nenhuma modificação de opção rsync

Eu acho que (não foi lá ainda) que ele altera o conteúdo dos arquivos temporários de exclusão.
Copia a pasta @eaDir, presente em cada pasta que contém uma imagem, @eaDir contendo uma ou mais miniaturas de tamanho da imagem, geradas pelo DSM.

    
por Bob 04.03.2017 / 01:13

1 resposta

0

Aqui está a solução que cheguei (em fevereiro de 2017), para poder personalizar totalmente as opções de rsync usadas pelas tarefas do Hyper Backup.

Ajustando o executável rsync do DiskStation

É difícil dizer se o ajuste dos arquivos de configuração e tarefas do HyperBackup é possível, mas eu cheguei à conclusão de que ele estava usando o binário rsync presente em /usr/bin/ . O resto é para definir um script intermediário que altera as opções passadas.

  • conecte-se ao servidor DiskStation via SSH com o usuário 'admin'
  • sudo -i et insira a mesma senha que o usuário 'admin'
  • mv /usr/bin/rsync /usr/bin/rsync.orig
  • touch /usr/bin/rsync
  • chmod 4755 /usr/bin/rsync
  • echo '#!/bin/sh e exec /usr/bin/rsync.orig "$@" --option-you-want-to-add' > /usr/bin/rsync

Qualquer outra solução mais suave é bem-vinda.

Certificar-se de que a modificação resistirá às atualizações

Não tenho certeza se o DSM gerencia ou não o executável rsync do sistema e, em caso afirmativo, uma atualização do DSM poderia ocorrer, a modificação que fizemos para desaparecer no vazio. Alguém pode confirmar isso? Nesse caso, eu criaria um script, que eu programaria por meio de Control Panel > Task Scheduler regularmente (todos os dias à meia-noite, por exemplo), para garantir que a modificação persistirá durante as atualizações e que as atualizações do próprio binário rsync serão levadas em conta.

Primeiro, gostaria de definir o meu script rsync modificado para um caminho onde eu possa fazer evoluir (se minhas modificações tiverem que mudar com o tempo):

/ usr / local / bin / rsync_modified.sh :

#!/bin/sh

# This script is a custom modification script
# It calls the original binary rsync with modified options

# ordering to kill all child processes if receiving term signal
trap 'pkill -P $$' EXIT

# args to array
args2array () {
    for i do printf %s\n "$i" | sed "s/'/'\\''/g;1s/^/'/;\$s/\$/' \\/" ; done
    echo " "
}
ARGS=$(args2array "$@")


# ...whatever modification you want to make on $ARGS...


# setting arguments again, from $ARGS
eval "set -- ${ARGS[@]}"

/usr/bin/rsync.orig "$@"

# Notes: the args2array call and the arguments setting in the end helps
# giving rsync.orig the arguments as they would be passed through direct
# call. Adding string or expanded arrays during the call of rsync.orig has
# revealed to fail in some cases, where rsync would ignore some of the
# added parameters.

então eu criaria esse script que eu poderia programar nas Tarefas Agendadas (com o usuário 'root')

/ usr / local / bin / rsyncUpdateManager.sh :

#!/bin/sh

# Make sure the modified version of rsync is not overwritten
# and that updates of the original rsync binary are taken into account.

# init
usageFile="/usr/bin/rsync"
origFile="/usr/bin/rsync.orig"
backupFile="/usr/bin/rsync.orig"
modificationScript="/usr/local/bin/rsync_modified.sh"

# check if usage file is a binary
grep -qI . $usageFile && TYPE="TEXT" || TYPE="BINARY"
if [ $TYPE == "BINARY" ]
then

    # 1st installation or DSM updated rsync
    if [ -f $origFile ]
    then
        # a original file already exists (probably created by this script)
        # we back it up
        NOW=$(date +"%Y%m%d_%H%M%S")
        mv $origFile "${backupFile}.$NOW.bak"
    fi

    # rename binary file as original file
    mv $usageFile $origFile
fi

# copy modification script in the place of usage file
cp $modificationScript $usageFile

# giving it the same rights as original file (on DiskStation server)
chmod 4755 $usageFile
    
por 04.03.2017 / 01:13

Tags