mysqldump & gzip commandes de créer correctement un fichier compressé d'une base de données MySQL à l'aide de crontab
Je vais avoir des problèmes avec l'obtention d'un crontab
de travail. Je veux automatiser une sauvegarde de base de données MySQL.
De la configuration:
- Debian GNU/Linux 7.3 (wheezy)
- MySQL Server version: 5.5.33-0+wheezy1(Debian)
- répertoires de l'utilisateur, de sauvegarde et de backup2 ont 755 autorisation
- Les noms d'utilisateur pour la base MySQL et des comptes de Debian sont les mêmes
De la coquille cette commande fonctionne
mysqldump -u user -p[user_password] [database_name] | gzip > dumpfilename.sql.gz
Quand je l'ai placer dans un crontab à l'aide de la commande " crontab-e
* * /usr/bin/mysqldump -u user -pupasswd mydatabase | gzip> /home/user/backup/mydatabase-backup-`date +\%m\%d_\%Y`.sql.gz >/dev/null 2>&1
Un fichier est créé à chaque minute dans /home/utilisateur/répertoire de sauvegarde, mais a 0 octets.
Mais quand je suis rediriger la sortie vers un deuxième répertoire, backup2, je remarque que le bon mysqldumpfile dûment comprimé est créé. Je suis incapable de comprendre ce qu'est l'erreur que je fais que les résultats dans un fichier de 0 octet dans le premier répertoire et la sortie attendue dans le second dossier.
* * /usr/bin/mysqldump -u user -pupasswd my-database | gzip> /home/user/backup/mydatabase-backup-`date +\%m\%d_\%Y`.sql.gz >/home/user/backup2/mydatabase-backup-`date +\%m\%d_\%Y`.sql.gz 2>&1
Je serais très reconnaissant une explication.
Grâce
- désolé pour la faute de frappe dans la première ligne de code, il devrait être gzip au lieu de zip
- Je ne serait pas présent à chaque minute
- Je courais juste pour tester les commandes.
Vous devez vous connecter pour publier un commentaire.
Premier de la commande mysqldump est exécutée et la sortie générée est redirigé à l'aide de la pipe. La pipe est l'envoi de la sortie standard dans le gzip commande comme entrée standard. À la suite de la filename.gz, est la redirection de la sortie de l'opérateur (>) qui va continuer de rediriger les données jusqu'à ce que le dernier nom de fichier, qui est l'endroit où les données seront enregistrées.
Par exemple, cette commande de vidage de la base de données et le lancer à travers gzip et les données seront finalement atterrir dans three.gz
Ma réponse est un exemple de rediriger le dump de la base de beaucoup de fichiers compressés (sans double compression). (Depuis que j'ai scanné la question et sérieusement manqué désolé)
Ceci est un exemple de recompresser ensuite fichiers:
C'est une bonne ressource en expliquant redirection d'e/S: http://www.codecoffee.com/tipsforlinux/articles2/042.html
gunzip < three.gz | mysql -u user -pupasswd my-database
. Réf. blog.remibergsma.com/2012/10/08/....Vous pouvez utiliser le
tee
de commande pour rediriger la sortie:voir la documentation ici
si vous avez besoin d'ajouter une date-heure à votre nom de fichier de sauvegarde (Centos7) utiliser les éléments suivants:
cela va créer le fichier: db.2017-11-17.231537.sql.gz
Personnellement, j'ai créer un file.sh (droit 755) dans le répertoire racine, un fichier qui font ce travail, sur l'ordre de la crontab.
Crontab code:
10 2 * * * racine /root/backupautomatique.sh
File.sh code:
rm-f /home/mordb-148-251-89-66.sql.gz #(Pour effacer l'ancien)
mysqldump mor | gzip > /home/mordb-148-251-89-66.sql.gz (ce que vous avez fait)
scp -P2222 /home/mordb-148-251-89-66.sql.gz root@otherip:/home/mordbexternes/mordb-148-251-89-66.sql.gz
(pour l'envoi d'une copie ailleurs, si le serveur d'envoi se bloque, parce que trop vieux, comme moi ;-))