「Backup」の版間の差分

提供: wikipokpok
移動先: 案内検索
(バックアップスクリプトをまとめて実行プログラムにする)
(タイムゾーンを確認する)
 
(同じ利用者による、間の18版が非表示)
1行目: 1行目:
 
== てぷノートのデータのバックアップ ==
 
== てぷノートのデータのバックアップ ==
 
=== 概要 ===
 
=== 概要 ===
 +
* UbuntuサーバーのPostgresのtep5_productionをバックアップする
 
* 毎日午前0時(0時00分)と午後12時(12時00分)に実行されるようにスケジュールした
 
* 毎日午前0時(0時00分)と午後12時(12時00分)に実行されるようにスケジュールした
 
* plain形式、テキスト形式のSQLスクリプトとしてデータベースの内容をバックアップ
 
* plain形式、テキスト形式のSQLスクリプトとしてデータベースの内容をバックアップ
 +
 +
=== タイムゾーンを確認する ===
 +
timedatectl status
 +
 +
サーバーのタイムゾーンを日本時間(JST)に設定するには、以下のコマンドを使用する
 +
 +
sudo timedatectl set-timezone Asia/Tokyo
  
 
=== cronジョブ設定 ===
 
=== cronジョブ設定 ===
18行目: 26行目:
 
tep5_production: ダンプを作成する対象のデータベース名。
 
tep5_production: ダンプを作成する対象のデータベース名。
 
> ~/dump_data/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).sql: ダンプデータを指定されたディレクトリに保存します。$(date +\%Y-\%m-\%d_\%H:\%M:\%S)の部分は、現在の日時を取得し、その日時をファイル名に使用していることを示しています。例えば、2023-01-01_12:34:56.sqlのような形式</nowiki>
 
> ~/dump_data/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).sql: ダンプデータを指定されたディレクトリに保存します。$(date +\%Y-\%m-\%d_\%H:\%M:\%S)の部分は、現在の日時を取得し、その日時をファイル名に使用していることを示しています。例えば、2023-01-01_12:34:56.sqlのような形式</nowiki>
 +
 +
ログの確認
 +
$ grep CRON /var/log/syslog
  
 
=== ローカルからリモートに接続しコピーする ===
 
=== ローカルからリモートに接続しコピーする ===
35行目: 46行目:
 
  % rsync -av --ignore-existing jq:/home/jq/dump_data/ .
 
  % rsync -av --ignore-existing jq:/home/jq/dump_data/ .
  
=== バックアップスクリプトをまとめて実行プログラムにする ===
+
=== バックアップコマンドをスクリプトに書いて実行プログラムにする ===
binディレクトリを作りプログラムを置く
+
homeにbinディレクトリを作りプログラムを置く
 
  <nowiki># binディレクトリが存在しない場合は作成
 
  <nowiki># binディレクトリが存在しない場合は作成
 
mkdir -p bin
 
mkdir -p bin
42行目: 53行目:
 
# binディレクトリに移動
 
# binディレクトリに移動
 
cd bin</nowiki>
 
cd bin</nowiki>
 +
 +
ファイルを用意する
 +
vim usb_sync_tep_dump.sh
 +
 +
シェルスクリプトを書く
  
 
  <nowiki>#!/bin/bash
 
  <nowiki>#!/bin/bash
54行目: 70行目:
 
rsync -av --ignore-existing jq:/home/jq/dump_data/ .
 
rsync -av --ignore-existing jq:/home/jq/dump_data/ .
 
</nowiki>
 
</nowiki>
 +
 +
実行権限を与える
 +
chmod +x usb_sync_tep_dump.sh
 +
 +
bin ディレクトリへのパスを ~/.bashrc または ~/.bash_profile または ~/.zshrc などの設定ファイルに追加する
 +
echo 'export PATH=$PATH:/Users/jq/bin' >> ~/.zshrc
 +
 +
設定を反映させる(パスの追加、設定の反映は一度でいい。別のプログラム新しいプログラムを置いても有効。
 +
source ~/.zshrc
 +
 +
この手順によって、/Users/jq/bin ディレクトリ内にあるスクリプトが、どのディレクトリからでも実行できるようになる
 +
% usb_sync_tep_dump.sh
 +
 +
シェルの確認方法
 +
<nowiki>% ls -a ~ | grep .zshrc
 +
 +
.zshrc
 +
</nowiki>
 +
 +
注意
 +
変更は現在のシェルセッションに対してのみ有効。新しいターミナルセッションを開始するか、既存のセッションを再起動することで、変更がすべてのセッションに反映される。
 +
 +
=== ローカルで予約する ===
 +
cronの設定を編集
 +
% crontab -e
 +
 +
エディタが開くので、次を追加する。毎日12:30と00:30にスクリプトを実行する設定。
 +
 +
MacOSでは >/tmp/stdout.log 2>/tmp/stderr.logを書かないとログが出力されない。
 +
 +
30 0,12 * * * /bin/bash /Users/jq/bin/usb_sync_tep_dump.sh >/tmp/stdout.log 2>/tmp/stderr.log
 +
 +
確認
 +
crontab -l
 +
 +
ログの確認
 +
log show --process cron
 +
  
  
  
 
[[Category:memo|{{PAGENAME}}]]
 
[[Category:memo|{{PAGENAME}}]]

2023年12月2日 (土) 14:58時点における最新版

てぷノートのデータのバックアップ[編集]

概要[編集]

  • UbuntuサーバーのPostgresのtep5_productionをバックアップする
  • 毎日午前0時(0時00分)と午後12時(12時00分)に実行されるようにスケジュールした
  • plain形式、テキスト形式のSQLスクリプトとしてデータベースの内容をバックアップ

タイムゾーンを確認する[編集]

timedatectl status

サーバーのタイムゾーンを日本時間(JST)に設定するには、以下のコマンドを使用する

sudo timedatectl set-timezone Asia/Tokyo

cronジョブ設定[編集]

ユーザーごとのcronジョブは、各ユーザーが自分自身のcronジョブを設定

crontab -e
0 0,12 * * * pg_dump -U jq tep5_production > ~/dump_data/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).sql

上記の説明

0 0,12 * * *
毎日午前0時(0時00分)と午後12時(12時00分)に実行されるようにスケジュール
pg_dump: PostgreSQLデータベースのダンプを作成するためのコマンド。
-U jq: データベースに接続するためのユーザー名(ユーザーjq)。
tep5_production: ダンプを作成する対象のデータベース名。
> ~/dump_data/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).sql: ダンプデータを指定されたディレクトリに保存します。$(date +\%Y-\%m-\%d_\%H:\%M:\%S)の部分は、現在の日時を取得し、その日時をファイル名に使用していることを示しています。例えば、2023-01-01_12:34:56.sqlのような形式

ログの確認

$ grep CRON /var/log/syslog

ローカルからリモートに接続しコピーする[編集]

ローカルのMacBookにUSBを挿して移動する

% cd /Volumes
% ls
% cd 'USBメモリー名'
% cd 'ディレクトリ名'

リモートマシンからUSBメモリーにディレクトリをコピーする

% scp -r jq:/home/jq/dump_data .

新しいファイルのみコピーする

% rsync -av --ignore-existing jq:/home/jq/dump_data/ .

バックアップコマンドをスクリプトに書いて実行プログラムにする[編集]

homeにbinディレクトリを作りプログラムを置く

# binディレクトリが存在しない場合は作成
mkdir -p bin

# binディレクトリに移動
cd bin

ファイルを用意する

vim usb_sync_tep_dump.sh

シェルスクリプトを書く

#!/bin/bash

# USBメモリがマウントされているディレクトリに移動
cd /Volumes/'USBメモリー名'

# ディレクトリに移動
cd 'ディレクトリ名'

# rsyncコマンドを実行
rsync -av --ignore-existing jq:/home/jq/dump_data/ .

実行権限を与える

chmod +x usb_sync_tep_dump.sh

bin ディレクトリへのパスを ~/.bashrc または ~/.bash_profile または ~/.zshrc などの設定ファイルに追加する

echo 'export PATH=$PATH:/Users/jq/bin' >> ~/.zshrc 

設定を反映させる(パスの追加、設定の反映は一度でいい。別のプログラム新しいプログラムを置いても有効。

source ~/.zshrc 

この手順によって、/Users/jq/bin ディレクトリ内にあるスクリプトが、どのディレクトリからでも実行できるようになる

% usb_sync_tep_dump.sh

シェルの確認方法

% ls -a ~ | grep .zshrc

.zshrc

注意

変更は現在のシェルセッションに対してのみ有効。新しいターミナルセッションを開始するか、既存のセッションを再起動することで、変更がすべてのセッションに反映される。

ローカルで予約する[編集]

cronの設定を編集

% crontab -e

エディタが開くので、次を追加する。毎日12:30と00:30にスクリプトを実行する設定。

MacOSでは >/tmp/stdout.log 2>/tmp/stderr.logを書かないとログが出力されない。

30 0,12 * * * /bin/bash /Users/jq/bin/usb_sync_tep_dump.sh >/tmp/stdout.log 2>/tmp/stderr.log

確認

crontab -l

ログの確認

log show --process cron