나는 rsync
과거에도 이것을 만났다 . 나를 위해 해결 한 솔루션은 screen
세션 내에서 실행했기 때문에 원격 서버에 대한 연결을 유지하는 데 도움이되었습니다.
screen -LS rsync
[execute your rsync command]
Ctrl-A+D to detach from the session
실행을 통해 상태를 확인할 수 있습니다 screen -x rsync
(또는 세션에 이름을 지정하면 세션 이름을 지정하기로 결정한 것은 필요하지 않음). 현재 셸을 해당 세션에 다시 연결합니다. 백그라운드에서 계속 실행되도록 상태를 확인한 후 다시 분리하십시오.
또한 screen
[누군가가 틀렸다면 수정 해주세요]를 수행하여 한 번의 실패로 백그라운드에서 실행되도록 명령을 실행할 수도 있습니다 screen -dm 'command'
. man screen
마지막 것을 시도 하기 전에 할 수도 있습니다 .
편집하다:
나는 screen
이 시나리오에서 도움이되지 않는다는 것을 확인했기 때문에 내 대답을 편집하고 있지만, scp
어떤 종류의 결과를 얻었는지, 그 이상하게 대답 한 결과 를 보라고 제안하는 내 의견에 대답했지만 제대로 작동했습니다.
: 그래서 내 새로운 대답은 이것이다 사용 scp
- 나 ssh
(와 함께 tar
) - 대신rsync
부여, scp
같은 기능의 광대 한 수를 지원하지 않습니다 rsync
,하지만 당신은 실제로는 것을 얼마나 많은 기능을 발견하고 놀라게 될 것 않습니다 거의있다 지원 동일한 의 그것을 rsync
.
다음에 대한 실제 시나리오 scp
및 다른 대안 rsync
:
얼마 전 저는 프로덕션 서버에서 로그를 가져와 웹 서버에 로컬로 저장하여 개발자가 문제 해결 목적으로 액세스 할 수있는 셸 스크립트를 작성해야했습니다. 유닉스 팀이 rsync
서버 에 설치하는 데 실패한 후 , 나는 그것을 사용하여 해결 방법을 생각해 냈습니다 scp
.
그 존재는 사용하는 모든이되도록 나는 최근 스크립트를 수정했다 ssh
및 tar
- GNU tar
/ gtar
, 정확하게 할 수 있습니다. GNU는 tar
당신이 실제로에서 찾을 수있는 옵션의 많은 지원 rsync
과 같은 --include
, --exclude
등의 허가 / 속성 보존, 압축,
내가 이것을 달성하는 방법은 ssh
(pubkey auth를 통해) 원격 서버 에 -ing하여 사용하는 것입니다 gtar -czf - [other options such as --include='*.log' and --exclude='*core*', etc.]
-이것은 모든 정보를에 쓴 stdout
다음 tar -xzf
원격 프로덕션 서버에서 변경 사항이 없도록 [locally]로 파이프됩니다. , 모든 파일을 로컬 서버로 그대로 가져옵니다. rsync
이 경우에 대한 훌륭한 대안 입니다. 증분 백업과 해당 기능을 검사하는 블록 수준 오류 수준 만 중요하지 않은 tar
것도 중요 합니다.scp
rsync
사용할 때 내가 말하는거다 전체 명령 ssh
과 tar
이 같은 것 (원격 솔라리스 10은, 현지는 무엇의 가치를 위해, 데비안입니다) :
cd /var/www/remotelogs
ssh -C user@remotehost "cd /path/to/remote/app.directories; gtar -czf - --include='*.log' --exclude='*.pid' --exlude='*core*' *" | tar -xz
귀하의 시나리오에서는 반대의 경우- tar -cf -
로컬 및 원격 서버로의 파이프 연결 ssh user@remotehost "tar -xf -"
-이 유형의 동작을 참조하지만 자세한 내용은 다루지 않는 또 다른 대답이 있습니다.
속도를 높이기 위해 포함시킨 몇 가지 다른 옵션이 있습니다. 나는 실행 시간을 가능한 한 짧게하기 위해 모든 것을 끊임없이 시간을 정했다. 압축을 사용하는 것은 의미가 없다고 생각 tar
하지만 압축 을 활성화하기 위해 -C
with 플래그를 사용하는 것처럼 실제로 속도가 약간 빨라집니다 . 내가 사용하는 정확한 명령 (내가 게시 한 것과 매우 유사 함)을 포함하도록 나중에이 게시물을 업데이트 할 수 있지만 이번 주 휴가를 마치고 나서 현재 VPN을 사용하고 싶지는 않습니다.ssh
ssh
Solaris 10에서도 -c blowfish
인증하는 것이 가장 빠르며 속도를 높이는 데 도움이되기 때문에을 사용하지만 Solaris 11에서는이를 지원하지 않거나이 암호 제품군을 비활성화합니다.
또한 ssh
/ tar
옵션 을 사용하기로 선택한 screen
경우 시간이 오래 걸리는 백업을 수행하는 경우 원래 사용 하는 솔루션을 실제로 구현하는 것이 좋습니다 . 그렇지 않은 경우 keepalive / timeout 설정 ssh_config
이 올바르게 조정 되었는지 확인하십시오. 그렇지 않으면 이 방법으로 파이프가 파손될 가능성이 높습니다.
당신이 이동하더라도 scp
, 나는 항상 사용하는 것이 좋습니다로 발견 screen
또는 tmux
이런 종류의 작업을 수행 할 때, 단지의 경우 . 여러 번 필자의 조언을 따르지 않고이를 수행하지 못하는 경우가 있지만 실제로는 이러한 도구 중 하나를 사용하여 활성 셸 세션의 연결이 끊어져 원격 작업이 망가지지 않도록하는 것이 좋습니다.
rsync
문제 의 근본 원인을 파악하고 싶다는 것을 알고 있습니다 . 그러나 이것이 정말로 중요한 경우, 그 동안 실험 해 볼 수있는 두 가지 훌륭한 대안입니다.
kerberos
원격 서버에서 인증 하는 데 추가해야 할 수도 있습니다 .