Tistory View

리눅스

개 느린 복사 cp, 좀 빠르게 해보자.

What should I do? 2022. 7. 25. 15:34
반응형

리눅스에서 미친 듯이 사용하는 복사명령가 cp다. 너무 자주 쓰니 설명도 필요 없고, 리눅스를 쓰는 사람은 사용법을 달달외우기 까지 할 정도로 자주 쓰는 명령어다. 하지만... 이게 많은 갯수의 파일을 복사할 때는 속터진다. 드라이브의 구조상 SSD나 HDD나 어쩔 수 없는 부분이긴 하지만, 이 걸 피해 조금이라도 빠르게 복사하는 법을 한 외국인 칭구가 잘 정리를 해 놨다(에이~씨~ 복 받을 X, 옜다 복~). 링크는 맨 밑에 걸어 둘테니 영어가 편한 사람은 한번 가서 보기를 바란다.

없는 것보다야..

 

빠른 복사 하기

다량의 파일을 복사할 때, 파일하나하나마다 접근시간(seek time)이 발생하게 된다. 파일이 저장된 위치로 가는 과정과 파일을 쓰기 위해 이동하는 과정에서 드는 시간이다. SSD가 아무리 빠르다고 해도, SSD마저 이 접근시간이 필요하고 파일이 많으면 많을수록 이 시간이 체감이 된다. 전체 복사할 파일 크기보다 이게 더 시간을 잡아 먹는 경우가 많다. HDD는... 말하기도 싫다. 물론 TAPE보다야..

빠른 복사의 원리는 파일을 읽고 쓰고하지 않고 좀 많이 읽어서 메모리 비스므리한 데에 저장했다가 이게 거의 다 차면 쓰는 것도 좀 많이 쓰는 것이다. 하나하나하는 것과 별차이가 없을 것으로 생각되지만 실제 체감은 훨씬 빠르다. 이 때 파일을 묶는 tar명령을 사용하여 읽기를 지속하고 [파이프]라는 것(메모리 비스므리한)으로 전송시켜 다시 파일을 푸는 것이다. tar는 파일을 묶기만 할 뿐 파일을 압축할지 말지는 선택사항이기에 압축없이 전송이 가능하다.

$ tar cf - . | (cd /dst; tar xvf -)

위의 명령을 해석하면 "현재의 폴더를 묶고, /dst 디렉토리 이동 후 다시 묶은 것을 풀라"는 뜻이다.

 

아래와 같이 하면 전송속도를 확인 할 수도 있다.

tar cf - . | pv | (cd /dst; tar xf -)
2,06GB 0:00:09 [ 194MB/s] [  <=>                     ]

 

 

레퍼런스

아래의 링크는 이글의 참조글로 빠른 복사법 이외에 상황에 따라 어떤 방식을 쓰는 것이 좋은 지 잘 써 놨다.

https://www.zylk.net/en/web-2-0/blog/-/blogs/how-to-copy-files-in-linux-faster-and-safer-than-cp

 

반응형

'리눅스' 카테고리의 다른 글

fork() 사용법과 주의 사항  (0) 2023.05.29
리눅스에서 SSD TRIM 살짝 공부 좀하고 설정하자  (0) 2022.07.20
Replies
NOTICE
RECENT ARTICLES
RECENT REPLIES
Total
Today
Yesterday
LINK
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Article Box