[ LINUX ] 파일 , 디렉터리 복사, 이동, 이름 변경 / cp , mv파일을 복사하거나 이동하는 명령어에 대해서 알아봅시다. 1. 파일(디렉토리) 복사 명령어 : cp $ cp a.txt b.txt [ a.txt 파일을 b.txt로 파일 추가 생성한다. ] $ cp -r a b ( 디렉터리를 복사할 때는 옵션 -r을 추가한다. ) 2. 파일 이동 명령어 : mv $ mv a.txt b.txt // a.txt를 b.txt로 이동한다. ( 이 경우에는 결과적으로 이름 변경이 된다. ) => 다른 디렉토리로 이동하는 경우에는 복사가 되지만, 같은 디렉터리에서 변경 시에는 이름 변경이 된다. => 즉 이름 변경에도 많이 사용되는 명령어이니 기억하자. 저작자표시비영리변경금지 '컴퓨터 > LINUX' 카테고리의 다른 글
cp 대신 rsync : 파일 복사 진행 상황을 보고 싶을 때.며칠 전, cp 명령을 사용해서 파일 복사를 하고 있는데, 이게 진행이 되고 있는건지 아니면 죽은 건지 알 수가 없었다. 다른 창을 띄워 프로세스를 확인해보면 되겠지만, 그건 또 귀찮고. 그러다가, rsync 에는 이런 기능이 있음을 알게 됐고, 잊기 전에 그 내용을 정리해본다. 다음 글들에서 도움을 얻었다.
rsync 에는 놀랄만큼 많은 선택사항이 있는데, ‘진행 상황’을 보기 위해선 다음과 같은 설정이 필요하다. 아래는 파일별 진행 상황이 아닌, 전체 진행상황을 한꺼번에 보려고 할 때 필요한 조건이 되겠다. rsync -ah --info=progress2 <src> <dest> 9.24G 100% 207.31MB/s 0:00:42 (xfr#152, to-chk=0/234) 위에 있는 어떤 글에선 -av 를 사용하기도 한다. 그러나, v 를 쓰면, progress2 가 의미를 잃고, 모든 파일을 하나씩 보여준다. 파일이 많을 경우 화면 스크롤이 주르륵~ rsync -avh --info=progress2,name0 <src> <dest> 허나, 굳이 이럴 필요가..? 복사할 파일 전체가 아닌, 파일 하나당 정보를 원할 수도 있다. rsync -ah --info=progress1 <src> <dest> -h 는 Human Readable 로, 파일 크기를 KB/MB/GB 단위로 바꿔서 표시해준다. -r : Recursive (하위 디렉토리 포함) -l : symlink 는 symlink 로 취급 (원본이 심링크라면 복사본도 심링크) -p : Preserve Permissions (파일 허가권 동일하게 보존) -t : Preserve modification Times (파일 수정시간 동일하게 보존) -g : Preserve Group (그룹명 보존) -o : Preserve Owner (사용자명 보존) -D : --devices --specials 와 같은데, 디바이스 파일, 스페셜 파일도 복사하라는 뜻이다. Owner 와 Group 을 보존하려면, 그럴만한 권한이 있어야 하고, 이건 거의 root 로만 가능한 선택사항이라고 볼 수도 있다. -a 와 살짝 충돌하기도 하지만, 유용한 선택사항으로 –chown 도 있다. rsync -ah --chown=<username>:<group> --info=progress2 <src> <dest> chown 이 되면, 당연히 chmod 도 탐이 난다. 역시 가능하다. rsync -ah --chmod=D2775,F664 --info=progress2 <src> <dest> 소유권과 허가권을 열심히 얘기했는데, 만약 FAT류(vfat, exfat 등등)로 복사하려하면, 복사는 되지만 경고도 같이 발생한다. rsync -rltDh --info=progress2 <src> <dest> 마지막으로, –stats 도 있다. 이건 복사 작업이 모두 끝난 뒤, 일련의 과정 속에서 일어난 여러가지 상황을 정리해서 보여준다. (내 입장에선 별 필요는 없다.) $ sudo rsync -ah --info=progress2,stats3 /opt/음악/ ./test-temp/ 9.24G 100% 207.31MB/s 0:00:42 (xfr#152, to-chk=0/234) rsync[6444] (sender) heap statistics: arena: 610304 (bytes from sbrk) ordblks: 2 (chunks not in use) smblks: 77 hblks: 2 (chunks from mmap) hblkhd: 401408 (bytes from mmap) allmem: 1011712 (bytes from sbrk + mmap) usmblks: 0 fsmblks: 7360 uordblks: 193280 (bytes used) fordblks: 417024 (bytes free) keepcost: 394432 (bytes in releasable chunk) rsync[6446] (server receiver) heap statistics: arena: 593920 (bytes from sbrk) ordblks: 1 (chunks not in use) smblks: 76 hblks: 2 (chunks from mmap) hblkhd: 401408 (bytes from mmap) allmem: 995328 (bytes from sbrk + mmap) usmblks: 0 fsmblks: 7296 uordblks: 453472 (bytes used) fordblks: 140448 (bytes free) keepcost: 133152 (bytes in releasable chunk) rsync[6445] (server generator) heap statistics: arena: 806912 (bytes from sbrk) ordblks: 66 (chunks not in use) smblks: 1 hblks: 2 (chunks from mmap) hblkhd: 401408 (bytes from mmap) allmem: 1208320 (bytes from sbrk + mmap) usmblks: 0 fsmblks: 96 uordblks: 158528 (bytes used) fordblks: 648384 (bytes free) keepcost: 132416 (bytes in releasable chunk) Number of files: 234 (reg: 152, dir: 82) Number of created files: 233 (reg: 152, dir: 81) Number of deleted files: 0 Number of regular files transferred: 152 Total file size: 9.24G bytes Total transferred file size: 9.24G bytes Literal data: 9.24G bytes Matched data: 0 bytes File list size: 0 File list generation time: 0.001 seconds File list transfer time: 0.000 seconds Total bytes sent: 9.24G Total bytes received: 3.44K sent 9.24G bytes received 3.44K bytes 217.36M bytes/sec total size is 9.24G speedup is 1.00 자주 쓸 일이 있다면, alias 를 만들어두는 편이 좋을
듯.
|