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}
문제는 dir 권한을 770으로 chmod 770
변경하지 않는다는 것입니다 TARGET
. 보시다시피 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
SOURCE(내 경우에는 755)와 동일한 권한으로 TARGET 디렉터리를 생성합니다.