rsync --chmod wirkt nur mit --perms

rsync --chmod wirkt nur mit --perms

- Matt

Ich habe einen Deploy in GitHub Actions von einer SFTP-Action auf rsync umgestellt. Die alte Action war an der Node-Version der Runner gescheitert, und rsync --delete räumt ohnehin sauberer auf. Damit die Rechte stimmen, kam --chmod dazu:

rsync -rlz --delete --chmod=D755,F644 ./ user@host:website/wwwroot/

Auf dem Strato-Webspace standen die Dateien danach trotzdem mit 666, für alle beschreibbar. Die Manpage sagt es nebenbei: --chmod verändert die Rechte, die übertragen werden, und übertragen werden sie nur mit --perms. Ohne -p bleiben bestehende Dateien, wie sie sind, und neue bekommen, was die umask des Servers hergibt.

rsync -rlptz --delete --chmod=D755,F644 ./ user@host:website/wwwroot/

Der Haken bei --delete: Alles, was im Zielordner liegt und nicht aus dem Build kommt, ist beim nächsten Deploy weg. Zähldaten, Uploads oder Konfiguration mit Zugangsdaten gehören deshalb neben den Webroot, nicht hinein. Die genaue Formulierung steht bei --chmod in der rsync-Manpage. Wie Build und Deploy früher bei mir aussahen, zeigt der Beitrag zu Azure DevOps Pipelines.