root cron
マウントされた別の HDD にディレクトリを作成し、それを使用して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}
問題は、ディレクトリの権限が 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 を設定しました。そのため、次の 2 つの点で失敗します。
- umask を に設定していますが
007
、実際の権限は期待どおりではありません。 - ディレクトリへの権限(
chmod 770
)を明示的に変更しているにもかかわらずTARGET
、権限は変更されません。
これら 2 つのケースが機能しない理由について何か考えはありますか?
アップデート
でスクリプトを実行しても、sudo script.sh
の権限は変更されませんTARGET
。
答え1
おかげでPerlDuck
謎Cyrus
が解けました。
rsync -a
SOURCE と同じ権限 (私の場合は 755) を持つ TARGET ディレクトリを作成します。