C.W.K.
Stream
Lesson 08 of 12 · published

cp, mv — 복사와 이동

~12 min · cp, mv, rsync

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

cp — 신중하게 복사

cp source dest 가 파일 하나 복사. 자주 쓰는 flag:

  • -r — 재귀 (디렉터리용)
  • -i — interactive, 덮어쓰기 전 질문
  • -n — 덮어쓰기 안 함 (조용히 skip)
  • -v — verbose, 복사하는 파일마다 표시
  • -p — 권한 / 소유자 / mtime 보존
  • -a (GNU) — archive: -rp + symlink 등

마지막 슬래시 중요해. cp foo/ barfoo 의 내용 을 bar 로 (bar 존재 시). 슬래시 없으면 cp foo bar 는 자식으로 넣거나 이름 바꿈. 처음엔 throwaway 디렉터리에서 테스트.

mv — 이동 / 이름 변경

mv 는 같은 파일 시스템 안에서는 rename 과 동일 동작 — inode 만 relink. 파일 시스템 넘어가면 복사 후 삭제, 느리고 atomic 도 아냐.

cp 의 -i, -n, -v 는 mv 에서도 유효. -r 은 없어 — mv 는 가리키는 게 뭐든 통째로 옮겨.

rsync 로 갈아탈 타이밍

파일 몇 개 넘어가면 rsync -av source/ dest/ 로 갈아타. 재개 가능, 안 바뀐 거 skip, 권한 보존, 무슨 일 했는지 명확히 알려줌. network-remote 트랙에서 자세히.

마지막 슬래시 퀴즈

  • cp -r dir1 dir2 — dir2 존재 시 dir2/dir1 생성. 없으면 dir2 가 dir1 복사본.
  • cp -r dir1/ dir2/ — dir1 의 내용 을 dir2 로.
  • cp -r dir1/. dir2/ — 위와 동일, 더 명시적.

외울 필요 없어. 항상 cp -nv 먼저 돌려서 출력 보고 -n 빼.

Code

실행 전 시뮬레이션·bash
# -nv = no overwrite, verbose. Shows the plan.
cp -rnv src/ dst/
# When the plan looks right
cp -rv src/ dst/
mv 로 atomic 설정 교체·bash
# Write the new file alongside, then mv replaces atomically
cat > /etc/myapp.conf.new <<EOF
key = value
EOF
mv /etc/myapp.conf.new /etc/myapp.conf

External links

Exercise

~/sandbox/src 에 파일 두 개 만들기. cp -rv ~/sandbox/src ~/sandbox/dst1 실행 후 결과 확인. 이어서 cp -rv ~/sandbox/src/ ~/sandbox/dst2/ (마지막 슬래시 추가). 두 결과 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.