[팁] VSCode for SSH 를 사용할 때, 서버에 쌓이는 구버전 바이너리 등을 지우는 스크립트 - 리무스BBS

chatGPT 실습으로 코드를 작성하였다. vscode for ssh를 사용하면 자꾸 ~/.vscode-server 아래에 구 버전 바이너리를 계속

쌓는 문제가 발생한다. 사이즈도 꽤 커서, 잦은 업그레이드를 할 때마다 불필요한 디스크를 사용하게 된다.

따라서 아래 스크립트를 만들어 넣고, 이 스크립트를 bashrc 에서 실행하도록 하면 vscode에서 터미널을 열 때마다 확인하고

자동으로 청소를 수행해준다.

 

#!/bin/bash

# 마지막으로 저장된 해시코드를 기록할 파일
last_hash_file="$HOME/.vscode_server_last_hash"

# VSCODE_GIT_ASKPASS_NODE 환경변수에서 현재 활성화된 해시코드 추출
if [ -z "$VSCODE_GIT_ASKPASS_NODE" ]; then
   echo "VSCODE_GIT_ASKPASS_NODE is not set. Exiting script."
   exit 0
fi

current_hash=$(echo "$VSCODE_GIT_ASKPASS_NODE" | grep -oP 'vscode-server/bin/\K[a-z0-9]{40}')

# 저장된 해시코드 읽기
if [ -f "$last_hash_file" ]; then
   last_hash=$(cat "$last_hash_file")
else
   last_hash=""
fi

# 현재 해시코드와 저장된 해시코드 비교
if [ "$current_hash" = "$last_hash" ]; then
   # 해시코드가 같으면 실행하지 않고 종료
   exit 0
fi

# .vscode-server 디렉토리 경로 설정
vscode_dir="$HOME/.vscode-server"

# 현재 활성화된 해시코드를 제외한 모든 구 버전과 관련 파일 삭제
for dir in $(ls -d "$vscode_dir"/bin/*); do
   dir_hash=$(basename "$dir")
   if [[ "$dir_hash" != "$current_hash" ]]; then
       echo "Deleting old VS Code Server version: $dir"
       rm -rf "$dir"
   fi
done

# 현재 활성화된 해시코드에 해당하지 않는 .log, .pid, .token 파일들 삭제
find "$vscode_dir" -maxdepth 1 -type f \( -name ".*.log" -o -name ".*.pid" -o -name ".*.token" \) | grep -v "$current_hash" | xargs -r rm -f

# 현재 해시코드를 저장 파일에 기록
echo "$current_hash" > "$last_hash_file"

echo "Cleanup complete."