SSH를 통해 많은 파일을 포함하는 폴더를 복사하는 가장 빠른 방법


13

ssh를 통해 서버에서 파일을 복제하는 가장 좋은 방법은 무엇입니까?

제 경우에는 : magento shop 복제에 대해 이야기하고 있습니다. (15000 파일 ~ 50MB)

cp -a source destination

시간이 걸립니다 ... (필자의 경우 서버는 2.4 Xeon, 2GB RAM입니다)

답변:


19

한마디 : rsync.

링크 속도가 느리거나 서버로드가 심한 경우 복사에 사용되는 도구에 병목 현상이 발생하지 않으며 복사 방법이 느려집니다.

로컬 컴퓨터와 원격 서버 사이의 복사에 대한 기본 사용법이 제공됩니다. http://oreilly.com/pub/h/38

로컬 컴퓨터에서 원격 서버로 복사하려면 (경로, 사용자 이름 및 호스트 주소를 바꿔야합니다) :

rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
  • -a 보관
  • -v 말 수가 많은
  • -z 압박 붕대
  • -e ssh "SSH 터널 사용"

(첫 번째 경로 전환, 다른 방향으로 복사하는 방법 에서 초이며 )

rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer

그러나 rsync는 동일한 서버에서 사물을 복사하는 경우에도 유용합니다.

rsync -av /path-to/copy/from /path_to/copy/to

2
@Piskvor -z는 불필요한 오버 헤드를 추가하므로 로컬 복사 옵션을 생략했습니다. IMHO, -z느린 네트워크 링크에서 rsync를 사용할 때만 사용해야 합니다. 100Base-T를 통해 대량의 데이터를 복사하는 경우 -z. 빠른 네트워크 연결에서 압축을 사용하면 CPU가 손상되고 다른 프로세스가 고갈 될 수 있습니다.
tomlogic

@tomlogic : 좋은 지적입니다. 즉, -z한 시스템 내에서 LAN 복사 또는 복사에 사용하지 마십시오 . -z인터넷을 통한 복사 유무 에 관계없이 테스트 합니다 (많은 것들에 따라 둘 중 하나가 더 빠를 수 있습니다).
Piskvor

1
얻을 것이 없기 때문에 JPEG로 가득 찬 폴더 트리를 동기화하는 것과 같이 파일이 이미 압축되어 있다는 것을 알고 있다면 압축을 생략합니다.
줄 바꿈

참고 : -e ssh이제 원격 호스트의 기본값이므로 옵션을 명시 적으로 전달할 필요가 없습니다.
Piskvor 건물 왼쪽

3

다른 단어: scp

scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server

원샷 거래의 경우 scp가 편리합니다. 파일이 많으면 rsync를 사용하는 것이 좋습니다. 연결이 끊어지면 rsync가 중단 된 지점을 선택할 수 있습니다.

rsync에 압축 ( -z) 이 있음을 알고 scp도 수행한다는 것을 알게되었습니다 ( -C).


IIRC는 적어도 네트워크 운영을 위해 SSH의 압축 알고리즘을 사용하고 있습니다.
Piskvor 건물 왼쪽

0

설정에서 rsync가 충분할 것입니다 ...하지만 작은 파일이 많은 경우 먼저 rsync를 통한 전송보다 파일을 tar하는 것이 더 빠를 수 있습니다. 소유자, 타임 스탬프, 권한 전송이 파일 크기가 작은 경우 파일 자체보다 무겁기 때문입니다. Tar은 모든 정보를 하나의 파일로 병합하고 rsync는 더 큰 블록을 복사합니다.

또는 보안이 필요하지 않은 경우 tar 및 nc를 사용하십시오.

대상에서 수신 디먼을 준비하고 압축을 풀고 untar하십시오.

nc -l -p 12345 | pigz -d | tar xvf - 

소스에서 모든 것을 tar로 병렬 압축하여 대상으로 보냅니다.

tar cvf - ./ | pigz | nc host 12345
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.