[PR] 本記事にはプロモーションが含まれています。

【VS Code】Remote SSH の .vscode-server が 3.5GB に|古い版のサーバーを消して、バックアップからも外す

サーバーの中にたまった古い版の VS Code のサーバーを片付ける様子のイラスト VS Code

【2026年10月31日時点の情報です】

自宅の Web サーバー(myserver)には、手元の PC の VS Code から Remote SSH でつないで開発しています。ある朝、毎日のバックアップが最後まで終わったかを、次のコマンドで記録から確かめました。

Bash
sudo journalctl -t backup.sh --since today --no-pager | grep -E "started|ended\.|aborted"
  • journalctl: システムの記録(ジャーナル)を出す。
  • -t backup.sh: バックアップのスクリプト(backup.sh)が書いた記録だけにする。
  • --since today: 今日の0時からの分だけにする。
  • --no-pager: 画面を止めずに最後まで出す。
  • | grep -E "started|ended\.|aborted": 開始・終了・中断の行だけにしぼる。

開始(backup started.)と終了(backup ended.)のあいだに、こんな行が並んでいました。ファイル名の中の Extended. が、ended. に引っかかって出てきたものです。

Plaintext
/tmp/tmp.0DmLtPx7rI/home/devuser/.vscode-server/cli/servers/Stable-2c33b50b…/server/node_modules/@hpke/common/esm/src/interfaces/jsonWebKeyExtended.js
/tmp/tmp.0DmLtPx7rI/home/devuser/.vscode-server/cli/servers/Stable-2d0b7506…/server/node_modules/@hpke/common/esm/src/interfaces/jsonWebKeyExtended.js
/tmp/tmp.0DmLtPx7rI/home/devuser/.vscode-server/cli/servers/Stable-6d62b1d5…/server/node_modules/@hpke/common/esm/src/interfaces/jsonWebKeyExtended.js

VS Code がサーバーの中に入れる ~/.vscode-server が、毎日のバックアップに入っていて、しかも Stable-… という名前のフォルダが何個も並んでいます。測ると 3.5GB ありました。

この記事では、古い版のサーバーが残る理由、今使っている版の見分け方、古い版を消す手順、毎日のバックアップから外す方法を、実際に打ったコマンドのまま書きます。

※登場するユーザー名、ホスト名、IP アドレスなどは、セキュリティのため実際とは異なる架空のものに置き換えています。

場面1:.vscode-server の大きさを測る

myserver で、フォルダ全体と、版ごとの大きさを出しました。

Bash
du -sh ~/.vscode-server
du -sh ~/.vscode-server/cli/servers/* 2>/dev/null
  • du -sh ~/.vscode-server: VS Code のサーバーのフォルダ全体の大きさを出す。-s は合計だけ、-h は GB・MB で表示する。
  • du -sh ~/.vscode-server/cli/servers/*: 版ごとのフォルダの大きさを出す。
  • 2>/dev/null: 見つからないときのエラーを表示しない。
Plaintext
3.5G    /home/devuser/.vscode-server
669M    /home/devuser/.vscode-server/cli/servers/Stable-16507d91be0dc1ce4f94c04d4d0430210b8685d9
639M    /home/devuser/.vscode-server/cli/servers/Stable-2c33b50b16c472efe58357d1d2a8a5414bc23fbf
639M    /home/devuser/.vscode-server/cli/servers/Stable-2d0b7506a36c1d6db9a466440131a8e01eab2289
626M    /home/devuser/.vscode-server/cli/servers/Stable-6d62b1d5dace93a33b3a6d3eca1317bd5e15bcb1
639M    /home/devuser/.vscode-server/cli/servers/Stable-e646868227c3e3a9e3f24277c8c7220be42c0be7
4.0K    /home/devuser/.vscode-server/cli/servers/lru.json

全部で 3.5GB、版が5つあって、どれも約630〜670MB です。

場面2:古い版が残る理由と、今の版の見分け方

VS Code の Remote SSH は、手元の VS Code とまったく同じ版のサーバーを、つないだ先で動かします。フォルダ名の Stable- のあとの長い文字列が、その版を表す番号です。

No.起きること結果
1手元の VS Code が更新される次につないだとき、新しい版のサーバーを cli/servers/ に入れる
2古い版は消さずに残すほかの PC や、更新前の VS Code からつないだときに、すぐ使えるように
3lru.json に「最近使った順」を記録する今5つあるので、5つまで残す作りのよう

組み込みでいえば、書き込みツールが、ターゲットの版ごとのスタブを全部残しているようなものです。つなぐ PC が1台で VS Code も1つなら、使うのは今の版の1つだけで、残りの4つ(約2.5GB)は要りません。

今の版がどれかを、2つの方法で確かめました。

Bash
cat ~/.vscode-server/cli/servers/lru.json; echo
ps -ef | grep -o "Stable-[0-9a-f]*" | sort -u
  • cat ~/.vscode-server/cli/servers/lru.json: 最近使った順の記録を出す。先頭が、いちばん最近使った版。echo は最後に改行を出すだけ。
  • ps -ef | grep -o "Stable-[0-9a-f]*" | sort -u: 今動いているプロセスの中から、使われている版の名前だけを取り出す。sort -u で重なりを1つにまとめる。
Plaintext
["Stable-2c33b50b16c472efe58357d1d2a8a5414bc23fbf","Stable-e646868227c3e3a9e3f24277c8c7220be42c0be7","Stable-2d0b7506a36c1d6db9a466440131a8e01eab2289","Stable-6d62b1d5dace93a33b3a6d3eca1317bd5e15bcb1","Stable-16507d91be0dc1ce4f94c04d4d0430210b8685d9"]
Stable-

lru.json の先頭の Stable-2c33b50b… が今の版です。ps の結果が Stable- だけなのは、VS Code ではない別のターミナルからつないでいて、VS Code のサーバーが1つも動いていなかったためです(Stable- は grep 自身の行に当たっただけ)。動いていない今が、古い版を消すのにちょうどよいときです。

場面3:今の版だけを残して、古い4つを消す

VS Code では myserver につながず、別のターミナルのまま実行します。消したものは、要るときに VS Code が自動で入れ直すので、版のフォルダの控えは取りません。lru.json だけは、念のため控えを取ってから、今の版だけを書いた形に直します。

Bash
cd ~/.vscode-server/cli/servers
cp -p lru.json lru.json.bak-20261030
rm -rf Stable-e646868227c3e3a9e3f24277c8c7220be42c0be7 Stable-2d0b7506a36c1d6db9a466440131a8e01eab2289 Stable-6d62b1d5dace93a33b3a6d3eca1317bd5e15bcb1 Stable-16507d91be0dc1ce4f94c04d4d0430210b8685d9
echo '["Stable-2c33b50b16c472efe58357d1d2a8a5414bc23fbf"]' > lru.json
ls
cat lru.json; echo
du -sh ~/.vscode-server
cd ~
  • cd ~/.vscode-server/cli/servers: 版のフォルダが並んでいる場所に移る。以降の rm は、この中だけが対象になる。
  • cp -p lru.json lru.json.bak-20261030: 最近使った順の記録の控えを取る。
  • rm -rf Stable-e646… Stable-2d0b… Stable-6d62… Stable-1650…: 今の版以外の4つのフォルダを、中身ごと消す。-r はフォルダの中まで、-f は確認なしで消す。名前を全部そのまま書くので、今の版は消えない。
  • echo '[…]' > lru.json: 記録を、今の版だけを書いた形に書き換える。
  • ls、cat lru.json、du -sh ~/.vscode-server: 確認。
  • cd ~: ホームに戻る。
Plaintext
Stable-2c33b50b16c472efe58357d1d2a8a5414bc23fbf  lru.json  lru.json.bak-20261030
["Stable-2c33b50b16c472efe58357d1d2a8a5414bc23fbf"]

1003M   /home/devuser/.vscode-server

3.5GB → 1003MB になり、約2.5GB 空きました。

場面4:VS Code でつながるか確かめる

手元の VS Code で、いつもどおり myserver につなぎました。つないだあとに版のフォルダを見ると、今の版のままでした。

Bash
ls ~/.vscode-server/cli/servers
Plaintext
Stable-2c33b50b16c472efe58357d1d2a8a5414bc23fbf  lru.json  lru.json.bak-20261030

手元の VS Code がこの間に更新されていれば、つないだときに新しい Stable-… が自動で増えます。その場合も、問題はありません。

場面5:毎日のバックアップから外す

~/.vscode-server は、壊れても VS Code が入れ直すものなので、控えは要りません。しかも VS Code が更新されるたびに、また増えていきます。そこで、毎日のバックアップの対象から外しました。

まず、バックアップのスクリプトが、外すものをどう決めているかを見ました(実際には2回に分けて調べたので、ここでは1つのコマンドにまとめています)。

Bash
sudo grep -n -E "NOLIST|nolist|exclude" /root/backup.sh
sudo cat /root/backupnolist
  • sudo grep -n -E "NOLIST|nolist|exclude" /root/backup.sh: スクリプトの中から、外すものの一覧に関わる行を、行番号つきで出す。
  • sudo cat /root/backupnolist: 外すものの一覧を表示する。
Plaintext
21:BACKUPNOLIST=/root/backupnolist
56:TMPBACKUPNOLIST=`mktemp`
57:[ -s ${BACKUPNOLIST} ] && cat ${BACKUPNOLIST} > ${TMPBACKUPNOLIST}
58:echo "${BACKUPDIR}/*backup.tar.bz2" >> ${TMPBACKUPNOLIST}
79:    rsync -a -R --exclude-from=${TMPBACKUPNOLIST} $i ${TMPBACKUPTO}
/var/www/error
/var/www/icons
/var/www/manual

スクリプトは、/root/backupnolist の中身を rsync の --exclude-from(外すものの一覧)に渡しています。スクリプトは変えずに、この一覧に1行足せば済みます。

Bash
sudo cp -p /root/backupnolist /root/backupnolist.bak-20261030
echo "/home/devuser/.vscode-server" | sudo tee -a /root/backupnolist
sudo cat /root/backupnolist
sudo rsync -a -R -n -v --exclude-from=/root/backupnolist /home/devuser/ /tmp/rsync-test | grep -c "vscode-server"
  • sudo cp -p … /root/backupnolist.bak-20261030: 今の一覧の控えを取る。
  • echo "…" | sudo tee -a /root/backupnolist: 一覧の最後に1行足す。tee -a は「ファイルの最後に書き足す」。sudo echo … >> では root の権限で書けないので、tee を使う。
  • sudo cat /root/backupnolist: 確認1。足した行があるか見る。
  • sudo rsync -a -R -n -v --exclude-from=… /home/devuser/ /tmp/rsync-test: 確認2。スクリプトと同じ形で /home/devuser/ を写すとどうなるかを試す。-n は「試すだけで、何も写さない」、-v は写すファイルの名前を出す。
  • | grep -c "vscode-server": 写すファイルの中に vscode-server を含むものが何件あるかを数える。0 なら外れている。

最後は 0 で、外す指定は効いていました。ただ、一覧には同じ行が2行入っていました。

Plaintext
/var/www/error
/var/www/icons
/var/www/manual
/home/devuser/.vscode-server
/home/devuser/.vscode-server
0

同じ手順を2回実行していたためです。tee -a は実行するたびに書き足すので、2回打つと2行になります。しかも、2回目の cp で、控えも1行足したあとの中身で上書きされていました。同じ行が2つあっても動きは変わりませんが、あとで読むときに紛らわしいので、一覧と控えの両方を正しい中身に書き直しました。

Bash
printf '%s\n' /var/www/error /var/www/icons /var/www/manual | sudo tee /root/backupnolist.bak-20261030 > /dev/null
printf '%s\n' /var/www/error /var/www/icons /var/www/manual /home/devuser/.vscode-server | sudo tee /root/backupnolist > /dev/null
sudo ls -l /root/backupnolist /root/backupnolist.bak-20261030
  • printf '%s\n' A B C: A・B・C を1行ずつ書き出す。
  • | sudo tee … > /dev/null: ファイルを、その中身で丸ごと書き直す(-a を付けないので、書き足さない)。> /dev/null は、画面に同じ中身を出さないため。
  • sudo ls -l …: 持ち主が root、権限が -rw-r--r-- のままかを確かめる。
Plaintext
-rw-r--r-- 1 root root 76 10月 30 08:03 /root/backupnolist
-rw-r--r-- 1 root root 46 10月 30 08:03 /root/backupnolist.bak-20261030

一覧は4行(76バイト)、控えは元の3行(46バイト)に戻りました。

翌朝、NAS に届いたバックアップの大きさを、myserver でくらべました。

Bash
sudo rclone lsl sftp:/ServerBackup/myserver --ignore-checksum | tail -2
  • rclone lsl: 接続先のファイルを、大きさ(バイト)と日時つきで一覧にする。
  • sftp:/ServerBackup/myserver: rclone に sftp という名前で登録した接続先(NAS)の、myserver のバックアップのフォルダ。
  • --ignore-checksum: Synology の SFTP では、rclone のファイルの確かめ(チェックサム)がうまく動かないので、確かめを飛ばす。
  • | tail -2: 最後の2行(前の日と、その日の分)だけを出す。
Plaintext
3477648492 2026-10-30 04:16:35.000000000 backup-20261030.tar.bz2
2289343862 2026-10-31 04:10:50.000000000 backup-20261031.tar.bz2

前の日の約3.5GB から約2.3GB になり、毎日のバックアップが約1.2GB 小さくなりました。

まとめ

No.分かったこと
1VS Code の Remote SSH は、手元と同じ版のサーバーを ~/.vscode-server/cli/servers/Stable-<番号> に入れ、古い版も残す
2今の版は lru.json の先頭で分かる。VS Code でつないでいないときに、それ以外を消せばよい
3消しても、要るときに VS Code が自動で入れ直す。今回は 3.5GB → 1003MB
4~/.vscode-server は入れ直せるものなので、毎日のバックアップから外す。rsync の --exclude-from の一覧に1行足すだけで済んだ
5tee -a は実行するたびに書き足す。同じ手順を2回打つと、行も2つになる

VS Code の Remote SSH でサーバーにつなぐまでの手順は「VS Code の Remote SSH で AlmaLinux につなぐ記事」と「連載の番外編(Remote SSH)」に、開発の記事の一覧は「開発・プログラミングメモ」にまとめています。

ほかの開発・プログラミングの記事は、開発・プログラミングメモの目次から、テーマ別に探せます。

このブログは、にほんブログ村と人気ブログランキングに参加しています。記事が役に立ったら、下のランキングのバナーのどれかを押して応援してもらえると励みになります。

ブログランキング・にほんブログ村へにほんブログ村

サーバー構築・運用ランキング プログラムランキング

VS Code
watasoftdevをフォローする

コメント