답변:
ssh를 통한 rsync는 아마도 --remove-source-files
옵션을 사용하는 것이 가장 좋습니다.
rsync -avz --remove-source-files -e ssh /this/dir remoteuser@remotehost:/remote/dir
빠른 테스트는 제공합니다.
[tomh@workstation001 ~]$ mkdir test1
[tomh@workstation001 ~]$ mkdir test2
[tomh@workstation001 ~]$ touch test1/testfile.1
[tomh@workstation001 ~]$ ls test1/
testfile.1
[tomh@workstation001 ~]$ rsync --remove-source-files -av -e ssh test1/testfile.1 tomh@localhost:/home/tomh/test2/
sending incremental file list
sent 58 bytes received 12 bytes 10.77 bytes/sec
total size is 0 speedup is 0.00
[tomh@workstation001 ~]$ ls test1/
[tomh@workstation001 ~]$
[tomh@workstation001 ~]$ ls test2/
testfile.1
@SvenW에서 언급했듯이 -e ssh
기본값은 생략되므로 생략 할 수 있습니다.
smv() { rsync -az --remove-source-files "$@"; }
내 툴박스에 추가되었습니다 . 감사합니다.
이 질문에 대한 답변은 훌륭했지만 대답은 받아 들였지만 첫 페이지 상단에 표시되었으므로 적어도 우아하지 않으면 더 정확하게 대답하려고 노력할 것이라고 생각했습니다. 예,의 반환 코드를 사용할 scp
수 있으며 자주 사용합니다. 에서 bash
:
scp foo user@server:/destination && rm foo
여러 파일에 대해 스택을 올바르게 복사하고 처리하기 위해 여러 파일에 대해 설명합니다. 여러 파일의 경우 :
for file in bar*; do scp "$file" user@server:/destination && rm "$file" ; done
이 마지막은 당신이 사용하는 경우에만 실용적 ssh-agent
이지만, 나는 당신이 있기를 바랍니다.
-l
플래그를 사용하여 대역폭 제한을 처리 할 수 있습니다 . 예 : -l 8192
8192 kb / s로 전송 제한
내 상황에서 ssh 포트는 22가 아니므로
rsync -avz --remove-source-files -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
나를 위해 작동합니다.
-e ssh
현재 몇 년 동안 암시 적 기본값이므로 일반적으로이 매개 변수를 더 이상 사용할 필요가 없습니다.