最近使用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