총 90GB에 달하는 약 100,000개의 파일을 전송하려고 합니다. 지금은 rsync 데몬을 사용하고 있지만 속도가 3.4mb/s로 느려서 이 작업을 여러 번 수행해야 합니다. 인터넷을 통해 100mbit 연결을 최대화하고 매우 안정적으로 사용할 수 있는 옵션이 무엇인지 궁금합니다.
답변1
고려해 보셨나요?스니커넷? 대용량 데이터 세트의 경우 익일 배송이 인터넷을 통해 전송하는 것보다 더 빠르고 저렴할 수 있습니다.
답변2
어떻게? 아니면 TL;DR
tar
내가 찾은 가장 빠른 방법은 , mbuffer
및 의 조합입니다 ssh
.
예:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
이를 사용하여 1Gb 링크에서 950Mb/s 이상의 지속적인 로컬 네트워크 전송을 달성했습니다. 전송하려는 항목에 맞게 각 tar 명령의 경로를 바꾸십시오.
왜? 버퍼!
네트워크를 통해 대용량 파일을 전송할 때 가장 큰 병목 현상은 단연 디스크 I/O입니다. 이에 대한 대답은 mbuffer
또는 입니다 buffer
. 그것들은 대체로 유사하지만 mbuffer
몇 가지 장점이 있습니다. 기본 버퍼 크기는 2MB mbuffer
, 1MB 입니다 buffer
. 버퍼가 클수록 비어 있을 가능성이 더 높습니다. 대상 파일 시스템과 대상 파일 시스템 모두에서 기본 블록 크기의 가장 낮은 공배수인 블록 크기를 선택하면 최상의 성능을 얻을 수 있습니다.
버퍼링은모두차이점!있으면 활용해보세요! 없으시면 받으세요! 플러스를 사용하는 (m}?buffer
것은 그 자체보다 낫습니다. 이것은 말 그대로 느린 네트워크 파일 전송에 대한 만병통치약입니다.
여러 파일을 전송하는 경우 tar
해당 파일을 단일 데이터 스트림으로 "덩어리"로 묶는 데 사용하세요. 단일 파일인 경우 cat
I/O 리디렉션을 사용할 수 있습니다. tar
vs. 의 오버헤드 cat
는 통계적으로 중요하지 않으므로 이미 사용하지 않는 한 항상 사용합니다 tar
(또는 zfs -send
가능한 경우).타르볼. 이들 중 어느 것도 메타데이터 제공을 보장하지 않습니다(특히 cat
제공하지 않을 것입니다). 메타데이터를 원하시면 연습용으로 남겨두겠습니다.
마지막으로 ssh
전송 메커니즘에 사용하는 것은 안전하고 오버헤드가 거의 없습니다. 다시 말하지만 ssh
vs. 의 오버헤드 nc
는 통계적으로 중요하지 않습니다.
답변3
"rsync"를 언급했으므로 Linux를 사용하고 있다고 가정합니다.
tar 또는 tar.gz 파일을 생성해 보는 것은 어떨까요? 하나의 큰 파일의 네트워크 전송 시간은 여러 개의 작은 파일보다 빠릅니다. 원한다면 압축할 수도 있습니다...
압축되지 않은 Tar:
원본 서버에서:
tar -cf file.tar /path/to/files/
그런 다음 수신 측에서 다음을 수행하십시오.
cd /path/to/files/
tar -xf /path/to/file.tar
압축된 타르:
원본 서버에서:
tar -czf file.tar.gz /path/to/files/
그런 다음 수신 측에서 다음을 수행하십시오.
cd /path/to/files/
tar -xzf /path/to/file.tar.gz
(tar|tar.gz) 파일의 실제 전송을 수행하려면 rsync를 사용하기만 하면 됩니다.
답변4
rsync의 다양한 압축 옵션을 사용할 수 있습니다.
-z, --compress compress file data during the transfer
--compress-level=NUM explicitly set compression level
--skip-compress=LIST skip compressing files with suffix in LIST
바이너리 파일의 압축 비율은 매우 낮으므로 --skip-compress를 사용하여 해당 파일을 건너뛸 수 있습니다(예: iso, 이미 보관되고 압축된 tarball 등).