Ich habe einen root cron
Job, der ein Verzeichnis auf einer anderen gemounteten Festplatte erstellt und dann rsync
alle Dateien von der QUELLE zum ZIEL kopiere. Das Skript sieht folgendermaßen aus:
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}
Das Problem besteht darin, dass die Verzeichnisberechtigungen chmod 770
nicht auf 770 geändert werden . Wie Sie sehen, wird es mit der Berechtigung 755 erstellt:TARGET
drwxr-xr-x 19 root root 4096 Mar 18 11:47 system_backup_2018_03_18_17_57_01/
Mein root cron
Job:
57 17 * * * umask 007; /path/to/script.sh
Wie Sie sehen, habe ich umask 007 gesetzt, bevor ich das Skript ausgeführt habe. Es schlägt also an zwei Fronten fehl:
- Obwohl ich die Umask auf setze
007
, sind die tatsächlichen Berechtigungen nicht wie erwartet. chmod 770
Obwohl ich die Berechtigungen für das Verzeichnis ausdrücklich ändereTARGET
, werden die Berechtigungen immer noch nicht geändert.
Irgendwelche Ideen, warum diese beiden Fälle nicht funktionieren?
AKTUALISIEREN
Das Ausführen des Skripts mit sudo script.sh
ändert TARGET
auch nicht die Berechtigungen von .
Antwort1
Dank PerlDuck
und Cyrus
das Rätsel ist gelöst.
rsync -a
erstellt das ZIELverzeichnis mit denselben Berechtigungen wie die QUELLE (in meinem Fall 755).