⚠この記事はブログ移転前のアーカイブです
MySQLのデータベースを移動するときに属性とか無視してコピーしちゃうと、Warning連発したり
こうなる。
恐ろしい。
属性を保持したままコピーしよう
sudo service mysql stop sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
#mysql 停止&設定バックアップ
sudo nano /etc/mysql/my.cnf my.cnf内で datadir = var/lib/mysql
となっているのを任意のディレクトリに変えます。設定はバックアップ済みですが、念のため元のdatadirオプションは消さずに「#」を付けてコメント化しておくといいでしょう。
sudo cp -pR /var/lib/mysql /media/usb3/mysql
cp -[オプション] [元のディレクトリ] [移動先ディレクトリ] なわけですが、ディレクトリを再帰的コピーする「R」オプションだけでは不十分です。パーミッションやオーナー情報もコピーしたいので「p」オプションも一緒につけることが必須となります。
ちなみに「R」オプションのみでコピーすると
sudo ls -l /media/usb3/mysql -rw-r--r-- 1 root root 0 Jun 1 23:18 honyarara drwx------ 2 root root 4096 Jun 1 23:18 honyarara -rw-r----- 1 root root 27262976 Jun 1 23:18 honyarara -rw-r----- 1 root root 5242880 Jun 1 23:18 honyarara -rw-r----- 1 root root 5242880 Jun 1 23:18 honyarara drwx------ 2 root root 4096 Jun 1 23:18 honyarara -rw------- 1 root root 6 Jun 1 23:18 honyarara drwx------ 2 root root 4096 Jun 1 23:18 honyarara drwx------ 2 root root 4096 Jun 1 23:18 honyarara
こんな感じでタイムスタンプがコピーした日付に書き換わり、ファイルオーナーもrootになってしまいます。