我每天都会备份到 S3。我只想在晚上 8 点到早上 8 点之间使用上传带宽。由于我们的上传速度很差,任何一次运行都可能需要超过 12 小时。我并不担心随意关闭 s3cmd,因为它会在下次运行时正确恢复。
我的 crontab 看起来像这样:
# 0 20 * * * s3cmd sync FOO s3://MyBucket
如果是早上 8 点,我该如何测试并让它停止。理想情况下,我希望我可以做类似的事情:
# 0 20 * * * time --limit 12H "s3cmd sync FOO s3://MyBucket"
我正在使用 Ubuntu Server。
感谢!
编辑:
根据 quanta 的回答。对于多个上传命令,我认为我应该怎么做?
# 0 20 * * * s3cmd sync FOO s3://MyBucket; s3cmd sync BAR s3://MyBucket; s3cmd sync FOOBAR s3://MyBucket;
# 0 8 * * * pkill s3cmd; sleep 1; pkill s3cmd; sleep 1; pkill s3cmd;
?
编辑:
NM,我更喜欢超时。
编辑:
这是超时解决方案的一个弱点。如果我有 12 个备份要做,并且有 12 小时的时间来完成,我不一定需要为每个备份分配 1 小时。有些备份可能需要 5 小时,有些则需要 20 分钟。我不在乎。我只关心早上 8 点一切都会停止。我不认为超时选项允许这种灵活性来自适应地设置超时值。基于 quanta 答案的 kill 选项应该能够处理这个问题。
答案1
您很可能想要该timeout
命令。
timeout 12h s3cmd sync FOO s3://MyBucket
man timeout
了解更多信息。
至少在 Fedora 中,它是与“coreutils”包一起安装的,默认情况下您应该拥有该包。