月: 2023年2月 Page 2 of 3

特撮風背景。(特撮爆破アクリルスタンド感想)

ニュース記事を見て一目惚れした商品が届きました。

特撮爆破アクリルスタンド

この、特撮でよく見る爆破シーンを再現できるというアイテム。「これは万能感ある」と即座に注文。

作例

まずはアクリルスタンドと併せてみます。

爆炎と爆煙。これだけでもインパクト十分。

次はフィギュアの背景にします。

これまた爆破オチが漂う風景となりました。

1/7の立像との撮影

商品の高さは20cmほど。ソフビやねんどろいどなどには十分な高さであるものの、1/7以上の立像には高さが足りません。

そこで、背景をリフトアップして被写体をアップにします。

結果は上々です。今後の撮影シーンの選択肢が更に増えました。

ChatGPTによるスクリプト変換。(bash → Ruby)

ことのあらまし

手なりで作ったシェルスクリプトを発展させたり可読性を高めるために利用しているChatGPT。

考えを発展させて「スクリプトの変換はできるのではないか」と考えました。

元となったスクリプト

こちらにある

cat error.log | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { print  substr($0, RSTART, RLENGTH) }' | sort | uniq > /var/lib/redmine/log/suspicious_ip/suspicious_ip.`date +%Y%m%d`
  • error.logを読み込み
  • IPアドレスにマッチする正規表現を取り出し
  • ソートした上で重複を排除
  • 指定のディレクトリに書き出す

という一文のシェルスクリプトをRubyで動かすにはとChatGPTに質問しました。

出来上がったRubyスクリプト

require 'date'

## 変数指定ここから
# error.log の格納ディレクトリ
log_dir = '/path/to/log_dir'
# error.log の名前
log_file = 'error.log'
# 別ファイルの出力ディレクトリ
output_dir = '/path/to/output_dir'
# 重複を排除する場合は 1、しない場合は 0 を指定
remove_duplicates = 1
# 別ファイルの名前
output_file = 'output.txt'
# IPアドレスを抜き出すための正規表現パターン
ip_regex = /client (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/
# error.log ファイルのフルパス
log_path = File.join(log_dir, log_file)
## 変数指定ここまで

# error.log ファイルを開く
File.open(log_path) do |file|
  # IPアドレスのみを格納する配列
  ips = []

  # 各行をチェックする
  file.each_line do |line|
    # 正規表現パターンに一致するか確認する
    match = line.match(ip_regex)
    if match
      # 一致した場合、IPアドレスを配列に格納する
      ips << match[1]
    end
  end

  # 重複を排除する場合
  if remove_duplicates == 1
    ips.uniq!
  end

  # 昇順にソートする
  ips.sort!

  # 結果を出力するファイルのパス
  output_path = File.join(output_dir, "error_#{Date.today.strftime('%Y%m%d')}_#{output_file}")

  # 結果を出力する
  File.open(output_path, 'w') do |file|
    ips.each do |ip|
      file.puts ip
    end
  end
end

スクリプトは長くなりましたが、以下の利点があります。

  • 読み込むディレクトリや正規表現のパターンを変数化しているため、他のログにも転用可能
  • 重複を排除するかしないかを決められる

また、可読性も高くなっています。

何より、シェルスクリプトの動きをRubyで動かすための文法を学べるのも素晴らしく。

今後の作業の大きな力になります。

光る文字盤、照らす床面。-百均グッズの撮影用小物(その42)-

「百均」とは言えない価格だけあって、かなりの大物です。

LED ライトボックス

買ってみたのはこちらのライトボックス。「1,000円」だけあって、かなりの大きさです。

厚みのある板と透明プラ板の文字。隙間のスリットに差し込むことで、パッケージ絵にあるように文字を光らせることができるという仕掛け。

屋内撮影での検証

見た感じでは屋外での利用が想定されているよう。屋内でも同じことができないかと検証です。

わかっていたことですが、背面において光らせると逆光になります。それはそれで面白いのですが、別の可能性を見出しました。

すなわち:「これだけの面積を光らせることができる」特性です。

下からの光

試しに「光る床板」として使ってみたら、1/6サイズのフィギュアでも光が届くようになりました。ここに少し工夫。

クリアファイルを敷いた上で光らせると、その模様がほのかに光ります。

こういったクリアオブジェクトを於けば更に反射が増します。

これはかなり楽しめるグッズと言うか「ステージ」になります。

「檸檬」と「ローズ」。(丸善コラボLAMY 入手-3-)

このシリーズも揃ってきました。

今回入手した丸善コラボのLAMY。色はローズです。

この淡いのに目立つ色は視認性も抜群ですし、こういう撮影にも映えます。

  • 比較的入手しやすい価格
  • デザインに統一感があり
  • コラボや限定などの豊富なバリエーション
  • 勝手知ったる書き心地
  • スクリュー式でないためにさっと書ける

のはLAMYの強みです。

洗浄と、再詰め替え。(プレピー with コンバータ)

作業を実施した背景

とても安価なのに書き味がよく、コンバータと組み合わせることで様々なインクを入れることができる万年筆「プレピー」。

シールキャップによりインクの持ちが良かったのが(自分にとって)徒となりました。

インク、何を入れたのか問題

調子に乗って本数を増やし、その場のノリでインクを詰めていたので、いざ、インクを補充する時に

「これ、何色を詰めたっけ」

という疑問が湧き起こります。特に、青系のインクは似通っていたので更に迷いました。

解決策

そこで、ほとんどのプレピーのインクが尽きたタイミングを見計らって

  1. 全てのプレピーを分解洗浄し
  2. 乾燥し
  3. インクを再詰め替え
  4. その際にしっかりと記録を行う

でした。

作業開始に当たって

分解洗浄後、1週間ほど乾燥させるので作業忘れを懸念。そこで、Redmineでチケットを発行。早速の作業を開始です。

インクを抜きつつ水洗い

水を入れた容器に浸しつつ、インクを抜いては水をコンバータ内に入れて洗っていきます。定期的に水を交換し、インクの水色がなくなるまで繰り返します。

超音波洗浄

全てのパーツを分解。
更に超音波洗浄器に入れてこびりついたインクを抜きます。全部で9本あったのでここが一番時間がかかりました。

乾燥

入念に乾燥。ほぼ1週間をかけました。これで、ようやく準備が整います。

インクの再定義

同じ轍を踏まないように、以下、何を詰めたかの記録を行ってからインクを詰めます。

万年筆ボディインク色備考
プレピー黒(0.3mm)霧雨蜂のシール
プレピー黒(0.2mm)竹炭
プレピー黒(0.2mm)LAMY黒インクマステ
プレピー黄色(0.3mm)蛍火
プレピー紫(0.3mm)写楽黒茶
プレピー緑(0.3mm)竹林
プレピー赤(0.3mm)歌麿梅紫
プレピーピンク(0.3mm)秋桜
プレピー青(0.3mm)深海

こうしてできあがったのがこちら。

こういう洗浄は他にも定期的に行いたいものです。

また、こういう風にいくつかのステップがある作業をRedmineのチケットに残すことの重要さを改めて思い知りました。

https://atelier.reisalin.com/issues/13

Redmineの細かな用語を変更。(message_customizeプラグイン導入)

概要

細かな用語を変更してくれるプラグインを導入します。

プラグイン名

動作を確認した環境

Redmine 4.2

導入時

Gem追加:不要
DBマイグレーション:不要

手順

さっくりとした手順

  1. SSHログイン後、Redmineプラグインに移動
  2. gitでレポジトリをダウンロード
  3. Webサービス再起動

ディレクトリに移動します。

cd /home/www-data/redmine/plugins
# 自分の環境に合わせます。

プラグインを配置します。

sudo -u www-data git clone https://github.com/farend/redmine_message_customize

ls -ld redmine_message_customize
# このディレクトリがあることを確認します

Webサービスを再起動します。

sudo systemctl restart apache2

設定後の動作

  1. Redmineに管理者アカウントでログインします。
  2. 管理>メッセージのカスタマイズが表示されればインストールできています。

設定例

例として、additional_tagsプラグインに表示されている誤訳を変更しようと思います。

  1. Redmineに管理者アカウントでログインします。
  2. メッセージのカスタマイズをクリックします。

ここから、「金額」と入力します。

「label_amount_tags」を選択します。

「金額 tags」と表示されるので、「タグ総数」と変更してみます。

変更後に保存をクリックします。

保存後、該当箇所を表示します。

表示が変更されることを確認しました。

他の項目も同様に修正します。

動作確認日

2023/02/10

Redmineのファイル一式の日次バックアップ。(復旧方法込みのシェルスクリプト作成)

概要

Redmineのメンテナンスの中で重要となるDBのバックアップは記載しました。

ここでは、それ以外のファイル一式をバックアップするスクリプトを作成することで不測の事態に備えます。

バックアップ対象となるファイル群

基本的に、以下のファイル群が残っていれば復旧は(理論上)可能です。

  • /Redmine格納ディレクトリ/plugins配下一式
  • /Redmine格納ディレクトリ/files配下一式
  • /Redmine格納ディレクトリ/public/themes配下一式
  • /Redmine格納ディレクトリ/config/database.yml
  • /Redmine格納ディレクトリ/config/configuration.yml (メール設定などで設定している場合)
  • /Redmine格納ディレクトリ/config/additional_environment.rb (プラグインなどで追記している場合)

本記事で扱うこと

  1. 先に述べたバックアップ対象となるファイル群の定期バックアップを行うシェルスクリプトを作成します。
  2. バックアップ時、パスワードが書かれているコンフィグに関してはその箇所をマスクします。(これもスクリプトに組み込みます)
  3. 動作を確認し、cronに設定して日次でバックアップを行います。

動作を確認した環境

  • Ubuntu 20.04 LTS
  • Redmine 4.2

実施前提

  • 利用しているRedmine環境の容量を確認し、バックアップ先に十分な空き容量があることを確認してください。
  • 本スクリプトは「全てのデータを一時的なバックアップディレクトリにコピーした上で圧縮し、そのディレクトリは削除する」処理を取っています。その容量も加味してください。
  • バックアップ元(Redmine格納ディレクトリ)の所有者が全てRedmine実行ユーザ(通例はwww-data)となっていることを確認してください。
  • また、本記事において、Redmineの格納ディレクトリは/home/www-data/redmineと一般的な構成と異なっております。

確認した手順

  • Redmineが稼働しているUbuntuサーバのターミナル上での操作です。

さっくりとした手順

  1. バックアップディレクトリを作成します。
  2. バックアップスクリプトを作成します。(環境に合わせて修正します)
  3. crontabに登録します。

バックアップディレクトリ作成

sudo mkdir -p /home/backup/redmine
# 運用に合わせて指定ください

sudo chown -R www-data:www-data /home/backup/redmine
# Redmineディレクトリの所有者に設定します

cd /home/backup/redmine && pwd
# 指定したディレクトリに移動します

リストア方法のテキストファイル作成

バックアップから切り戻すとき、作業者はかなり焦るものです。そこで、簡単な手順をバックアップファイル一式に配置しておけばスムーズな復旧を行うことができます。

以下の内容を教義・信仰に沿ったエディタで作成します。(ここでは筆者が用いているテキスト内容です。必要に応じて修正してください)

  • テキスト内容
    • テキスト名:how_to_restore.md
    • テキストの所有者はスクリプトの実行者と同じ(またはroot)である必要があります。
    • 上記、設定したディレクトリと同じ場所に作成します。
# Redmine復旧方法

## 前提環境

- Ubuntu 20.04系サーバ
- MySQL 8.3以上
- Apache 2.4系
- Redmineの実行ユーザはデフォルトのwww-data

## 【リストア/移行方法】

### 移行先にRedmineを作成

1. 新たにRedmineサイトを立ち上げます。(移行元と移行先のバージョンは合わせます)
2. リストア先/移行先のdb名/dbユーザはバックアップ元と同じにします。
3. バックアップされたdatabase.ymlを /redmine/config/配下に上書きます。dbパスワードを設定してください。
4. この状態で、Redmineのデータマイグレーションまで行います。

### バックアップされたファイル一式の再配置

- files/ディレクトリ一式は /redmine/配下に上書きしてください。
- plugins/ディレクトリ一式は /redmine/配下に上書きしてください。
- themesディレクトリ一式は /redmine/public/配下に格納してください。
- configuration.yml : (あるなら)/redmine/config/配下に上書き。メールパスワードを設定してください。
- additional_environment.rb : (あるなら)/redmine/config/配下に上書きします。

※ それぞれのディレクトリ/ファイルの所有者を「www-data」にします。

sudo chown -R www-data:www-data /redmine格納ディレクトリ/
> 例 sudo chown -R www-data:www-data /var/lib/redmine

### プラグインのDBマイグレーション

1. redmineを配置したディレクトリに移動します。(例; cd /var/lib/redmine/
2. 以下のコマンドを発行して、プラグインのマイグレーションを行います。

sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

### プラグインマイグレーション後のApache再起動

1. 以下を実施してWebサービスを再起動します。
sudo systemctl restart apache2.service

### DBのリストア

1. 別途、バックアップしたRedmineのsqlファイルを移行先サーバの任意のディレクトリに転送します。
2. 以下のコマンドを発行して、DBをリストアします。

mysql -u redmineのdbユーザ -p redmineのdb名 < バックアップしたsql
> 例  mysql -u redmine -p redmine < redmine_backup

### DBリストア後のApache再起動

1. 以下を実施してWebサービスを再起動します。

sudo systemctl restart apache2.service

### 動作確認

移行先(または復旧した)Redmineのホストにブラウザでアクセスし、バックアップした時の状態になっているかを確認します。

スクリプト作成

以下の内容を教義・信仰に沿ったエディタで作成します。

  • スクリプト内容
    • スクリプト名:redmine_daily_backup.sh
    • 実行ユーザ:Redmineの所有者 (通例はwww-dataです)、またはroot
#!/bin/bash

### ▼ここからはスクリプトの変数を定義します。""の記述は自身の環境に合わせて修正ください。▼ ###
# バックアップ先のディレクトリを指定します。
backup_dir="/home/backup/redmine"
# バックアップ元のRedmineが格納されているディレクトリを指定します。
redmine_dir="/home/www-data/redmine"
# ファイルに付与する日付/作業ディレクトリ名/バックアップファイル名を指定します。
current_date=$(date +%Y%m%d)
backup_name="redmine_backup_${current_date}"
zip_file="redmine_backup.${current_date}.zip"
# 保存する日数を指定します。(ここでは3日にします。)
retention_period=3
### ▲変数はここまでです▲ ###

# 一時的なバックアップディレクトリを作成します。
mkdir "${backup_dir}/${backup_name}"

# # Redmineのユーザデータ/プラグイン/テーマをバックアップディレクトリにコピーします。

cp -R "${redmine_dir}/plugins" "${backup_dir}/${backup_name}"
cp -R "${redmine_dir}/files" "${backup_dir}/${backup_name}"
cp -R "${redmine_dir}/public/themes" "${backup_dir}/${backup_name}"

# マイグレーション時に必要となるdatabase.ymlをコピーします。この時、パスワードが書かれている行をマスクします。
cp $redmine_dir/config/database.yml $backup_name
sed -i 's/password:.*/password: "type your db password"/' $backup_name/database.yml

# メール設定などでconfiguration.ymlを設定している場合、これもコピーします。(存在しない場合はコピーしません)
# 同様にパスワードが書かれていたらその行はマスクします。
if [ -f $redmine_dir/config/configuration.yml ]; then
  cp $redmine_dir/config/configuration.yml $backup_name
  sed -i 's/password:.*/password: "type your password"/' $backup_name/configuration.yml
fi

# プラグイン設定などでadditional_environment.rbを設定している場合、これもコピーします。(存在しない場合はコピーしません)
if [ -f $redmine_dir/config/additional_environment.rb ]; then
  cp $redmine_dir/config/additional_environment.rb $backup_name
fi

# スクリプトと同じディレクトリにあるhow_to_restore.txtをバックアップディレクトリに流し込みます。(存在しない場合はコピーしません)
if [ -f $backup_dir/how_to_restore.txt ]; then
  cp $backup_dir/how_to_restore.txt $backup_name/how_to_restore.md
fi

# バックアップディレクトリをzip形式で圧縮します。
cd "${backup_dir}"
zip -r "${zip_file}" "${backup_name}"

# 一時的なバックアップディレクトリを削除します。
rm -rf "${backup_dir}/${backup_name}"

# 上記retention_periodで指定した日数前のバックアップしたzipファイルを削除します。
find "${backup_dir}" -type f -name "redmine_backup.*.zip" -mtime +"${retention_period}" -delete
  • 実行権限の付与
chmod +x redmine_daily_backup.sh

動作確認

sudo -u www-data bash redmine_daily_backup.sh
# 管理者権限で実行する場合は sudo bash redmine_daily_backup.sh

以下を確認します。

  • エラーなく実行できること
  • redmine_backup.実行日付.zip形式でファイルが作成されること
  • sudo -u www-data unzip redmine_backup.実行日付.zipでファイルが解凍されディレクトリに移動できること
  • ymlファイルのパスワードが「type your (db) password」と本来のパスワードが上書きされていること
  • 設定したhow_to_restore.mdが回答したディレクトリの中にあり、参照できること

Crontab設定

Cron登録

sudo crontab -e -u www-data
# 管理者が実行する場合は sudo crontab -e -u root

登録内容例

5 0 * * * /home/backup/redmine/redmine_daily_backup.sh
# 実行時刻、頻度などは自分の運用形態に合わせます。

Cron登録確認

sudo tail -20 /var/log/cron.log

操作時刻に

  • BEGIN EDIT
  • REPLACE
  • END EDIT

が表示されれば設定は完了です。

動作確認日

2023/02/08

検証:Ubuntu 20.04にRedmine 5.0のインストールと4.2へのダウングレード。

ふと思い立っての検証です。

あらまし

別サイトに記載しているRedmine4.2のインストール手順。

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/19

この手順で「Redmine 5.0を設定できるか?」と思い立ち、検証用のまっさらなUbuntu 20.04を用意しました。

前提

以下を設定しています。

  • インターネット回線に接続されていること
  • ドメインで名前解決できること
  • SSH接続が可能なこと

実施手順

上記のリンクの手順に沿いました。異なっている点は、Redmine 5.0をダウンロードするため、

sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.0-stable /home/www-data/redmine

としただけです。

無事にRedmine5.0が動き、以下の参照どおりにSSLを設定。

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/20

これで試しにと思いましたが、

プラグインとの兼ね合い

「どうしても使いたいプラグインがRedmine 5.0に対応していない」事情により継続利用は無理だと断念。特に

  • knowlegebase
  • redmine_issue_badge_plugin

の2つが利用できないのは非常に痛い状況でした。

Redmine 5.0→4.2へのダウングレード

そこで、インストールしたばかりのRedmine5.0を4.2に即座に戻すことにします。

注意点

この手順は、データが全く入っていない状況で可能な作業です。「こんな手法を採ったのがいる」程度に参照ください。

前提

  • 上記手順を元にRedmine 5.0がインストールされ
  • なおかつデータが何も入っていない
  • RedmineのDB名は「redmine」
  • apache2設定ファイルは稼働済み

さっくりとした手順

  1. apache2サービスを落とします。
  2. データベースをまるごと削除します。
  3. 同じ名前でDBを再作成します。
  4. プログラムを再配置します。
  5. apache2サービスを起動します。

apache2サービス停止

sudo systemctl stop apache2.service
#これを行わないと後述のDBが消去できません

mysqlでDBを再作成します。

sudo mysql -u root -p
DROP DATABASE redmine;
# DBを削除します

CREATE DATABASE redmine character set utf8mb4;
# DB "redmine" を再作成します

exit

Redmineプログラムを再配置します。

sudo rm -rf /home/www-data/redmine
# Redmineを配置したディレクトリごと削除します

sudo -u www-data svn co https://svn.redmine.org/redmine/branches/4.2-stable /home/www-data/redmine
# 設定したときと同じディレクトリに4.2を再配置します

Redmineのコンフィグを設定します。

sudo cp -pi /home/www-data/redmine/config/database.yml.example /home/www-data/redmine/config/database.yml

sudo vi /home/www-data/redmine/config/database.yml
# 教義・信仰に従ったエディタで編集してください。

database.yml 編集内容

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  # rootからredmineに変更します
  password: "redmine用のパスワード"
  encoding: utf8mb4
# 本番環境(production)のみ設定を行います

Redmineのマイグレーションを行います。

cd /home/www-data/redmine/ && pwd
# /home/www-data/redmine/ (Redmineを配置したディレクトリ)であることを確認します

sudo -u www-data bundle install --without development test --path vendor/bundle

sudo -u www-data bundle exec rake generate_secret_token

sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate

sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

apache2サービスを起動します

すでにapache上でRedmineを動かす手はずは整っており、プログラムの実行ディレクトリも同じ。ならば、設定ファイルは修正せずに済むという判断のもとに実行。

sudo apache2ctl configtest
# Syntax OK を確認します

sudo systemctl restart apache2.service

systemctl status apache2.service

サイトの表示を確認します。

http://設定したRedmineドメイン

でRedmineのトップページが表示されれば成功です。

検証段階だからこそ行えた手荒な手段でした。

MySQLの定期バックアップ、現状の運用に修正。

こちらの記事を2023年2月時点での運用に併せ、以下、修正しました。

概要

Redmineのメンテナンスの中で、「データベースのバックアップ」は非常に重要なものです。

そこで、改めて、シェルスクリプトとCronによるバックアップ手順を整理しました。

動作を確認した環境

  • Ubuntu 20.04 LTS
  • Redmine 4.2
  • MySQL 8.0.32

実施前提

  • MySQLに管理者権限でログインできること。
  • Redmine用のDBとDBユーザ、DBパスワードを把握していること。
  • また、DBサーバはローカルホストです。

確認した手順

  • Redmineが稼働しているUbuntuサーバのターミナル上での操作です。
  • MySQL以外は全て一般権限で実行します。

さっくりとした手順

  1. Redmineのデータベースユーザに権限を付与します。
  2. バックアップディレクトリを作成します。
  3. アカウントファイルを作成します。
  4. バックアップスクリプトを作成します。
  5. crontabに登録します。

データベース設定

管理者権限でMySQLにログインします。

mysql -u root -p

データベースのユーザ権限を変更します。

これを行わないとDump処理ができませんでした。

GRANT RELOAD ON *.* TO '【RedmineのDBユーザ】'@'localhost';
FLUSH PRIVILEGES;
EXIT

ディレクトリとスクリプト作成

バックアップディレクトリ作成

sudo mkdir -p /home/backup/mysql
# 運用に合わせて指定ください。ファイルサーバや別パーティションにマウントしている方がサーバ事態の障害発生でも冗長化を持たせられます。

sudo chown -R hoge:hoge /home/backup/mysql
# ディレクトリの所有者をログインユーザに修正します

cd /home/backup/mysql && pwd
# 指定したディレクトリに移動します

アカウントファイル作成

※このファイルを作成しないと、「安全ではない」とエラーが出ます。

以下の内容を教義・信仰に沿ったエディタで作成します。(【】内は取り除き、自分の設定に合わせます)

  • アカウントファイル内容
  • ファイル名:account.txt
[client]
user = 【RedmineのDBユーザ】
password = "【RedmineのDBユーザ用パスワード】"

アカウントファイルでアクセスできることを確認

mysql --defaults-extra-file=account.txt

MySQLのプロンプトが出れば成功です。exitで抜けます。

スクリプト作成

以下の内容を教義・信仰に沿ったエディタで作成します。

  • スクリプト内容
  • スクリプト名:mysql_daily_backup.sh
#!/bin/bash

# スクリプトの日付形式を定義します
date=$(date +"%Y%m%d")

# バックアップディレクトリを定義します
# 上記手順で示したディレクトリを指定してください
backup_dir="/home/backup/mysql"

# アカウントファイルを指定します
credentials_file="$backup_dir/account.txt"

# バックアップ時に指定するオプションを定義します
options="--defaults-extra-file=$credentials_file --no-tablespaces --single-transaction"

# バックアップファイル名を定義します
backup_file="$backup_dir/redmine.sql.$date.gz"

# バックアップを実行し、.gz形式でバックアップをします
mysqldump $options -h localhost redmine | gzip > $backup_file

# 10世代前の圧縮ファイルを削除します(運用に合わせて指定ください)
find $backup_dir -type f -name "redmine.sql.*.gz" -mtime +10 -delete
  • 実行権限の付与
chmod +x mysql_daily_backup.sh

動作確認

sh mysql_daily_backup.sh

以下を確認します。

  • エラーなく実行できること
  • redmine.sql.実行日付.gz形式でファイルが作成されること
  • gunzip redmine.sql.実行日付.gzでファイルが解凍できること

Crontab設定

Cron登録

crontab -e

登録内容例

0 0 * * * /home/backup/mysql/mysql_daily_backup.sh
# 実行時刻、頻度などは自分の運用形態に合わせます。

Cron登録確認

sudo tail -20 /var/log/cron.log

操作時刻に

  • BEGIN EDIT
  • REPLACE
  • END EDIT

が表示されれば設定は完了です。

動作確認日

2023/02/08

“アイコン”お迎え。

自身のSNSでのアイコンとなっているキャラクターのfigmaをひょんなことから入手しました。

figma ダージリン & オレンジペコ

この時点で誰だかわかるというのがすごいですし、これをキチッと付属品として含めた制作陣に最大限の称賛です。

また、「座り姿専用」の差し替えパーツがあるので、このソファーにもフィットです。

他のfigmaも座らせられる丁度いいサイズ。

逆に、百均グッズの家具に座らせてもバッチリ。

ボードゲームの盤面を「鑑賞」するといった体でも撮影できる、随一の汎用的なfigmaを入手できて胸が高まっています。

Page 2 of 3

Powered by WordPress & Theme by Anders Norén