한 컴퓨터에서 다른 컴퓨터로 많은 양의 데이터를 보냈습니다. rsync (또는 다른 방법)로 보내면 320kb / sec로 일정하게 유지됩니다. 한 번에 두세 번의 이체를 시작하면 각각 320으로 가고 한 번에 네 번하면 링크가 최대가됩니다.
가능한 빨리 데이터를 보낼 수 있어야하므로 파일 전송과 역 다중화를 수행 할 수있는 도구가 필요합니다. 일반적인 솔루션이 필요하므로 소스 컴퓨터에서 split을 실행하고 다른 쪽에서 함께 catting하는 것은 실용적이지 않습니다. 자동화 된 방식으로 작동하려면 이것이 필요합니다.
이를 수행하는 도구가 있습니까, 아니면 직접 만들어야합니까? 발신자는 CentOS이고 수신자는 FreeBSD입니다.
답변
모든 것이 합쳐 짐에 따라 원격 미러 명령의 ‘성배’를 제시합니다. lftp
제안에 대한 davr 감사합니다 .
lftp -c "mirror --use-pget-n=10 --verbose sftp://username:password@server.com/directory"
위의 내용은 원격 디렉토리를 재귀 적으로 미러링하여 전송 될 때 각 파일을 10 개의 스레드로 나눕니다!
답변
작동 할 수있는 몇 가지 도구가 있습니다.
-
LFTP -FTP, HTTP 및 SFTP를 지원합니다. 단일 파일을 다운로드하기 위해 다중 연결 사용을 지원합니다. remoteServer에서 localServer로 파일을 전송하려는 경우 localServer에 LFTP를 설치하고 다음을 실행하십시오.
lftp -e 'pget -n 4 sftp://userName@remoteServer.com/some/dir/file.ext'
‘-n 4’는 병렬로 사용할 연결 수입니다.
-
그런 다음 많은 ‘다운로드 가속기’도구가 있지만 일반적으로 원격 서버에서 설정하지 않아도되는 HTTP 또는 FTP 만 지원합니다. 일부 예는 Axel , aria2 및 ProZilla
답변
파일 용량이 적고 큰 경우 lftp -e 'mirror --parallel=2 --use-pget-n=10 <remote_dir> <local_dir>' <ftp_server>
: 각 파일을 10 개 세그먼트로 분할하여 총 20 개의 ftp 연결로 2 개의 파일을 다운로드합니다 <ftp_server>
.
작은 파일이 많은 경우 다음을 사용하십시오 lftp -e 'mirror --parallel=100 <remote_dir> <local_dir>' <ftp_server>
. 세그먼트 화하지 않고 병렬로 100 개의 파일을 다운로드합니다. 총 100 개의 연결이 열립니다. 이것은 서버에서 사용 가능한 클라이언트를 숨기거나 일부 서버에서 차단 될 수 있습니다.
--continue
작업을 다시 시작하는 데 사용할 수 있습니다 🙂 및 -R
다운로드 대신 업로드 옵션 (인수 순서를로 변경 <local_dir> <remote_dir>
).
답변
연결 당 320KB / s 제한을 일으키는 원인에 따라이 문제를 피하기 위해 TCP 설정을 조정할 수 있습니다. 내 생각 에 ISP가 명시 적으로 연결 당 속도를 제한하는 것은 아닙니다 . 조절에 대한 두 가지 범인이 있습니다.
- 두 시스템 간의 일부 링크가 포화되어 패킷을 삭제합니다.
- 대역폭 지연 제품 이 너무 커서 TCP 창이 포화 상태 입니다.
첫 번째 경우 각 TCP 연결은 표준 TCP 혼잡 제어에서 효과적으로 동일하게 경쟁합니다. 혼잡 제어 알고리즘을 변경하거나 백 오프 양을 줄임으로써이를 개선 할 수도 있습니다.
두 번째 경우에는 패킷 손실에 의해 제한되지 않습니다. 연결을 추가하면 전체 창 크기를 확장 할 수 있습니다. 창 크기를 수동으로 늘릴 수 있으면 문제가 해결됩니다. 연결 대기 시간이 충분히 높은 경우 TCP 창 크기 조정 이 필요할 수 있습니다 .
왕복 “핑”시간에 총 연결 속도를 곱하여 대략적으로 필요한 창의 크기를 알 수 있습니다. 1280KB / s는 왕복 밀리 초당 1280 (1024는 11024 = 1K의 경우 1311) 바이트가 필요합니다. 64K 버퍼는 약 50ms의 대기 시간으로 최대치가 될 것입니다. 이는 상당히 일반적인 현상입니다. 그런 다음 16K 버퍼는 약 320KB / s로 포화됩니다.
답변
데이터는 어떻게 구성되어 있습니까? 큰 파일 몇 개? 몇 개의 큰 디렉토리? 디렉토리 트리의 특정 브랜치에서 여러 rsync 인스턴스를 생성 할 수 있습니다.
그것은 모두 소스 데이터의 구조에 달려 있습니다. 파일을 슬라이스, 다이 싱 및 재 조립할 수있는 수많은 유닉스 도구가 있습니다.
답변
암호가없는 ssh 로그인을 설정할 수 있으면 4 개의 파일 (-L)을 처리 할 때마다 4 개의 동시 scp 연결 (-n)이 열립니다.
찾기 . 타입 f | xargs -L 4 -n 4 /tmp/scp.sh user @ host : path
파일 /tmp/scp.sh :
#!/bin/bash
#Display the help page
function showHelp()
{
echo "Usage: $0 <destination> <file1 [file2 ... ]>"
}
#No arguments?
if [ -z "$1" ] || [ -z "$2" ]; then
showHelp
exit 1
fi
#Display help?
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
showHelp
exit 0
fi
#Programs and options
SCP='scp'
SCP_OPTS='-B'
DESTINATION="$1";shift;
#Check other parameters
if [ -z "$DESTINATION" ]; then
showHelp
exit 1
fi
echo "$@"
#Run scp in the background with the remaining parameters.
$SCP $SCP_OPTS $@ $DESTINATION &
답변
inode의 모든 파일을 정렬하고 (find / mydir -type f -print | xargs ls -i | sort -n) ssh를 통해 cpio와 같이 전송하십시오. 이렇게하면 디스크가 최대가되고 병목 현상이 발생하는 네트워크가 만들어집니다. 그보다 빠르면 네트워크를 통과 할 때 가기가 어렵습니다.