按时间只保留最近的N个文件或目录

最近使用fabric远程部署利器来部署网站,每次部署都是copy一份最新的网站代码到特定的目录,然后用一个固定的连接link到最新的网站目录,相当于安装不同版本的java,每次更新java都是将 /etc/alternatives/java指向目标java。

$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 39 Jun  4  2018 /etc/alternatives/java -> /usr/lib/jvm/java-8-oracle/jre/bin/java

项目网站连接如下,可见,备份的旧版本网站占空间挺大的,所以考虑只保留最近的三个版本,其他的都删除。

$ ls -l
total 4
lrwxrwxrwx  1 qwweb qwweb   32 Dec 14 11:33 public -> public_dir/public_20181214113219
drwxrwxr-x 13 qwweb qwweb 4096 Dec 14 11:33 public_dir

ls public_dir/
public_20181211141754  public_20181211170528  public_20181211170923  public_20181211233826  public_20181213174539  public_20181214113219
public_20181211170138  public_20181211170727  public_20181211171105  public_20181212171209  public_20181214102213

$ du -msh public_dir/
172M    public_dir/

本来想用python代码来处理,然后发现fabric不能在远端执行python命令,只能通过run()函数执行远端shell命令。所以问题变成了如何使用shell命令删除旧版本网站目录,只保留时间上最近的三个。

  • 果然还是shell脚本强大
# -t     sort by modification time, newest first
# -u     with -lt: sort by, and show, access time; with -l: show access time and sort by name; otherwise: sort by access time, newest first
ls -lut | grep -v "^total" | awk '{if (NR>3) {print $NF}}'  | xargs -n1 rm -rf
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。