폴더를 압축하고 네트워크를 통해 한 서버에서 다른 서버로 전송하는 방법

폴더를 압축하고 네트워크를 통해 한 서버에서 다른 서버로 전송하는 방법

더 빠르고, 압축 가능하며, 대역폭 제한이 설정되어 있는 한 서버에서 다른 서버로 폴더를 전송할 수 있는 옵션이 있습니까? 서버는 Linux에서 실행됩니다.

tar + ssh를 시도했지만 다시 대역폭 제한을 3 또는 4MBPS로 설정할 수 없습니다.

다른 서비스가 있나요?

답변1

당신은 그것을 사용할 수 있습니다동기화전송 중에 --bwlimit=대역폭을 제한하고 파일 데이터를 압축하는 옵션이 있습니다 . -z예를 들어 SSH를 전송으로 사용합니다.

답변2

bsdtar cf - . | xz | pv -L 3m | ssh host 'cd /there && xz -d | bsdtar xpSf -'

(다른 파일은 일반적으로 모든 파일 메타데이터를 저장하지 않기 때문에 여기에서는 bsdtar가 사용됩니다.)

xz아마도 속도 제한을 위해 얻을 수 있는 최고의 압축(그러나 매우 CPU 집약적)일 것 pv입니다(3메가비트(2 20 ) 라는 점에 유의하세요)바이트초당).

백업용으로 사용하고 uids/gids를 유지하려면 이 옵션을 --numeric-owner두 번째 옵션에 추가하세요.bsdtar

rsync이는 (압축)을 사용하여 전체 전송을 수행하는 것보다 (두 서버의 대역폭 및 리소스 측면에서) 더 효율적이지만 xz전송을 재개하거나 폴더를 공통 파일과 동기화해야 하는 경우에는rsync편리하게 오세요(그러나 rsync보존하려는 메타데이터를 보존하는 데 필요한 옵션을 선택하려면 매뉴얼 페이지를 주의 깊게 읽으십시오).

답변3

네트워크 처리량을 미세 조정하기 위해 다음과 같은 도구도 있습니다.스트림 미디어또는완충기.

예를 들어, -t num데이터 처리량을 num초당 바이트 로 제한하는 것 외에도 읽기/쓰기를 위한 블록 크기를 설정하는 옵션뿐만 아니라 cstream쓰기 전에 입력 블록을 최대 바이트까지 버퍼링하는 옵션 도 있습니다 .-b num-B numnum

ssh및 대신에 또는 을 rsync시도할 수 있습니다 . 특히 데이터 스트림이 인터넷을 통해 전송되지 않는 경우에는 더욱 그렇습니다. Nmap 프로젝트의 일부이며 SSL을 지원합니다.nc (netcat)ncatncat

# netcat + tar + cstream example to throttle network throughput
# requires netcat on both servers
# cf. http://superuser.com/questions/291803/best-way-to-copy-millions-of-files-between-2-servers/
# cstream -T 10 -t 4m </dev/urandom >/dev/null   # test

nc -l -p 2342 | tar -C /target/dir -xzf -                       # destination box
tar -cz /source/dir | cstream -T 30 -t 4m | nc Target_Box 2342  # source box

관련 정보