我有一项root cron
任务,在已安装的不同 HDD 中创建一个目录,然后使用rsync
它将所有文件从 SOURCE 复制到 TARGET。脚本如下所示:
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}
问题是chmod 770
没有将TARGET
目录权限更改为 770。如您所见,它是使用 755 权限创建的。:
drwxr-xr-x 19 root root 4096 Mar 18 11:47 system_backup_2018_03_18_17_57_01/
我的root cron
工作:
57 17 * * * umask 007; /path/to/script.sh
如您所见,我在执行脚本之前设置了 umask 007。因此,它在两个方面失败了:
- 尽管我将 umask 设置为
007
,但实际权限并不像预期的那样。 - 尽管我明确地将权限(
chmod 770
)更改为TARGET
目录,但权限仍然没有改变。
知道为什么这两种情况不起作用吗?
更新
运行脚本也sudo script.sh
不会改变的权限TARGET
。
答案1
感谢PerlDuck
,Cyrus
谜团已经解开。
rsync -a
创建具有与源相同权限的 TARGET 目录(在我的情况下为 755)。