Я настраиваю cronjob под пользователем root для резервного копирования моего сервера Jenkins через Ansible.
Ожидается, что cronjob будет еженедельно запускать скрипт оболочки, который копируется из моей локальной папки.
Следующий код - это то, что я произвел
- name: copy backup scripts to the server
copy:
src: ./../../scripts/swift-backup.sh
dest: /scripts/swift-backup.sh
owner: root
group: root
mode: 777
- name: check if file exists
file:
path: /scripts/swift-backup.sh
state: file
- name: Automatic backup the VM
cron:
name: "Automatic backup to swift with rclone"
minute: "0"
hour: "0"
weekday: "0"
job: "sh /scripts/swift-backup.sh"
check if file exists
успешно находит файл. Я даже вручную найду скрипт на сервере. Однако вот журнал, который я получил от задания cron:
sh: 0: Can't open scripts/swift-backup.sh
В чем здесь проблема, когда я выполняю всю задачу? Вот код внутри скрипта:
#!/usr/bin/env bash
. ./../openrc-monsoon3-MLOps
while [ $(rclone lsd monsoon:jenkins_backup_test | wc -l) -ge 3 ]
do
# find and remove oldest backup folder
rclone delete monsoon:jenkins_backup_test/$(rclone lsd monsoon:jenkins_backup_test | head -1 | awk '{print $NF}')
done
# Push file to monsoon
rclone copy backup/ monsoon:jenkins_backup_test -L
rm backup/* -rf