리눅스 서버간에 파일을 빠르게 전송하는 가장 쉬운 방법은 무엇입니까?


16

한 CentOS 서버에서 다른 CentOS 서버로 파일을 전송해야합니다. 약 10 분마다 5MB 파일을 전송합니다. 암호화가 필요하지 않습니다.

파일을 빠르게 전송하는 것이 쉬운 이유는 무엇입니까?

ftp보다 간단한 것이 있습니까?

감사!


1
netcat를 통해 타르가 승리 할 것이라고 믿습니다 ... heh heh ... : serverfault.com/questions/18125/…
Evan Anderson

암호화는 필요 없지만 속도는 필요하기 때문에 rsync를 선호합니다.
Alex L

방금 http 전송에 많은 오버 헤드가 없으므로 아마도 그것을 사용할 수 있다는 것을 배웠습니다.
Alex L

질문에 대한 답변을 편집하지 말고 대신 답변으로 게시하십시오. 복구하다.
HopelessN00b

답변:


25

rsync

ftp 또는 tftp를 사용하기 전에 rsync를 사용합니다.

더 많은 옵션과 (제 경험상)보다 안정적인 전송.


1
또한 rsync는 일반적으로 다른 것 (scp, cifs, nfs)보다 처리량이 더 높다는 것을 발견했습니다.
Ophidian

http 전송은 어떻습니까?
Alex L

@Ophidian rsync를 데몬으로 사용한다는 의미입니까? 그렇지 않으면 ssh를 사용하고 암호화가 있기 때문에 어떻게 scp보다 빠를 수 있습니까?
balki

@balki 예, rsync 데몬입니다. 특히 번거롭지 않고 디스크에서 데이터를 줄에 넣는 작업이 훌륭하며 요청을 완료하는 데 필요한 작업이 거의 없습니다 (예 : 텍스트 파일에 diff 적용).
Ophidian

21

tar over ssh는 괜찮지 만 netcat을 통한 TCP를 통한 tar는 오버 헤드가 거의 없습니다! 이것이 일회성이라면 이것을 쏴보십시오.

수신자에서 :

nc -l -p 8989 | tar x

발신자 :

tar cf - /source-path | nc (receiving host ip address) 8989

이것이 당신이 정기적으로 할 일이라면, 아마도 rsync를 사용할 것입니다.


netcat, 스위스 군용 칼 +1
chmeee

에반을 읽지 않은 것도 마찬가지입니다. 하하하! 실제로 한 번은 아닙니다. 그는 약 10 분마다 5MB 파일을 전송할 것이라고 말했다. 아마도 모스 코드를 통해 보내는 것이 좋은 대안일까요? ;-) (참고 : 에반과 자신 사이의 개인 농담)
KPWINC

8

두 사람이 ssh를 통해 tar를 언급했지만 그것을 수행하는 방법을 말하지 않았습니다. 레코드의 기본 절차는 다음과 같습니다.

tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'

또는 수신 측에서 전송을 시작하려는 경우 :

ssh remotehost 'cd /source && tar cf - files' | tar xvf -

Evan의 netcat 솔루션보다이 방법을 사용하면 하나의 컴퓨터에서 모든 것을 시작할 수 있다는 이점이 있습니다. 두 개의 netcat 호출을 조정할 필요가 없습니다. 자동으로 실행해야하는 경우 암호없이 연결하고 해당 연결에 해당 키를 사용할 수있는 ssh 키를 설정할 수 있습니다.

ssh에는 데이터 스트림을 압축하는 -C 옵션이 있거나 GNU tar의 내장 압축 기능을 사용할 수 있습니다.

tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'

Rsync는 또 다른 옵션이지만 수신 측에 이미 존재하는 파일을 업데이트하는 데 적합합니다. 다른 쪽 끝에 존재하지 않는 파일을 전송하는 데 scp 또는 tar / ssh보다 속도가 느린 것으로 나타났습니다.


1
+1 ssh를 통해 tar를 수행하는 방법을 모든 사람이 직관적으로 알고있는 것은 아닙니다. 기묘한. :)
혼돈

tar 자체만으로는 신뢰할 수 없습니다. 무결성 검사는 없지만 SSH (TLS)를 사용하면 데이터의 비행 변경을 감지하는 TLS 기능으로 인해 무결성을 얻습니다. 암호화없이 무결성 검사를 더 잘 수행 할 수 있으므로 Rsync가 더 나은 선택입니다. OP는 암호화가 필요하지 않다고 명시했다.
킬로

타르에는 어떤 무결성 검사가 필요합니까? TCP 및 ssh 계층은 안정적인 데이터 전송을 제공합니다. tar 자체에 버그가있을 수 있다고 주장하는 경우 rsync를 동일한 방식으로 처리해야합니다. 프로토콜 문제로 인해 rsync 전송이 실제로 중단되었습니다. 나는 타르 / 타타 파이프 라인을 기억하지 않습니다.
Kenster

6

내가 사용하는 거라고 scp또는 tar이상 ssh정직,. 암호화는 속도를 늦추지 만 설정 및 사용의 용이성, 안정성 및 (주관적으로) 친숙 함은 실제로 속도가 필요 하지 않은 한 히트를 기꺼이 받아들 입니다.

기본값보다 빠른 암호를 사용하도록함으로써 ssh 전송 속도를 높일 수 있습니다. 기본값은 일반적으로 일반적으로 3des할 수 -c des있으므로 분명히 더 -c blowfish빠르지 만 정확하게 테스트하지는 않았지만 빠릅니다.

(SSHv1 시절에 자주 할 수는 -c none있지만 누군가가 나쁜 juju라고 결정했다고 생각합니다.)


4

scp / ssh를 거쳐야하는 경우 필자의 실험에 따르면 요즘 기본적으로 가장 빠른 암호는 RC4입니다. ssh / scp 명령에서 ' -c arcfour ' 를 통해 암호를 지정하십시오 .

초기 사본의 경우 :

  • scp -c arcfour -r foo/ desthost:/destdir

업데이트 :

  • rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir

3

동일한 페이지를 두 번 이상 전송하면 매뉴얼 페이지의 인용 부호와 같이 복사 속도가 빨라지므로 Rsync를 사용하는 것이 좋습니다.

   rsync is a program that behaves in much the same way that rcp does, but
   has many more options and uses  the  rsync  remote-update  protocol  to
   greatly  speed  up  file  transfers  when the destination file is being
   updated.
   The rsync remote-update protocol allows rsync to transfer just the dif-
   ferences between two sets of files across the network connection, using
   an efficient  checksum-search  algorithm  described  in  the  technical
   report that accompanies this package.

2

FTP는 매우 간단하지만 한 시스템에서 NFS 공유를 만들어 다른 시스템에 마운트하는 것이 더 간단한 방법 일 수 있습니다. 그런 다음 파일 복사는 한 디렉토리에서 다른 디렉토리로 cp를 수행하는 것으로 구성됩니다.


요구 사항에 따라. 예를 들어 인터넷에서 NFS를 사용하지 않을 것입니다.
Kyle Hodgson

1
좋은 지적. 이 경우 중단되면 중단 된 곳에서 다시 시작할 수 있으므로 rsync를 권장합니다. 또한 소스와 대상간에 델타 만 전송하기 때문입니다.
Swoogan

질문은 매우 일반적이었습니다. 특히 Swoogan이 게시 한 soulution을 좋아합니다. 특히 저자는 가장 간단한 솔루션이 필요하고 암호화가 필요하지 않다고 언급했습니다
integratorIT

2

속도를 원한다면 netcat과 tar를 사용할 수 있습니다. 암호화가 중요하지 않은 로컬 네트워크에서는 ssh, rsync 또는 scp보다 빠릅니다. 구글 "넷캣 타르".

대상 서버

nc -l -p 7878 | tar -C /target/dir -xzf -

소스 서버

tar -cz /source/dir | nc DestinationServer 7878

netcat이 실제로 설치되어 있어야합니다. 자세한 내용은 Google "netcat tar"를 참조하십시오.


1

이미 문제를 해결했다고 생각하지만 ssh가 표준 포트 22가 아닌 다른 포트에서 작동하는 경우이를 사용할 수 있습니다

rsync -avz --rsh = 'ssh -pXXXXX'/ local / dir / root@192.168.1.2 : / remote / dir

참고 :-XXXXX를 포트 번호로 바꾸십시오. 192.16.1.2를 올바른 원격 서버 IP로 바꾸십시오.


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