Backup
無法將 aws s3 sync 作為 cron 作業執行
我無法將 aws s3 sync 作為 cron 作業執行(在 Ubuntu 16.04 上)。這是我能做的:
- 使用 sudo 手動執行 /etc/cron.hourly 目錄中的腳本(因此傳遞環境值似乎沒有問題)
- 在沒有 sudo 的使用者目錄中手動執行腳本
- 將腳本或命令本身添加到 /etc/crontab - 使用以下任一:
23 * * * * 我的使用者名 aws s3 同步 /home/myusername/temp/ s3://manning2323
*/1 * * * * myusername /home/dbclinton/myusername/temp/s3script.sh
當然,/etc/crontab 的問題在於它很容易被更新覆蓋,所以它對我的目的來說還不夠好。
現在這是行不通的:
- 將腳本留在 cron.hourly 中並等待它自動執行。它確實執行(如 syslog 和 journalctl 報告),但 AWS CLI 沒有為我提供我可以看到的任何輸出,因此我無法知道為什麼沒有發生同步。我怎麼知道同步沒有發生?因為新文件沒有出現在我的 S3 儲存桶中。
- 我自己的 crontab 通過 crontab -e 添加這一行得到完全相同的結果
47 18 * * * /home/myusername/temp/s3script.sh >> /home/myusername/cronlog.txt
任何想法我做錯了什麼?謝謝,
事實證明,由於 cron 對 PATH 的看法有點不可預測,我不得不在腳本中使用其絕對地址 (/usr/local/bin/aws) 來引用 aws 二進製文件。
在啟用 cron 之前,您可以在會話中配置您的 aws 憑證,例如:
$ aws configure AWS Access Key ID [None]: yourAccessKeyID AWS Secret Access Key [None]: yourSecretAccessKey Default region name [None]: yourRegion Default output format [None]: json
所以你可以嘗試:
* * * * * /usr/local/bin/./aws s3 sync local/dir s3://my-bucket/path
小心使用正確的使用者配置 aws 到 cron