Bien sûr, toute commande bash est exécutable dans cron.
Pour ne stocker que certaines lignes, oui c’est possible mais c’est très étrange. Pourquoi veux-tu faire ça ? À moins que ta BDD ne soit gigantesque, ce n’est pas une bonne idée de faire ça. Parce que le jour où tu voudras recréer ta BDD à partir de ta sauvegarde, il te manquera des lignes.
Quoi qui en soit, c’est possible de rajouter des conditions avec --where
.
Par exemple, tu peux faire ça :
mysqldump --user monUsername --databases nomDeLaBase --tables nomDeLaTable --where "1, OFFSET 50" --defaults=/chemin/vers/.my.cnf > destination.sql
le fichier .my.cnf
est un fichier de config que tu peux créer où tu veux (il faut juste renseigner le bon chemin absolu dans la commande ci-dessus), et dans lequel tu rajoutes [mysqldump] password=monMotDePasse
La commande que je t’ai donnée crée un backup de nomDeLaBase.nomDeLaTable
(sauf les 50 premières lignes) dans destination.sql
. Cela dit, en général, on crée un backup de toute la base d’un coup, non seulement c’est plus rapide mais en plus c’est beaucoup plus simple : mysqldump --user monUsername --databases nomDeLaBase --defaults=/chemin/vers/.my.cnf
> destination.sqlcrée un backup de toutes les tables de
nomDeLaBase`.
Maintenant il faut créer un script autour de ça pour que les nouvelles sauvegardes n’écrasent pas les anciennes (vu que dans le cas présent chaque backup est sauvegardé dans le même fichier).
En suite on rajoute ça dans la crontab.
Tu as un tutoriel, qui utilise des backups incrémentaux, attention c’est plus compliqué à utiliser, donc préfère utiliser la commande mysqldump que je t’ai montrée ci-dessus à la place. https://zestedesavoir.com/billets/2462/les-sauvegardes-de-zeste-de-savoir/