Uso de drush para sincronizar base de datos y carpeta de archivos en Linux

Una de las cosas fascinantes de drush es la forma como le simplica la vida al desarrollador drupalero.
A continuación los pasos para sincronizar tu base de datos y tu carpeta de archivos (carpeta "files") local con tu base de datos y carpeta de archivos remota.
Se crea una carpeta .drush en tu carpeta de usuario, si tu usuario es asuncion, entonces quedaría así:
<code>
/home/asuncion/.drush
</code>

dentro de esa carpeta poner un archivo con un nombre como

<code>
mysyte.aliases.drushrc.php
</code>

donde <i>mysite</i> es el nombre de mi web, no olvidar que el nombre del archivo está compuesto por 4 partes.

Dentro del archivo colocar código como este (entre etiquetas php)

<pre>
<?

$aliases['local.myweb'] = array(
'root' => '/var/www/myweb',
'uri' => 'localhost/myweb',
'db_url' => 'mysql://admin:admin@localhost/my_db',
'path-aliases' => array(
'%dump' => '/var/www/myweb/my_db_local.sql',
'%files' => '/var/www/myweb/sites/default/files',
),
);
</pre>
<pre>
$aliases['dev.myweb'] = array(
'root' => '/home/myuser/www',
'uri' => 'myweb.org',
// usar sólo si necesita indicar un puerto para loguearse
'ssh-options' => '-p 3453',
'remote-host' => '111.134.143.324',
'remote-user' => 'myuser',
'db_url' => 'mysql://myuser_admin:admin@localhost/myuser_db',
'path-aliases' => array(
'%dump' => '/home/myuser/www/my_db_remote.sql',
'%files' => '/home/myuser/www/sites/default/files',
),
);
?>
</pre>

Donde

<i>myweb </i> es el nombre de mi web,
<i>my_db</i> es el nombre de mi base de datos local
<i>/var/www/myweb/my_db_local.sql</i> es la ruta donde drush guardará un backup de mi base de datos local
<i>/var/www/myweb/sites/default/files</i> es la ruta donde drupal almacena mis archivos locales

y

<i>/home/myuser/www</i> es la ruta raíz donde está ubicado mi portal
<i>myuser_db</i> es mi base de datos remota
<i>/home/myuser/www/my_db_remote.sql</i> es la ruta donde drush guardará un backup de mi base de datos en mi hosting remoto
<i>/home/myuser/www/sites/default/files</i> es la ruta donde drupal almacena mis archivos en el servidor remoto

Luego, abres la consola y con un comando como

<code>
drush rsync @dev.myweb:%files @local.myweb:%files --mode=arvuz
</code>

podrás sincronizar tus archivos remotos con tus archivos locales y con un comando como

<code>
drush sql-sync @dev.myweb @local.myweb --no-cache
</code>

tu base de datos remota a tu base de datos local.

Si lo quieres al revés sólo tienes que invertir los comandos:

<code>
drush rsync @local.myweb:%files @dev.myweb:%files --mode=arvuz
</code>
<code>
drush sql-sync @local.myweb @dev.myweb --no-cache
</code>

Por último, todo esto es posible si previamente hemos configurado nuestra cuenta SSH para acceder sin necesidad de usar password. Para ello ver post <a href="http://cambio.name/personal/content/usando-ssh-keys-para-acceder-tu-ser…; target="_blank">link</a>

Para más información sobre comandos drush ir a

http://drush.ws/

Etiquetas