我有一項root cron
工作,在安裝的不同硬碟中建立目錄,然後使用rsync
我將所有檔案從來源複製到目標。腳本如下圖所示:
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。
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
建立具有與 SOURCE 相同權限的 TARGET 目錄(在我的例子中為 755)。