태그 보관물: rsync

rsync

한 Linux 서버에서 다른 Linux 서버로 큰 파일 복사 다른 tcp 튜닝 가이드를 따랐다. (아마도

LA 데이터 센터의 Linux 서버에서 NY 데이터 센터의 다른 Linux 서버로 10MB 링크를 통해 75 기가 바이트 tgz (mysql lvm 스냅 샷)를 복사하려고합니다.

200-300 시간 사이에서 변동하는 rsync 또는 scp로 약 20-30Kb / s를 얻습니다.

현재 두 번째 데이터 센터가 아직 활성화되지 않았기 때문에 비교적 조용한 링크입니다. 작은 파일 전송으로 뛰어난 속도를 얻었습니다.

나는 구글을 통해 찾은 다른 tcp 튜닝 가이드를 따랐다. (아마도 잘못된 가이드를 읽고 있을지도 모른다.)

tar + netcat 터널 팁을 보았지만 작은 파일의 LOTS에만 유용하며 파일 전송이 효과적으로 완료되면 업데이트하지 않는다는 것을 이해합니다.

하드 드라이브 배송에 의지하기 전에 누구에게나 좋은 정보가 있습니까?

업데이트 :
글쎄 … 그것은 결국 링크 일 수 있습니다 🙁 아래 내 테스트 참조 …

NY에서 LA로 환승 :

빈 파일을 가져옵니다.

[nathan@laobnas test]$ dd if=/dev/zero of=FROM_LA_TEST bs=1k count=4700000
4700000+0 records in
4700000+0 records out
4812800000 bytes (4.8 GB) copied, 29.412 seconds, 164 MB/s
[nathan@laobnas test]$ scp -C obnas:/obbkup/test/FROM_NY_TEST .
FROM_NY_TEST                                    3%  146MB   9.4MB/s   07:52 ETA

스냅 샷 타르볼을 가져옵니다.

[nathan@obnas db_backup]$ ls -la db_dump.08120922.tar.gz
-rw-r--r-- 1 root root 30428904033 Aug 12 22:42 db_dump.08120922.tar.gz

[nathan@laobnas test]$ scp -C obnas:/obbkup/db_backup/db_dump.08120922.tar.gz .
db_dump.08120922.tar.gz            0%   56MB 574.3KB/s 14:20:40 ET

LA에서 NY로 환승 :

빈 파일을 가져옵니다.

[nathan@obnas test]$ dd if=/dev/zero of=FROM_NY_TEST bs=1k count=4700000
4700000+0 records in
4700000+0 records out
4812800000 bytes (4.8 GB) copied, 29.2501 seconds, 165 MB/s
[nathan@obnas test]$ scp -C laobnas:/obbkup/test/FROM_LA_TEST .
FROM_LA_TEST                                    0% 6008KB 497.1KB/s 2:37:22 ETA

스냅 샷 타르볼을 가져옵니다.

[nathan@laobnas db_backup]$ ls -la db_dump_08120901.tar.gz
-rw-r--r-- 1 root root 31090827509 Aug 12 21:21 db_dump_08120901.tar.gz

[nathan@obnas test]$ scp -C laobnas:/obbkup/db_backup/db_dump_08120901.tar.gz .
db_dump_08120901.tar.gz                0%  324KB  26.8KB/s 314:11:38 ETA

링크를 MPLS / 이더넷 10MB 링크로 표시 한 우리 시설을 운영하는 사람들과 함께 할 것입니다. (으 rug하다)



답변

스니커 넷 누구?

이것이 한 번만 복사한다고 가정하면 파일을 CD (또는 다른 매체)에 복사하고 밤새 대상으로 복사 할 수 있다고 생각하지 않습니까?

실제로 해당 연결을 통해 해당 크기의 파일 전송이 올바르게 복사되지 않을 수있는 가장 빠른 옵션 일 수 있습니다.이 경우 다시 시작해야합니다.


rsync

두 번째 선택 / 시도는 실패한 전송, 부분 전송 등을 감지하고 중단 된 곳에서 픽업 할 수 있기 때문에 rsync입니다.

rsync --progress file1 file2 user@remotemachine:/destination/directory

–progress 플래그는 단지 거기에 앉아서 자신을 다시 추측하는 대신 피드백을 줄 것입니다. 🙂


Vuze (비트 토렌트)

세 번째 선택은 Vuze를 토렌트 서버로 사용하고 원격 위치에서 표준 bitorrent 클라이언트를 사용하여 다운로드하는 것입니다. 나는 이것을 한 다른 사람들을 알고 있지만 당신은 알고 있습니다 … 그들이 모든 것을 실행할 때까지 … 나는 밤새 데이터를 얻을 수있었습니다 …

당신의 상황에 따라 다릅니다.

행운을 빕니다!


최신 정보:

알다시피, 나는 당신의 문제에 대해 조금 더 생각하고 있습니다. 왜 파일이 ​​하나의 거대한 타르볼이어야합니까? Tar는 큰 파일을 작은 파일로 완벽하게 분할 할 수 있습니다 (예를 들어 미디어를 스팬하기 위해).


답변

나는 과거에 60GB tbz2 파일로 그 작업을 수행했습니다. 더 이상 스크립트가 없지만 다시 작성하기 쉬워야합니다.

먼저 파일을 ~ 2GB로 분할하십시오.

split --bytes=2000000000 your_file.tgz

각 조각에 대해 MD5 해시를 계산하고 (이것은 무결성을 검사하는 것입니다) 어딘가에 저장 한 다음 선택한 도구를 사용하여 조각과 해당 MD5를 원격 사이트에 복사하기 시작합니다 (화면의 netcat-tar-pipe) 세션).

잠시 후 md5에 조각이 괜찮은지 확인한 다음 :

cat your_file* > your_remote_file.tgz

원본 파일의 MD5도 수행 한 경우 해당 파일도 확인하십시오. 괜찮 으면 파일의 압축을 풀 수 있습니다. 모든 것이 정상입니다.

(시간을 찾으면 스크립트를 다시 작성합니다)


답변

일반적으로 나는 rsync를 크게 옹호하지만 단일 파일을 처음 전송할 때별로 의미가없는 것 같습니다. 그러나 약간의 차이만으로 파일을 다시 전송하는 경우 rsync가 확실한 승자가 될 것입니다. 어쨌든 rsync를 사용하기로 선택한 경우 --daemon성능을 저하시키는 ssh 터널을 제거하기 위해 한쪽 끝을 모드 에서 실행하는 것이 좋습니다 . 매뉴얼 페이지는이 모드를 매우 자세하게 설명합니다.

내 추천? 중단 된 다운로드 재개를 지원하는 서버 및 클라이언트가있는 FTP 또는 HTTP 두 프로토콜 모두 빠르고 가벼워 ssh-tunnel 패널티를 피할 수 있습니다. Apache + wget이 빠르게 비명을지를 것입니다.

netcat 파이프 트릭도 잘 작동합니다. 하나의 큰 파일을 전송할 때 Tar은 필요하지 않습니다. 그리고 그것이 끝났을 때 당신에게 알리지 않는 이유는 당신이 그것을 말하지 않았기 때문입니다. -q0서버 측에 플래그를 추가하면 예상대로 작동합니다.

server $ nc -l -p 5000> outfile.tgz

client $ nc -q0 server.example.com 5000 <infile.tgz

netcat 접근 방식의 단점은 전송이 74GB로 죽으면 다시 시작할 수 없다는 것입니다.


답변

netcat (때때로 nc라고 함)에 샷을줍니다. 다음은 디렉토리에서 작동하지만 하나의 파일 만 처리하도록 쉽게 조정할 수 있어야합니다.

대상 상자에서 :

netcat -l -p 2342 | tar -C /target/dir -xzf -

소스 상자에서 :

tar czf * | netcat target_box 2342

두 tar 명령 모두에서 ‘z’옵션을 제거하여 파일이 이미 압축 된 상태에서 조금 더 빠르게 볼 수 있습니다.


답변

큰 파일의 경우 기본 SCP와 Rsync (SCP를 사용)가 매우 느립니다. 오버 헤드가 적은 프로토콜을 사용하려고 생각합니다. 더 간단한 암호화 사이퍼를 사용하거나 전혀 사용하지 않았습니까? --rsh전송 방법을 변경하려면 rsync 옵션을 살펴보십시오 .

FTP 또는 HTTP가 아닌 이유


답변

상황에 약간의 오버 헤드가 추가되지만 BitTorrent는 실제로 큰 파일을 전송하는 정말 좋은 솔루션입니다. BitTorrent는 파일을 기본적으로 청크하고 손상되면 다시 전송 될 수있는 각 청크를 체크섬하는 등 많은 훌륭한 기능을 가지고 있습니다.

Azureus (현재 Vuze) 와 같은 프로그램 에는 하나의 앱에서 토렌트를 생성, 서버 및 다운로드하는 데 필요한 모든 부분이 포함되어 있습니다. 빈을 염두에두고 Azureus는 BitTorrent에 가장 적합한 솔루션이 아니며 GUI도 필요하다고 생각합니다. 리눅스 용 명령 줄 구동 토런트 도구가 많이 있습니다.


답변

개인적으로 20-30Kb / s는 10Mb (10MB가 아닌 10MB로 가정) 링크의 경우 매우 낮은 것 같습니다.

내가 당신이라면, 나는 두 가지 중 하나를 할 것입니다 (물리적 접근이 불가능하다고 가정)-

어느 쪽이든, 큰 파일을 약 500MB의 작은 청크로 분할하는 것이 좋습니다. 운송 중 손상이 발생할 경우에 대비합니다.

작은 청크가 있으면 rsync를 다시 사용하거나 개인적으로 개인 보안 ftp 세션을 사용하고 완료시 파일을 CRC하는 것을 선호합니다.