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


15

두 대의 서버가 있습니다. 그중 하나에는 1,500 만 개의 텍스트 파일 (약 40GB)이 있습니다. 다른 서버로 전송하려고합니다. 압축을 풀고 아카이브를 전송하는 것을 고려했지만 이것이 좋은 생각이 아님을 깨달았습니다.

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

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

그러나이 명령은 약 50,000 개의 파일을 전송 한 다음 연결이 끊어졌습니다.

전체 파일 모음을 전송할 수있는 더 나은 솔루션이 있습니까? rsync연결이 끊어졌을 때 전송되지 않은 파일을 전송하는 것과 같은 것을 사용하는 것을 의미합니다 . 다른 연결 중단이 발생하면 파일을 전송하기 위해 명령을 다시 입력하여 이미 성공적으로 전송 된 파일을 무시합니다.

scp파일은 항상 첫 번째 파일에서 시작하기 때문에 사용할 수 없습니다 .

답변:


33

당신이 말한대로 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이 그의 대답에서 말했듯 /이 소스 디렉토리에 흔적이 있는지 확인하십시오 (둘 다 괜찮습니다).

매뉴얼 페이지 에서 추가 정보


1
-h사람이 읽을 수있는 단위를 사용 하도록 플래그를 추가하는 것이 좋습니다 . 더 자세한 정보를 원하면 몇 가지 옵션이 있습니다 : -i및 / 또는 -v/ -vv.
nyuszika7h

2
일반적으로 scp 대신 rsync를 사용하지 않는 이유는 거의 없습니다. 기본 사용법은 동일하며 많은 추가 편리한 기능을 제공합니다.
pimlottc

경우에 ssh당신을위한 옵션을 선택하지 않습니다 그리고 당신은 당신이 내 스크립트 시도 할 필요하거나 암호화를하지 않을 s3.amazonaws.com/skaperen/rsend을
Skaperen

7

ssh를 통해 rsync를 사용하십시오!

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

매뉴얼 페이지에서 :

-a , - 아카이브 : 이것은 -rlptgoD에 해당합니다. 재귀를 원하고 거의 모든 것을 보존하고 싶다고 말하는 빠른 방법입니다 (-H는 주목할만한 생략입니다). 위의 동등성에 대한 유일한 예외는 --files-from이 지정된 경우이며,이 경우 -r은 내포되지 않습니다.

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

폴더 끝에 슬래시를 어떻게 사용했는지 참고하십시오 . 중요 합니다.


후행 슬래시의 중요성에 대한 자세한 정보를 추가해야합니다. 로부터 rsync매뉴얼 페이지 : "소스에 후행 슬래시는 대상에서 추가 디렉토리 레벨을 만들지 않도록하기 위해이 동작을 변경 당신은 의미하는 것으로 소스에 / 뒤에 생각할 수 있습니다." "반대"이 디렉토리의 내용을 복사 "이름으로 디렉토리를 복사하십시오."그러나 두 경우 모두 포함 디렉토리의 속성이 대상의 포함 디렉토리로 전송됩니다. "
nyuszika7h

... 그리고 깃발의 의미는 -av?
MrWhite

0

lsync는 rsync보다 훨씬 빠르며 웹 사이트 (많은 작은 파일)를 미러링하는 데 가장 좋습니다. 여러 연결을 사용하여 병렬로 전송할 수도 있습니다.

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

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

http://lftp.yar.ru/


0

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

tar -czf - ./* | ssh other.host.foo "cd /tmp; tar -xzf-"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.