답변:
다음 접근 방식을 시도 할 수 있습니다. scp 대신 dd 를 사용 하여 다운로드 한 부분을 건너 뛰고 나머지를 파일에 추가하십시오.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh rsys "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
가능한 최적화 : 큰 블록으로 작업하십시오. 이것을 숙제로 남겨 두자.
dd
작은 블록 크기의 경우 속도가 느릴 수 있습니다 (여기서는 350kB / s). 다행히도 scp
전송은 1024 바이트 블록으로 제공됩니다. 파일의 경우 (또는 가장 가까운 1024 바이트 블록으로 잘라서) 다음과 같이 속도를 높일 수 있습니다 ssh rsys "dd if=./srcfile bs=1024 skip=$sofar" >> ./destfile
. (그런 $sofar
다음 건너 뛰려면 1024 바이트 블록의 수 여야합니다!)
rsys
두 번째 줄에서에 대한 특별한 주장이 아닌 호스트 이름의 예라는 것을 깨닫는 데 시간이 걸렸습니다 ssh
. user@host
혼동을 피하기 위해 교체하는 것이 좋습니다 .
예, 중단 지점에서 재개 할 수있는 방법이 있지만 scp를 사용하는 것은 불가능합니다. sftp reget filename
필요한 것을 수행합니다. Yarek과 Grawity는 둘 다에 +1의 유효한 솔루션을 제공했지만 중단 지점에서 다시 시작하려면 rsync를 좋아합니다. 제공된 예제 명령은 모두 원격 서버에서 로컬 워크 스테이션으로 파일을 검색한다고 가정합니다 (다운로드). 마지막 두 매개 변수는 그 순서대로 source_file 및 target_file로 간주되어야합니다. 파일 이름의 구문은 소스 또는 대상 파일이 로컬인지 원격인지에 따라 다릅니다. [text] 파일을 전송 (업로드)하는 경우 다음과 같이 제공된 예제를 다시 작성합니다.
# 로컬에서 리모트로 sofar =`ssh remote_system ls -l 인터럽트 _ 파일 | awk '{print $ 5}'`; dd if = source_file bs = 1 skip = $ sofar | ssh remote_system "cat >> ./interrupted_file"
그리고 rsync 솔루션에을 추가 -e ssh
합니다. 자세한 정보, 압축, 소유권 유지, 권한, 타임 스탬프, 재귀 디렉토리 등이 필요한지 여부를 고려해야합니다. -L 매개 변수와 관련하여 매뉴얼 페이지와 Google을 확인하십시오. 심볼릭 링크를 참조하는 대신 링크로 유지하려고 할 수 있습니다.
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
scp -o ConnectTimeout 60
연결 시간 초과를 지정할 수 있습니다. 연결이 끊어지지 않을 수 있습니다.