2010-06-28 16 views
0

Je crée un extrait à utiliser dans mon terminal Mac OS X (bash) qui va me permettre de faire ce qui suit dans une étape:Créer la sauvegarde de MySQL à partir du serveur, télécharger localement avec scp et remplacer la base de données de MAMP

  1. me connecter à mon serveur via ssh
  2. Créer une sauvegarde mysqldump de ma base de données Wordpress
  3. Télécharger le fichier de sauvegarde sur mon disque local
  4. Remplacer ma base de données locale Mamp Pro mysql

L'idée est de créer une version locale de mon site en ligne pour le développement. Jusqu'à présent, j'ai ceci:

ssh server 'mysqldump -u root -p'mypassword' --single-transaction wordpress_database > wordpress_database.sql' && scp [email protected]:~/wordpress_database.sql /Users/me/Downloads/wordpress_database.sql && /Applications/MAMP/Library/bin/mysql -u root -p'mylocalpassword' wordpress_database < /Users/me/Downloads/wordpress_database.sql 

Évidemment, je suis un peu nouveau à cela, et je pense que j'ai beaucoup de redondance inutile là-dedans. Cependant, cela fonctionne. Oh, et la commande ssh ssh server fonctionne parce que j'ai créé un alias dans un fichier .ssh local pour faire ce bit.

Voici ce que je voudrais aider avec:

  1. cela peut-il être raccourci? Fait plus simple?
  2. Est-ce que je fais cela dans le bon sens? Y a-t-il un meilleur moyen?
  3. Comment est-ce que je pourrais ajouter la compression de gzip à ceci?

J'apprécie toute indication à ce sujet. Je vous remercie.

+1

Il est pratique de sécurité pauvres de passer des mots de passe sur la ligne de commande.Mettez le mot de passe dans un fichier, faites 'chmod 400 passwordfile' et utilisez' ... -p $ (

Répondre

0

C'est comme ça que je le ferais aussi.

Pour répondre à votre question n ° 3:

Q: Comment pourrais-je ajouter la compression gzip à cela?

A: Vous pouvez exécuter gzip wordpress_database.sql juste après la commande mysqldump puis scp le fichier gzip à la place (de wordpress_database.sql.gz)

+0

Si je fais cela, alors je suppose que je devrais le décompresser avant le local écrasement de la base de données? –

+0

c'est correct. Cela peut être fait par 'gunzip wordpress_database.sql.gz' – ryanprayogo

1

Vous pouvez le jeter hors de votre serveur et dans votre base de données locale en une seule étape (avec un soupçon de gzip pour la compression):

ssh server "mysqldump -u root -p'mypassword' --single-transaction wordpress_database | gzip -c" | gunzip -c | /Applications/MAMP/Library/bin/mysql -u root -p'mylocalpassword' wordpress_database

les doubles guillemets sont clé ici, puisque vous voulez gzip à exécuter sur le serveur et gunzip à exécuter localement. Je stocke également mes mots de passe mysql dans ~/.my.cnf (et chmod 600 ce fichier) de sorte que je ne dois pas les fournir sur la ligne de commande (où ils seraient visibles aux autres utilisateurs sur le système) :

[mysql] 
password=whatever 

[mysqldump] 
password=whatever 
+0

Notez que si vous utilisez cette approche, si votre connexion se déconnecte (déconnectée, etc) au milieu, votre base de données locale se retrouvera dans un état incohérent (seulement quelques-uns des les tables créées) – ryanprayogo

+1

Oh, c'est vraiment excellent. Est le fichier ~/.my.cnf sur le serveur? Ou la machine locale? –

+0

@ryanprayogo Je vais bien avec ça, en fait, car la copie locale est seulement pour le développement, et je suis le seul à y avoir accès. –