한 서버에서 다른 서버로 수백만 개의 파일 전송

한 서버에서 다른 서버로 수백만 개의 파일 전송

두 대의 서버가 있습니다. 그 중 하나에는 1,500만 개의 텍스트 파일(약 40GB)이 있습니다. 다른 서버로 옮기려고 합니다. 압축해서 아카이브를 옮겨볼까도 생각했는데 그게 좋은 생각이 아니라는 걸 깨달았습니다.

그래서 다음 명령을 사용했습니다.

scp -r usrname@ip-address:/var/www/html/txt /var/www/html/txt

하지만 이 명령으로 약 50,000개의 파일만 전송되고 연결이 끊어진 것을 확인했습니다.

전체 파일 모음을 전송할 수 있는 더 나은 솔루션이 있습니까? rsync연결이 끊어졌을 때 전송되지 않은 파일을 전송하는 데 비슷한 방법을 사용한다는 의미입니다 . 또 다른 연결 중단이 발생하면 이미 성공적으로 전송된 파일은 무시하고 파일을 전송하라는 명령을 다시 입력합니다.

scp에서는 항상 첫 번째 파일부터 시작하기 때문에 불가능합니다 .

답변1

당신이 말했듯이 다음을 사용하십시오 rsync:

rsync -azP /var/www/html/txt/ username@ip-address:/var/www/html/txt

옵션은 다음과 같습니다:

-a : enables archive mode, which preserves symbolic links and works recursively
-z : compress the data transfer to minimise network usage
-P : to display a progress bar and enables you to resume partial transfers

/@aim이 그의 답변에서 말했듯 이 소스 디렉토리에 후행이 있는지 확인하십시오 .

자세한 내용은매뉴얼 페이지

답변2

SSH를 통해 rsync를 사용하세요!

rsync -av username@ip:/var/www/html/txt /var/www/html/

매뉴얼 페이지에서:

-ㅏ,--파일: 이는 -rlptgoD와 동일합니다. 이는 재귀적이고 거의 모든 것을 유지하고 싶다는 것을 표현하는 빠른 방법입니다(-H는 눈에 띄게 생략되었습니다). 위 동등성에 대한 유일한 예외는 --files-from이 지정된 경우입니다. 이 경우 -r은 암시되지 않습니다.

-V,--말 수가 많은: 이 옵션을 사용하면 전송 중에 제공되는 정보의 양이 늘어납니다. 기본적으로 rsync는 자동으로 작동합니다. 단일 -v는 전송되는 파일에 대한 정보와 마지막에 간단한 요약을 제공합니다. 두 개의 -v 옵션은 건너뛴 파일에 대한 정보와 마지막에 추가 정보를 제공합니다. rsync를 디버깅하는 경우에만 두 개 이상의 -v 옵션을 사용해야 합니다.

폴더 끝에 슬래시를 어떻게 사용하는지 참고하세요.중요한.

답변3

rsync보다 훨씬 빠르고 미러링 사이트(많은 작은 파일)에 가장 적합한 lftp를 사용하십시오. 또한 여러 연결을 사용하여 병렬로 전송할 수도 있습니다.

lftp -u username,password sftp://ip-address -e 'mirror --only-newer --no-dereference --parallel=5 /remote/path/ /destination/;quit'

연결이 중단되면 다시 연결되어 계속됩니다. 전송을 중단하면 기존 파일을 건너뛰고 계속 진행됩니다.

http://lftp.yar.ru/

답변4

또 다른 방법은 SSH를 통해 (선택적으로 압축된) tar 파일을 전송하는 것입니다.

tar -czf - ./* | ssh other.host.foo "cd /tmp; tar -xzf-"

관련 정보