scp로 파일을 전송했을 때 도중에 연결이 끊기면 해당 파일은 어떻게 저장이 되나요?

co pi@Google의 이미지

안녕하세요. 제가 올리는 질문이 프로그래밍 관련은 아닌 것 같지만 다른 게시판보다는 그나마 관련이 있다고 생각하여 여기에 올립니다.

파이썬으로 scp를 이용한 파일 전송 코드를 구현하려고 합니다.
어떤 파일을 전송 하다가 연결이 끊기면 해당 파일을 재전송하게끔 처리를 하려고 합니다.

파일을 보내는 와중에 만약 연결이 끊기면 해당 파일의 일부분만 저장이 되는 것으로 알고 있습니다.
이렇게 비정상적으로 저장이 된 파일을 어떻게 알아볼 수 있을까요?

관련 내용을 한 2주째 찾아보고 있지만 원하는 내용은 찾아볼 수 없었습니다..
일단은 scp.put() 으로 파일을 전송하고 있기에, scp, ssh, file transfer fail, ssh connection lost와 관련된 내용은 거의 다 찾아본 것 같습니다.

제가 생각한 것은 비정상적인 파일이 저장된 디렉토리의 파일 목록을 불러와서 해당 파일을 우선 찾습니다. 그 다음 비정상적으로 저장된 파일의 사이즈를 원래 사이즈와 비교해서 다르면 재전송 하려고 하는데, 그 파일을 찾는 것 부터 막혀버렸습니다..

읽어주셔서 감사합니다.

ymir의 이미지

scp 로 파일을 전송한다고 치면, ssh 명령도 실행할 수 있을 것 같은데요.
그렇다면 복사된 파일의 체크섬만 비교해도 될 것 같습니다.
쉘로 적긴 했지만, 아이디어만 참고해 보세요.

$ HASH_ORG=$(sha256sum file.org | cut -d' '  -f1)
$ sshpass -p XXX scp -o StrictHostKeyChecking=no file.org ymir@localhost:file.copied
$ HASH_COPIED=$(sshpass -p XXX ssh -o StrictHostKeyChecking=no ymir@localhost sha256sum file.copied | cut -d' ' -f1)
$ [ "$HASH_ORG" = "$HASH_COPIED" ] && echo OK || echo fail to transfer file ..
OK

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

co pi@Google의 이미지

체크섬은 생각치 못했네요 감사합니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.