본문 바로가기
Research/Linux

Alternative cp and mv command line command

by sunnyan 2024. 3. 25.
728x90

우분투 리눅스에서 터미널을 열어 파일을 복사하거나 이동할때 용량이 작은 파일이나 디렉토리를 대상으로 할때는 별 문제가 되지 않는다. 그러나 용량이 큰 파일이나 디렉토리 이라면 작업 현황을 알 수가 없어 무지 답답하다.
우분투의 cp 명령이나 mv 명령은 작업이 끝나기 전까지는 아무런 출력도 없는 대기 상태이고 작업이 완전히 끝나야만 명령 프롬프트가 나타난다.
이런 답답함을 해소해 줄만한 대체 명령어가 있는지 찾아 보았다.

1) cp
gcp 명령을 사용할 수 있다. gcp는 "pip3 install gcp" 로 설치할 수 있다. 설치가 끝나면 "gcp --help" 명령을 사용할 수 있는데, cp 명령과 거의 비숫한 옵션으로 사용할 수 있다.
    * 디렉토리 복사 : gcp -r [소스 디렉토리] [타켓 디렉토리]
문제점: python 2.7 대에서는 설치가 안됨(내가 못하는 건지도 모르겠음)

2) rsync
rsync는 단순히 디렉토리 복사 기능만 있는 tool이 아니라 로컬 디렉토리간, 로컬과 원격 사이의 파일 동기화 등등의 기능을 갖고 있는 명령이다. 로컬 디렉토리 복사에도 사용할 수 있다.

로컬디렉토리 복사 사용예)
$ rsync -avzhP [SOURCE_DIR] [DEST_DIR]

  • -a : 아카이브 모드로서 원본의 심볼릭 링크, 파일 권한, 파일 수정 시간, 파일 그룹, 파일 소유자 등을 그대로 유지해서 복사합니다.
  • -v : 상세한 출력을 표시합니다.
  • -z : 데이터를 압축해서 전송합니다. 압축된 상태로 붙여 넣는 건 아니고, 목적지에는 압축이 풀린 상태로 복사됩니다.
  • -h : 사람이 읽기 쉬운 형식으로 출력합니다.
  • -P : 전송 진행 상황을 표시하고 중단된 전송을 재개합니다.

3) progress
progress는 직접적인 cp나 mv 명령의 대체는 아니고, cp나 mv 명령을 실행후에 또 다른 터미널을 열어서 progress를 실행하면 실행되고 있는 cp나 mv명령의 상태를 display한다.

728x90