0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

面倒なファイル移動を1コマンドで完了!bashスクリプトでバックアップ作業を爆速にした話(初心者)

Posted at

💡 なぜ作ろうと思ったのか(背景)

日々の本番環境反映作業の中で、毎回このような手順を踏んでいました:

  1. リモートファイルを hoge_bk.php としてローカルに保存
  2. 差分を確認して改修分のみアップロード
  3. 作業完了後、バックアップフォルダへ手動でファイルを整理

特に3の作業が地味に面倒で、複数フォルダがあると非常に時間がかかる…。
そこで「コマンド1つでこの作業を自動化できないか?」と考えたのがきっかけです。

やってみた方法

まず「backup フォルダ名 課題名」で動かせるようスクリプトを作成。
backup.shという名前で保存。
SRCの箇所でバックアップ対象のフォルダを指定していますので適宜自分の環境に合ったものに変更してください(DESTも同様)
_bkの箇所で移動対象のファイルを識別しているのでこちらも適宜変更してください。

補足:
_bk. にすることで「_bk付きの拡張子ファイル」を対象にしています
• mv を使って元ファイルを移動(コピーではない点は注意)


#!/bin/bash

# 引数チェック:第1引数がフォルダ名、第2引数が課題名
if [ -z "$1" ] || [ -z "$2" ]; then
    echo "使い方: backup フォルダ名 課題名"
    exit 1
fi

FOLDER_NAME="$1"
TITLE="$2"
TODAY=$(date +%Y%m%d)

SRC="$HOME/Documents/Projects/$FOLDER_NAME"
DEST="$HOME/Documents/backup/$FOLDER_NAME/${TODAY}_${TITLE}/"

# 指定フォルダの存在チェック
if [ ! -d "$SRC" ]; then
    echo "フォルダが存在しません: $SRC"
    exit 1
fi

# *_bk.* ファイルの検索
FOUND_FILES=$(find "$SRC" -type f -name '*_bk.*')

if [ -z "$FOUND_FILES" ]; then
    echo "⚠️ バックアップ対象(*_bk.*)のファイルが見つかりませんでした。"
    exit 1
else
    mkdir -p "$DEST"
    find "$SRC" -type f -name '*_bk.*' -exec mv {} "$DEST" \;
fi

# 成功・失敗のログ出力
if [ $? -eq 0 ]; then
    echo "✅ バックアップ完了: $DEST"
else
    echo "❌ バックアップ中にエラーが発生しました"
    exit 1
fi

こちらで書いたものを/Users/[username]/binフォルダに入れる。
※binフォルダを作っていなかったら下記コードをターミナルで行うか手動で作成する。

# binフォルダを作成
mkdir -p ~/bin  

# スクリプトを移動
mv backup.sh ~/bin/  

# エイリアス設定
echo 'alias backup="~/bin/backup.sh"' >> ~/.zshrc
source ~/.zshrc

# 実行権限付与
chmod +x ~/bin/backup.sh

これでターミナルでbackup hoge fooを実行するとバックアップフォルダが作られそこに_bkファイルが移動する仕組みが出来上がりました。

まとめ

これで、今まで手間だったファイル整理がたった一行で完結できました。
作業時間の短縮だけでなく、ミスの削減にもつながりました。

bashやシェルスクリプトって難しそうな印象がありましたが、
実際に使ってみると、業務に直結する強力な武器になりますね

今後も作業の自動化や効率化をテーマに、いろんなツールを試していきたいと思います!


🙌 「こういう工夫もあるよ」「もっとこう書けるよ」などのアドバイスがあればぜひコメントください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?