Backup

無法將 aws s3 sync 作為 cron 作業執行

  • September 7, 2020

我無法將 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

引用自:https://serverfault.com/questions/858339