
データ移行前にやると便利!!開発用フォルダをスリムにするスクリプトをご紹介
こんちには。
データ事業本部 インテグレーション部 機械学習チームの中村( @nokomoro3 )です。
PCリプレースの際にデータ移行をしたいのだけれど、ファイル数やファイルサイズが多くてなかなか進まないことはありませんか。
今回は、データ移行前にやると便利な開発用フォルダをスリムにするスクリプトを紹介します。
削除したいフォルダの探索
本記事のメインとなりますが、 node_modules
などのファイル数が多いが、移行先ではlockファイルなどで復元できるので、一旦不要になるフォルダが開発用フォルダにはいくつかあると思います。
今回はそれらに類するディレクトリを発見するスクリプトを作成しました。
#!/usr/bin/env bash
set -euo pipefail
# node_modules、.mypy_cache、.venv、.next、.terraformディレクトリを検索してlist.txtに出力するスクリプト
# node_modules内のnode_modulesは除外
echo "node_modules、.mypy_cache、.venv、.next、.terraformディレクトリを検索中..."
# 現在のディレクトリ以下のnode_modules、.mypy_cache、.venv、.next、.terraformディレクトリを検索してlist.txtに出力
# node_modules内のnode_modulesは除外(-not -path "*/node_modules/*")
find . -type d \( -name "node_modules" -o -name ".mypy_cache" -o -name ".venv" -o -name ".next" -o -name ".terraform" \) -not -path "*/node_modules/*" 2>/dev/null > list.txt
# 見つかったディレクトリの数をカウント
count=$(wc -l < list.txt)
if [ $count -eq 0 ]; then
echo "node_modules、.mypy_cache、.venv、.next、または.terraformディレクトリが見つかりませんでした。"
rm -f list.txt
exit 0
fi
echo "${count}個のディレクトリが見つかりました。"
echo "リストは list.txt に保存されました。"
echo
echo "list.txtの内容:"
cat list.txt
スクリプトはCursorやClaude Codeを活用しながら作成しました。
実行すると、現在のディレクトリ配下を探索します。
./01_find_dirs.sh
以下のようなものが list.txt
に出力されます。
./project-a/hoge1/node_modules
./project-a/hoge2/.venv
./project-b/fuga1/node_modules
./project-b/fuga2/.next
この時点では、消してはいけないものがないか念の為に確認する用に、一旦発見するだけにとどめています。
削除処理
問題なければ、先ほどのリストをベースに削除するスクリプトを、マルチカーソル等を使って以下のように作成します。
#!/usr/bin/env bash
set -euo pipefail
rm -rf ./project-a/hoge1/node_modules
rm -rf ./project-a/hoge2/.venv
rm -rf ./project-b/fuga1/node_modules
rm -rf ./project-b/fuga2/.next
圧縮処理
それでもまだファイル数が多い場合は、ある程度のフォルダ単位でtarで固めてしまいましょう。
#!/usr/bin/env bash
set -euo pipefail
tar cvzf project-a.tar.gz ./project-a 2> tar_project-a.log
tar cvzf project-b.tar.gz ./project-b 2> tar_project-b.log
念のため、固めたものはきちんと移行先で展開できるかを確認しましょう。
まとめ
いかがでしたでしょうか。PC交換などのデータ移行の際にぜひご活用ください。
本記事がお役に立てば幸いです。