所以我想创建一个删除文件夹及其内容的脚本,但在执行此操作时可能会创建新文件。做这个的最好方式是什么?
一些例子是 - 我们有“缓存”文件夹,我想删除整个缓存,但是这样做时,缓存文件夹中创建了更多的文件,并且它永远不会为空,因此无法删除。
答案 0 :(得分:2)
将目录移出位置(例如,移至/tmp
)。然后删除它。移动是原子的,快速的(因为它只是文件系统上的指针更改,并且实际上并不涉及繁重的磁盘I / O,无论文件夹中有什么)。
为了最好地抵御任何类型的问题,您应该创建一个这样的目录结构:
/var/www/website/
releases/
1111/
1112/
1113/
current_release/
假设您的网站目前位于/var/www/website/releases/1113/
。您的apache应设置DocumentRoot
/var/www/website/current_release/
/var/www/website/releases/1113
符号链接到/var/www/website/releases/1114
当您需要清除缓存时,您应该执行的是部署新版本,例如/var/www/website/current_release/
。部署ti并且具有空的缓存目录时,将{{1}}上的符号链接翻转到新版本目录。
这是实现这样的事情的唯一真正的原子方式,而不是让服务器脱机(这通常不是像清除缓存一样简单的选项)。
这将是一种解决问题的企业级解决方案,但它带来了额外的好处,允许您轻松回滚生产服务器(只需将符号链接切换到以前的版本)。如果你非常关心这个问题,这似乎是过度工程,这是正确的方式。