Drupal 7 バックアップ・リストア

Nid: 1179

不要テーブルTRUNCATE https://drupal.stackexchange.com/questions/22041/which-tables-are-safe-to-clear

$ drush sql-query "SHOW TABLES LIKE 'cache%'" | grep '^cache' | xargs -L1 -I% echo "TRUNCATE TABLE %;" | xargs | $(drush sql-connect) -v
$ drush sql-query "SHOW TABLES LIKE 'search_index%'" | grep '^search' | xargs -L1 -I% echo "TRUNCATE TABLE %;" | xargs | $(drush sql-connect) -v
$ drush sql-query "TRUNCATE TABLE accesslog;"
$ drush sql-query "TRUNCATE TABLE watchdog;"

revision削除は危険だけど、サイズが大きいので削除。quizなどモジュールによってはコンテンツが消える場合もあり。

$ drush sql-query "SHOW TABLES LIKE 'field_revision_%'" | grep '^field_revision_' | xargs -L1 -I% echo "TRUNCATE TABLE %;" | xargs | $(drush sql-connect) -v

styleファイル削除

$ sudo mv sites/default/files/styles/ /tmp/

バックアップ

  • ダンプファイル取得によるバックアップ
$ drush archive-dump
  • 全サイトバックアップ
$ for website in `ls -d /var/www/html/*/ | xargs -l basename` ; do cd /var/www/html/$website; sudo sh -c "drush archive-dump --destination=/var/www/html/db_${PWD##*/}.`date +%Y%m%d_%H%M%S`.tar.gz"; done    

リストア

DBパスワードはランダム

$ sitename='octaviadata.com'
$ sudo sh -c "export DRUSH_PHP='/usr/bin/php7.4';drush archive-restore /path/to/filename.tar.gz --destination=/var/www/html/${sitename} --db-url=mysql://dbadmin_${sitename}:`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12`@localhost/db_${sitename} --db-su=root"