대용량 데이터(30GB)를 서버로 옮기고 있는데, 이 서버는 여러 개의 200MB tar.gz 파일로 분할되어 있습니다. 이 작업에는 시간이 걸리며 프로세스 중에 컴퓨터를 중지했다가 다시 시작해야 하므로 전송이 중단됩니다.
내가하고 싶은 일은 다음과 같습니다.
find . -maxdepth 1 -type f -iname "*.tar.gz.*" | while read file ; do
scp "$file" username@host:/backup/
mv "$file" "already-done/"
done
불행히도 SSH 키는 내가 제어할 수 없는 비표준 설정이기 때문에 이 상자에 복사할 수 없습니다. 따라서 연결을 만들 때마다 수동으로 암호를 입력해야 하므로 위의 while 루프가 비생산적입니다. rsync를 사용하여 단일 영구 SSH 연결을 통해 이 서버에 파일을 복사하는 동시에 완료된 백업을 다른 디렉터리로 이동하여 새로 부팅할 때 다시 복사하지 않도록 할 수 있는 방법이 있습니까?
답변1
두 가지 제안이 있습니다.
- scp에 대한 호출을 이러한 상황을 처리하도록 설계된 rsync에 대한 호출로 바꾸십시오.
- while 루프를 사용할 필요가 없습니다. glob을 사용하여 파일을 직접 호출하면 됩니다. find 명령은 최대 깊이 1을 사용하므로
rsync -t *.tar.gz.* username@host:/backup/
Rsync는 복사된 파일, 복사되지 않은 파일 및 해당 파일의 정확성을 확인합니다. 연결을 통해 변경 사항을 전송합니다.