进行备份并在 6 小时后将其删除

Ava*_*eka 2 command-line bash

我想制作一个 bash 脚本,该脚本备份文件abc.txt并在创建后 6 小时删除此备份。

有什么有效的方法可以做到这一点吗?

hee*_*ayl 9

我不确定用例是什么,但您可以简单地执行以下操作:

cp abc.txt abc.txt.bak && sleep $((60 * 60 * 6)) && rm abc.txt.bak
Run Code Online (Sandbox Code Playgroud)
  • && 是短路评估运算符,只有在前一个以退出状态 0 退出时才会运行它后面的命令

  • cp abc.txt abc.txt.bakabc.txt使用.bak扩展名进行备份,即备份被命名abc.txt.bak(修改它以满足您的需要)

  • sleep $((60 * 60 * 6)) 睡眠 6 小时,即 21600 秒

  • rm abc.txt.bak 在睡眠时间后删除备份


如果需要,您可以利用大括号扩展来简洁:

cp abc.txt{,.bak} && sleep $((60 * 60 * 6)) && rm abc.txt.bak
Run Code Online (Sandbox Code Playgroud)

或者作为(GNU)sleep支持h指示小时的后缀(感谢@muru的提醒):

cp abc.txt{,.bak} && sleep 6h && rm abc.txt.bak
Run Code Online (Sandbox Code Playgroud)

  • GNU sleep 可以做`sleep 6h` (5认同)