1

所以我想创建一个删除文件夹及其内容的脚本,但是在执行此操作时可能会创建新文件。做这个的最好方式是什么?

一些例子是 - 我们有“缓存”文件夹,我想删除整个缓存,但是在执行此操作时,缓存文件夹中创建了更多文件,并且它永远不会为空,因此无法删除。

4

1 回答 1

2

将目录移出位置(/tmp例如)。然后删除它。移动是原子的,快速的(因为它只是文件系统上的指针更改,并且无论文件夹中的内容如何,​​都不会真正涉及繁重的磁盘 I/O)。

为了获得针对任何类型问题的最佳弹性,您应该创建如下目录结构:

/var/www/website/
    releases/
        1111/
        1112/
        1113/
    current_release/

假设您的网站当前位于/var/www/website/releases/1113/. DocumentRoot您的apache 应该设置有一个/var/www/website/current_release/符号链接到/var/www/website/releases/1113

当您需要清除缓存时,您应该做的是部署一个新版本,例如/var/www/website/releases/1114. 当 ti 被部署并且有一个空的缓存目录时,将符号链接翻转/var/www/website/current_release/到你的新版本目录。

然后,Apache 将使用空缓存文件夹从新目录中提供文件。

这是完成此类事情的唯一真正原子方式,除了使服务器脱机(这通常不是清除缓存这样微不足道的事情的选择)。

这将是该问题的一种企业级解决方案,但它还具有允许您轻松回滚生产服务器的额外好处(只需将符号链接切换到以前的版本)。如果您非常关心这个问题,这似乎是过度设计,这是正确的方法。

于 2013-02-21T14:38:48.170 回答