我是 Linux 的初学者,需要帮助制作 bash 脚本来创建文件名中包含特定日期的文件。
我有一个名为 的目录/backups/
,我想在其中根据当前日期和时间创建一个带有一些前缀文本的文件,例如/backups/backup_2023_09_15_14_00_00.txt
. 这部分已经在这里得到回答)。
问题是,如果以前的备份文件已经存在(将根据格式命名backup_****_**_**_**_**_**.txt
),并且新文件创建成功,我想删除以前的备份文件。
有没有办法做这样的事情?
以下
bash
脚本片段将使用位置参数列表(请参阅下面的使用命名数组的变体)来存储旧备份的所有路径名。创建新备份后(此处使用 进行模拟)touch
,将删除记住的旧备份。使用命名数组来保存旧的备份文件而不是位置参数列表。除了用于生成调试输出的分配
oldfiles
和扩展之外,代码是相同的。rm
如果新备份未成功创建,我们不必终止脚本,而是可以在语句中删除旧文件
if
,例如,如果您只想要一个备份文件,那么它的简单伪代码如下所示:
如果
create new backup file
只是复制一个小文件,那么这可能是多余的 - 它不太可能失败。在这种情况下,只需在创建新文件之前删除现有文件即可。但是创建大型 tar/cpio 存档或卸载到后台服务器是另一回事。但这有点无聊。维护多个备份文件怎么样?如果您知道它们会定期创建,那么您可以这样做:
这将保留过去 7 天内创建(或修改)的文件。
或者,如果您想保留多个版本(下面有 12 个版本)......
你可以这样做: