sshfs를 통해 마운트된 원격 서버에 디렉토리가 있습니다 remote1
. 꽤 큰(~50M) 원격 디렉터리에 일부 파일의 새 버전을 설치하고 있습니다.
나는 현재 사용하고 있습니다
rsync -a --in-place local/file.so remote1/file.so~new
파일을 원격 디렉터리에 복사한 다음
rsync -a --in-place remote1/file.so~new remote1/file.so
.
두 번째 rsync가 내가 원하는 것보다 느립니다.원격 시스템에 파일 데이터를 복사하는 대신 ssh를 통해 파일 데이터를 다운로드한 다음 다시 업로드하는 것 같습니다.
나는 이 file.so~new
파일을 백업으로 유지하는 것을 선호하므로(새 파일과 원본 파일 사이를 전환함) mv
.
원격 호스트에 rsync 프로그램이 없기 때문에 표준 rsync 명령을 사용하지 않지만 파일이 이미 있는 경우 파일을 다시 복사하는 것을 피하기 위해 rsync를 사용하고 있습니다.
복사 속도를 높이는 명령줄 옵션이 있습니까? scp나 sftp를 사용하는 것이 더 나을까요? 그렇다면 파일이 이미 위치에 있을 때 불필요한 복사본을 만들지 않도록 파일이 변경되지 않았는지(시간 및 크기) 어떻게 확인할 수 있습니까?
최근 개선 사항은 두 개의 새 복사본을 업로드한 다음 mv
그 중 하나의 이름을 바꾸는 것입니다. 더 좋은 방법은 없을까요?
답변1
rsync
동일한 호스트의 소스와 대상에 액세스하고 있다고 생각할 때는 델타 전송을 사용하지 않습니다. 대신 전체 파일을 복사합니다.
이것이 당신의 상황입니다. 따라서 두 번째 명령은 file.so~new
SSH 퓨즈 링크를 localhost에 복사한 다음 즉시 다시 복사하는 것입니다.
대신 사용해도 문제 없을까요?
mv remote1/file.so~new remote1/file.so
최대 속도를 얻으려면 실행을 시도하지 말고 rsync
원격 sshfs
서버와 직접 통신하도록 허용해야 합니다( 를 통해 ssh
). 그런 다음 간단한 변형을 사용할 수 있습니다.
rsync -av local/file.so remote:path/to/file.so
새 파일은 완전히 복사될 때까지 설치되지 않으며, 이전 라이브러리를 새 라이브러리의 기초로 사용할 수 있다는 장점이 있습니다.