Graças a PerlDuck
e Cyrus
o mistério está resolvido.
rsync -a
cria o diretório TARGET com as mesmas permissões que o SOURCE (no meu caso 755).
Eu tenho um trabalho root cron
que cria um diretório em um HDD montado diferente e, em seguida, usando rsync
Estou copiando todos os arquivos de SOURCE para TARGET. Script é assim:
date_cmd='date +%Y_%m_%d_%H_%M_%S'
TS_SUFFIX='eval ${date_cmd}'
SOURCE_DIR=/
TARGET_DIR=/mnt/backup_hdd/system_backup_${TS_SUFFIX}
LOG_DIR=/shared_utils/logs/backupper
LOG_FILE=${LOG_DIR}/backupper_${TS_SUFFIX}.log
mkdir -p ${TARGET_DIR}
chmod 770 ${TARGET_DIR}
rsync -a --append-verify --info=progress2 --exclude-from=${EXCLUDE_LIST} ${SOURCE_DIR} ${TARGET_DIR}
O problema é que chmod 770
não altera as permissões TARGET
dir para 770. Como você pode ver, elas são criadas com 755 permissões.:
drwxr-xr-x 19 root root 4096 Mar 18 11:47 system_backup_2018_03_18_17_57_01/
Meu trabalho root cron
:
57 17 * * * umask 007; /path/to/script.sh
Como você vê, eu configuro umask 007 antes de executar o script. Então, falha em duas frentes:
007
, as permissões reais não são as esperadas. chmod 770
) para o TARGET
dir, as permissões ainda não foram alteradas. Alguma idéia de por que esses dois casos não funcionam?
UPDATE
A execução do script com sudo script.sh
também não altera as permissões de TARGET
.
Graças a PerlDuck
e Cyrus
o mistério está resolvido.
rsync -a
cria o diretório TARGET com as mesmas permissões que o SOURCE (no meu caso 755).