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