Skip to content
isdnetworks
Go back

둘 중 무엇을 지울지 몰랐다

작업 폴더에 비슷한 프로젝트가 여럿 있었다.

collector/
collector-new/
collector_v2/
collector-backup/

어느 것이 쓰이는지 몰라서 아무것도 못 지우고 있었다.

Table of contents

Open Table of contents

무엇이 도는지부터 확인했다

지우기 전에 무엇이 실제로 실행되는지 봤다.

$ ps -ef | grep collector
deploy  2841  ... python /home/deploy/collector/main.py

main.py 가 도는 것을 보니 collector/ 는 살아 있다. 그다음에 예약 실행을 봤다.

$ crontab -l | grep collector
*/5 * * * * /home/deploy/collector/sync.sh
0 4 * * * /home/deploy/collector_v2/report.sh

collector_v2/report.sh 도 매일 새벽에 돈다. 하나만 도는 줄 알았는데 둘이 돌고 있었다.

평소에는 안 보이다가 특정 시각에만 도는 것이 있다. 실행 중인 것만 보고 지웠으면 새벽에 그 보고가 멈췄을 것이다.

판단 기준 — 남길 것을 가르는 네 줄

무엇을 남기고 무엇을 지울지 기준을 먼저 적었다.

1. 실행 중이거나 예약된 것    → 남긴다
2. 원격 저장소와 연결된 것    → 남긴다
3. 최근에 고친 것            → 확인 대상
4. 나머지                   → 지운다 (보관 후)

기준이 있으니 폴더마다 판정이 나왔다.

collector/         실행 중 + 저장소 연결   → 남김
collector_v2/      예약 실행 중            → 남김 (이름 확인 필요)
collector-new/     아무것도 아님, 3개월 전  → 지움
collector-backup/  아무것도 아님, 8개월 전  → 지움

기준이 없으면 폴더 하나를 볼 때마다 같은 고민을 다시 한다. 그렇게 매번 미루다 보니 넉 달째 아무것도 못 지우고 있었던 것이다.

기준을 정한 뒤로는 판단이 아니라 실행이 됐다. 각 폴더가 네 줄 중 어디에 걸리는지만 보면 된다.

지우기 전에 차이를 봤다

지우기로 한 것에 살릴 것이 남았는지를 대 봤다.

$ diff -rq collector/ collector-new/
Only in collector-new/: experimental.py
Files collector/main.py and collector-new/main.py differ

experimental.py 는 남는 쪽에 없는 파일이었다. 열어 보니 시도하다 만 것이라 옮길 것은 아니었다.

그래도 바로 지우지 않고 압축해 뒀다.

$ tar czf /backup/archive/collector-new-20161107.tar.gz collector-new/

tar 로 묶어 보관 자리에 두고 폴더를 지웠다. 판단이 틀렸더라도 꺼낼 자리가 있으면 지우는 결정이 가벼워진다.

변경 내용 — 이름을 내용에 맞추기

남기기로 한 collector_v2/ 는 이름이 내용과 안 맞았다. 안을 열어 보니 통계 보고 스크립트라 수집과 무관했다.

collector/          수집
collector-report/   보고 (구 collector_v2)

판을 뜻하는 _v2 가 실은 다른 일을 하는 것이었다. 이름이 그 폴더가 무엇인지를 안 알려 주니 지울지 말지를 매번 열어 봐야 했다.

이름을 바꾸면서 그것을 가리키는 자리도 같이 고쳤다.

$ grep -rn "collector_v2" /home/deploy /etc/cron.d 2>/dev/null

예약 설정과 스크립트 안의 경로 두 곳이 나왔다. 이름만 바꾸고 가리키는 쪽을 안 고치면 새벽 보고가 조용히 멈춘다.

왜 늘어났는지 봤다

같은 일이 또 생기지 않게 늘어난 경로를 짚어 봤다. 고칠 때 전체를 복사해 두고 작업하거나 시도해 보려고 사본을 만들거나 백업이라고 만들어 두고 안 지운 것이었다.

셋 다 일단 복사해 두는 데서 시작한다. 복사한 뒤 원본이 그대로 도니 사본은 지워도 되는지 확신이 안 서고 그대로 남는다.

확인해 보니 collector/ 만 저장소에 있고 나머지는 아니어서 전부 저장소에 넣었다.

저장소에 있으면 복사할 이유가 줄어든다. 시도해 볼 것은 분기를 따고 지난 판은 이력에서 꺼내면 된다.

사전 준비 — 새 이름 규칙

앞으로 만들 것의 이름 규칙을 먼저 정했다.

{용도}-{기능}      collector-report

_v2-new-backup 같은 접미사는 안 쓴다. 판 구분은 저장소가 하므로 폴더 이름이 그 일을 대신할 필요가 없다.

임시로 만들어야 하면 접두사와 날짜를 붙였다.

_tmp-20161107-collector-test/

_tmp 로 시작하는 것은 처음부터 정리 대상이라는 뜻이다. 날짜가 이름에 있으니 오래된 것을 찾기도 쉽다.

$ find . -maxdepth 1 -name "_tmp-*" -mtime +30

find 한 줄로 한 달 지난 것이 나온다. 지울지 말지를 사람이 기억하지 않아도 되게 만든 것이다.

정리 결과를 남겼다

마지막으로 이번에 무엇을 했는지 적어 뒀다.

2016-11-07 작업 폴더 정리
  삭제: collector-new (3개월 미사용, 보관 후)
        collector-backup (8개월 미사용, 보관 후)
  이름: collector_v2 → collector-report
  보관: /backup/archive/collector-*-20161107.tar.gz
  남은 폴더: 2개

무엇을 지웠고 어디에 보관했고 무엇을 어떤 이름으로 바꿨는지가 다섯 줄에 있다. 몇 달 뒤에 그것이 어디 갔느냐는 물음이 오면 여기를 보면 된다.

기록이 없으면 그 물음에 답할 방법이 없고 지운 사람도 그때쯤이면 기억하지 못한다.

정리


Share this post on:

Previous Post
과제가 끝날 때 남기는 것
Next Post
운영에 손대기 전에 확인하는 것