「Backup」の版間の差分
提供: wikipokpok
(→cronジョブ設定) |
(→タイムゾーンを確認する) |
||
(同じ利用者による、間の24版が非表示) | |||
1行目: | 1行目: | ||
− | == cronジョブ設定 == | + | == てぷノートのデータのバックアップ == |
+ | === 概要 === | ||
+ | * UbuntuサーバーのPostgresのtep5_productionをバックアップする | ||
+ | * 毎日午前0時(0時00分)と午後12時(12時00分)に実行されるようにスケジュールした | ||
+ | * plain形式、テキスト形式のSQLスクリプトとしてデータベースの内容をバックアップ | ||
+ | |||
+ | === タイムゾーンを確認する === | ||
+ | timedatectl status | ||
+ | |||
+ | サーバーのタイムゾーンを日本時間(JST)に設定するには、以下のコマンドを使用する | ||
+ | |||
+ | sudo timedatectl set-timezone Asia/Tokyo | ||
+ | |||
+ | === cronジョブ設定 === | ||
ユーザーごとのcronジョブは、各ユーザーが自分自身のcronジョブを設定 | ユーザーごとのcronジョブは、各ユーザーが自分自身のcronジョブを設定 | ||
crontab -e | crontab -e | ||
14行目: | 27行目: | ||
> ~/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 | ||
+ | |||
+ | === ローカルからリモートに接続しコピーする === | ||
ローカルのMacBookにUSBを挿して移動する | ローカルのMacBookにUSBを挿して移動する | ||
% cd /Volumes | % cd /Volumes | ||
21行目: | 37行目: | ||
% cd 'USBメモリー名' | % cd 'USBメモリー名' | ||
+ | |||
+ | % cd 'ディレクトリ名' | ||
リモートマシンからUSBメモリーにディレクトリをコピーする | リモートマシンからUSBメモリーにディレクトリをコピーする | ||
% scp -r jq:/home/jq/dump_data . | % scp -r jq:/home/jq/dump_data . | ||
+ | |||
+ | 新しいファイルのみコピーする | ||
+ | % rsync -av --ignore-existing jq:/home/jq/dump_data/ . | ||
+ | |||
+ | === バックアップコマンドをスクリプトに書いて実行プログラムにする === | ||
+ | homeにbinディレクトリを作りプログラムを置く | ||
+ | <nowiki># binディレクトリが存在しない場合は作成 | ||
+ | mkdir -p bin | ||
+ | |||
+ | # binディレクトリに移動 | ||
+ | cd bin</nowiki> | ||
+ | |||
+ | ファイルを用意する | ||
+ | vim usb_sync_tep_dump.sh | ||
+ | |||
+ | シェルスクリプトを書く | ||
+ | |||
+ | <nowiki>#!/bin/bash | ||
+ | |||
+ | # USBメモリがマウントされているディレクトリに移動 | ||
+ | cd /Volumes/'USBメモリー名' | ||
+ | |||
+ | # ディレクトリに移動 | ||
+ | cd 'ディレクトリ名' | ||
+ | |||
+ | # rsyncコマンドを実行 | ||
+ | rsync -av --ignore-existing jq:/home/jq/dump_data/ . | ||
+ | </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