J'ai déjà vu des paquebots utiliser ls, mais j'aimerais éviter cela.
J'écris un script qui copie le code sur mon serveur dans un dossier horodaté. La version "actuelle" est toujours liée de manière symétrique à un chemin constant. De cette façon, je peux revenir en arrière si quelque chose ne va pas. Désormais, chaque déploiement crée un nouveau dossier, mais j'aimerais ne conserver que les 3 derniers.
Voici ma version actuelle:
ls -tp | grep '/$' | grep -v 'current\|shared' | tail -n +4 | xargs -d '\n' rm -rf --
Ceci est exécuté dans le dossier contenant, exclut les fichiers et les deux dossiers «actuel» et «partagé» que je veux conserver (actuellement le lien symbolique susmentionné), et supprime tous les fichiers sauf les 3 les plus récents ls -t
.
Y a-t-il un moyen de faire cela sans ls
utiliser uniquement bash et la chaîne d'outils gnu?
Tous les dossiers destinés à l’élagage portent les noms suivants:
$timestamp.$branch.$sha1
Où SHA1 et branch sont des informations de git sur ce qui a été déployé exactement.
Le serveur exécute Ubuntu Xenial.
Edit: Fournissez quelques exemples de ce à quoi ressemblent les dossiers.
Voici une liste du dossier de déploiement, à quoi il ressemble maintenant:
drwxr-x--- 13 app www-data 4096 Mar 29 00:10 1490738956.develop.b806/
drwxr-x--- 13 app www-data 4096 Mar 29 00:19 1490739485.develop.ae01/
drwxr-x--- 14 app www-data 4096 Mar 29 03:33 1490751118.develop.f5b0/
lrwxrwxrwx 1 app www-data 40 Mar 29 03:33 current -> /home/app/deploy/1490751118.develop.f5b0/
drwx------ 5 app root 4096 Mar 10 04:12 shared/