거의 모든 상황에서 cp(1)
over 를 사용해야 할 타당한 이유를 찾을 수 없는 것 같기 때문에 이것이 실제 답이 없는 질문이 아니기를 바랍니다. rsync(1)
사람들은 일반적으로 선호도를 가져야 합니까 rsync
? cp
사용에 대한 좋은 지침이 있습니까?
rsync
:Transfer diff, 압축을 사용할 수 있고 원격으로(안전하게) 사용할 수 있으며 단일 대용량 파일을 전송하는 중에도 중단되는 경우 다시 시작할 수 있습니다. 'cp
: 어쩌면 사용하기가 더 쉬울까요? rsync보다 빠르나요?
답변1
cp
coreutils의 일부이므로 어디에나 있습니다. 또한 기본적으로 단일 컴퓨터 내에서 파일을 복사하도록 설계되었습니다.
rsync
coreutils의 일부가 아니며 기본 환경에서도 존재하지 않습니다. 또한 주로 네트워크를 통해 파일을 전송하도록 설계되었습니다. coreutils보다 rsync
종속성이 더 많지만 그 차이는 큰 의미가 없습니다.
추신: 그런데, CPU 사용량은 임베디드 시스템에서 여전히 중요합니다.
답변2
rsync
모든 복사 작업에 사용하고 싶지 않은 주된 이유는 rsync
계산 오버헤드 때문입니다. 데이터 전송이 실제로 시작되기 전에 rsync
모든 파일이 검사됩니다 . 그런 다음 각 파일 전에 비교를 수행하십시오. 2012년에 빠른 CPU가 등장하더라도 이러한 오버헤드는 작지 않습니다. 저는 항상 이러한 유형의 전송을 수행하며 상당히 큰 서버에서는 대량의 데이터 처리를 시작하면 오버헤드로 인해 시간이 많이 걸릴 수 있습니다.
rsync
전혀 사용하지 말라는 것이 아닙니다 . rsync
언제든지 사용하면 전송 시간을 절약할 수 있습니다. 동일한 작업을 수행할 rsync
때 when 을 사용하지 마세요 .cp
제가 주로 하는 일은 일반 복사 방법을 사용하여 데이터를 먼저 가져오는 것입니다. 그런 다음 후속 변경이 rsync
이루어지며 이 시점에서 이러한 차이점을 활용할 수 있습니다.
답변3
cp
덜 쓰길 바라요CPU로컬로 복사하는 경우 diff를 사용하지 않으므로 rsync
줄일 수 있습니다 .쓰다diff를 사용할 때. 어쨌든 전체 파일/차이점을 읽고 써야 하고 추가 계산이 필요하므로 로컬 압축은 피해야 합니다.
답변4
차이가 크거나 존재하지 않는 경우의 오버헤드를 제외하고는 rsync
동등한 것이 없는 것으로 보이며 cp --reflink=always
이를 지원하는 파일 시스템에 복사하면 많은 데이터를 절약할 수 있습니다. 사본을 작성하므로 원본 데이터와 사본 간의 공통 데이터(처음에는 모든 데이터가 한 번만 저장됩니다). rsync
그러나 더 나은업데이트 중CoW 사본, 을 사용하십시오 --inplace
.