PostgreSQL、MySQL保守用のバックアップ、リストアのコマンド

毎回検索して実行しているので、自分用メモ。

環境: CentOS(linux), lampp

 

▼PostgreSQL

バックアップ
$ pg_dump dbname > /tmp/output.sql

バックアップ(drop文付き)
$ pg_dump --clean dbname > /tmp/output.sql

リストア
$ psql dbname < /tmp/input.sql

リストアしたらVACUUMする(アナライズも)
$ vacuumdb -d dbname --analyze

 

▼MySQL

バックアップ(パスワード付き)。lamppが導入されているならphpMyAdmin経由の方が簡単
# mysqldump -p dbname > /tmp/output.sql

リストア(パスワード付き)
# mysql -p dbname < /tmp/input.sql

 

▼保守

ファイル(ディレクトリ)の圧縮(アーカイブ用)tarコマンド
※フルパスで実行するとパスごとアーカイブするのでカレントディレクトリを移動して実行するほうがいい。
# tar -czvf /tmp/archive.tar.gz target/

解凍
# tar -xzvf /tmp/archive.tar.gz

10日以内に更新されたファイルを抽出して圧縮する。
(2015/04/19 Modified)xargsは大量のファイルを抽出する場合に失敗する。参考:つらつらと気づいたことを書いていきます。人狼とか。
# find ./target/ -mtime -10 | xargs tar czvf ./hoge.tgz
# find ./target/ -mtime -10 -print0 | tar -czv -T - --null -f ./hoge.tgz

「.svn」「node_modules」を除外したディレクトリ一覧をパス付きで。
# find -type d -name '.svn' -prune -o -name 'node_modules' -prune -o -type d -print

さらに書き込み可になっているディレクトリ一覧
# ls -dlF $(find -type d -name '.svn' -prune -o -name 'node_modules' -prune -o -type d -print) | grep rwxrwxrwx

 

▼SCPを使って外部サーバーからダウンロード

SSH使ってファイル転送。

外部サーバーにある「file.conf」をカレントディレクトリにダウンロード
# scp root@hoge.com:/opt/backup/file.conf ./

 

 

< Related Posts >