저는 .NET을 사용하여 한 컴퓨터에서 다른 컴퓨터로 많은 수의 파일을 전송하고 있습니다 rsync
. SSH를 통해 소스 머신에 연결하고 다음 명령을 실행하여 이 작업을 수행했습니다.
sudo rsync ssh --rsync-path="sudo rsync" source_dir [email protected]:dest_dir
.
이 명령어 앞에 추가 해도 nohup
SSHing 중인 터미널 창을 닫을 때마다 연결이 닫힙니다.
SSH 연결이 종료된 경우 파일 전송을 계속하려면 어떻게 해야 합니까?
답변1
이것이 도움이 되지 않는 이유 nohup
는 프로그램이 표준 IO 파일을 사용하기 때문입니다.
이것은 에서 발췌한 것입니다.위키 페이지nohup의 경우 :
참고 - Nohpping 백그라운드 작업은 일반적으로 원격 SSH 세션에서 로그아웃할 때 작업 종료를 방지하는 데 사용됩니다. 이 상황에서 자주 발생하는 또 다른 문제는 ssh가 백그라운드 작업에서 데이터 손실을 거부하기 때문에 로그아웃("중지")을 거부한다는 것입니다. 이 문제는 세 가지 I/O 스트림을 모두 리디렉션하여 해결할 수도 있습니다.
nohup ./myprogram > foo.out 2> foo.err < /dev/null &
또한 SSH 세션을 닫아도 항상 HUP 신호가 관련 프로세스로 전송되는 것은 아닙니다. 무엇보다도 이는 의사 터미널이 할당되었는지 여부에 따라 달라집니다.
당신은 그것을 사용할 수 있습니다 screen
.
다음을 사용하여 화면 세션을 만듭니다. 그런 다음 +를 사용하여 screen -S rsync
화면을 분리합니다 .CTRLA d
연결을 끊을 수 있습니다.SSH
답변2
이 화면 명령은 훌륭하지만 필요한 작업을 수행하지 않습니다.
이것은 훨씬 더 잘 작동합니다:
nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &