웹사이트 검색

scp 및 rsync를 사용하여 시스템 간에 파일을 전송하는 방법


주요 시사점

  • scp와 rsync는 모두 파일을 안전하게 전송할 수 있지만 정기적으로 예약된 전송과 네트워크 문제 처리에는 rsync가 더 좋습니다.
  • 수동 파일 전송에는 scp를 사용하십시오. rsync는 압축과 같은 고급 옵션이 있는 스크립트 및 cron 작업에 더 적합합니다.
  • 둘 다 보안을 위해 SSH가 필요하지만 사용할 두 컴퓨터 모두에 rsync도 설치해야 합니다.

Linux 명령줄에는 두 컴퓨터 간에 파일을 전송하기 위한 도구가 많이 있지만 scp 및 rsync 명령은 거의 모든 사용 사례를 포괄합니다. 사용 방법과 시기는 다음과 같습니다.

scp와 rsync의 차이점은 무엇입니까?

scp와 rsync 명령은 모두 두 컴퓨터 간에 파일을 이동하며 매우 안전하게 수행할 수 있습니다. 두 명령의 주요 차이점은 수행하는 작업이 아니라 수행 방법에 있습니다.

scp 명령은 “secure copy”를 나타내며 여러 면에서 표준 unix cp 또는 “copy” 명령과 유사하게 작동하지만 두 컴퓨터 간에 작동합니다. 이 경우 이름의 "secure"는 원격 컴퓨터와 통신하는 데 사용하는 프로토콜인 SSH를 나타냅니다.

이 명령은 말처럼 간단합니다. 한 컴퓨터에서 파일을 읽고 다른 컴퓨터에 쓰는 것입니다. 이러한 단순성은 "한 가지 일을 잘하라"는 UNIX 철학과 잘 들어맞습니다. ”

rsync 명령도 한 가지 기능을 잘 수행하지만 좀 더 미묘한 접근 방식이 필요합니다. 차이점은 이름에 있습니다. rsync는 해당 파일이 아직 없는 경우 해당 파일을 다른 컴퓨터에 복사하지만 향후 작업에서는 각 컴퓨터에 있는 파일 간의 차이점만 비교합니다.

하나의 작은 파일만 이동하는 경우에는 이 차이가 그다지 눈에 띄지 않습니다. 즉, rsync를 백업 스크립트의 일부로 사용하는 경우 변경된 파일만 작업하면 많은 시간과 대역폭을 절약할 수 있습니다. 물론 이를 위해서는 로컬 컴퓨터와 원격 컴퓨터 모두에 rsync를 설치해야 하지만, scp 명령은 해당 명령을 실행하는 컴퓨터에만 설치하면 됩니다.

이것이 유일한 차이점은 아닙니다. rsync 명령은 또한 좀 더 탄력적이며 전송 중에 연결이 끊어지면 연결을 다시 설정할 수 있습니다. 차이점만 전송할 수 있는 기능과 결합되어 대규모 전송에 훨씬 더 적합합니다.

즉, rsync도 scp와 유사합니다. 예를 들어 SSH를 통해 연결할 수도 있고 SSH 키를 사용하여 두 명령 중 하나를 사용하여 원격 시스템에 연결할 수도 있습니다.

scp를 사용하여 파일을 전송하는 방법

scp 도구를 사용하여 컴퓨터 간에 단일 파일을 이동하는 것은 간단합니다. 명령은 다음과 같이 기본적일 수 있습니다.

scp <filename> username@remotehost:/path/to/directory

"foo.txt" 파일을 원격 컴퓨터에 복사하려면 아래 명령을 사용할 수 있습니다.

scp foo.txt kris@some-computer:/home/kris/

어떤 이유로든 scp 명령을 사용하여 해당 파일을 내 컴퓨터에 다시 복사하려면 다음을 사용할 수 있습니다.

scp kris@some-computer:/home/kris/foo.txt

물론 대부분의 경우 컴퓨터 간에 파일의 전체 디렉터리를 이동하고 싶을 것입니다. 다행스럽게도 이는 표준 cp 명령과 마찬가지로 scp에서도 간단합니다. 디렉토리를 재귀적으로 복사하려면 -r 플래그를 전달하면 됩니다.

scp -r dotfiles kris@some-computer:/home/kris/

또는 원격 컴퓨터에서 디렉터리를 재귀적으로 복사하려면 다음을 사용합니다.

scp -r kris@some-computer:/home/kris/dotfiles

이 명령으로 수행할 수 있는 모든 작업에 대한 자세한 내용은 Linux에서 scp 명령 사용 가이드를 참조하세요.

rsync를 사용하여 파일을 전송하는 방법

rsync에는 많은 기능이 내장되어 있지만 기본 전송 처리가 상당히 간단해집니다. 원격 컴퓨터에 파일을 복사하는 기본 명령은 다음과 같습니다.

rsync <local-filename> user@remotehost:<remote-filename>

따라서 위의 scp 예제에서 동일한 “foo.txt” 파일을 복사하려면 다음 명령을 사용합니다.

rsync foo.txt kris@some-computer:foo.txt

백그라운드에서 rsync는 SSH 연결을 사용하려고 시도하며 사용자 이름과 비밀번호를 묻습니다. 인증이 완료되면 전송이 시작됩니다.

반대로 파일을 로컬 컴퓨터에 다시 복사하는 것도 마찬가지로 간단합니다.

rsync kris@some-computer:/home/kris/foo.txt .

물론 이런 방식으로 작동한다고 해서 rsync의 기능과 다양한 옵션을 실제로 최대한 활용하는 것은 아닙니다. rsync에는 다양한 옵션을 설정할 수 있는 많은 플래그가 있지만 익숙해지고 싶은 플래그는 -a 또는 "--archive" 플래그입니다. 이는 무엇보다도 rsync가 디렉터리를 재귀적으로 검색하고, 소유권과 권한을 보존하고, 심볼릭 링크를 심볼릭 링크로 복사하도록 하는 몇 가지 옵션을 결합합니다.

rsync가 일반적으로 출시되는 사용 사례를 고려하면 이러한 옵션을 액세스하기 쉬운 하나의 플래그로 통합하는 것이 합리적입니다. 대부분의 rsync 사용에는 -a 플래그를 사용하는 것이 좋습니다. 예를 들어 디렉터리를 원격 컴퓨터에 동기화하려면 다음을 수행하세요.

rsync -av ~/dotfiles kris@some-computer:/home/kris/dotfiles

위 명령의 두 번째 플래그는 "--verbose"의 "-v"입니다. 이는 명령이 실행될 때 진행 상황에 대한 자세한 출력을 제공합니다.

인터넷 연결 속도에 따라(그리고 전송하려는 내용에 따라) 전송 중인 데이터를 압축하여 전송 속도를 높일 수 있습니다. 이렇게 하면 로컬 및 원격 시스템 모두에서 데이터가 압축되지 않은 상태로 유지되지만 전송되는 동안 데이터가 압축됩니다. 이렇게 하려면 -z 플래그를 사용하십시오.

rsync -azv ~/dotfiles kris@some-computer:/home/kris/dotfiles

다시 말하지만, 전송 속도가 빨라진다고 보장할 수는 없지만, 특히 백업 스크립트와 같이 빈번한 작업이나 상당한 시간이 걸리는 기타 작업의 경우 살펴볼 가치가 있습니다.

이것은 rsync 명령이 얼마나 강력한지 살짝 보여줍니다. 더 많은 아이디어를 얻으려면 rsync 명령이 실제로 작동하는 몇 가지 유용한 예가 있습니다.

scp나 rsync를 언제 사용해야 합니까?

scp 및 rsync 명령에는 각각의 장단점이 있지만 일상적인 사용에서 어떤 것이 가장 좋은지 결정하는 것은 일반적으로 사용 방법에 따라 결정됩니다. 주어진 상황에서 어떤 규칙을 사용해야 하는지 기억하는 데 도움이 되는 매우 간단한 경험 법칙이 있습니다.

명령을 수동으로 사용하여 파일을 이동하는 경우 일반적으로 scp 명령을 사용하는 것이 더 쉽습니다. 이는 더 간단하고 간단하며 아마도 이미 cp 명령을 사용하여 기본 플래그에 어느 정도 익숙할 것입니다.

반면에 스크립트를 작성하거나 cron 작업을 실행하는 경우 rsync 명령이 최선의 방법이 될 것입니다. 예상치 못한 네트워크 문제를 더 잘 처리하고 동기화 중심적 특성이 더 뛰어나 상대적으로 베어본인 scp 도구보다 더 강력한 옵션을 제공한다는 의미입니다.

두 명령 모두 알아 둘 가치가 있으며 필수 Linux 명령 도구 벨트에 있으면 유용합니다. 결국 명령 중 하나만 액세스할 수 없게 되는 경우가 언제인지 알 수 없습니다. 그렇다면 최소한 두 가지의 기본 사항을 모두 알아 두는 것이 좋습니다.

관련기사: