SCP – 是否需要校验和?

我通过scp每晚自动备份和传输文件。

我意识到我通过协议本身获得了数据包级校验和,但是我想知道确保传输没有失败或部分完成的最佳做法。

我可以使用rsync,但我的需求很简单,我只想确保:

  1. 传输中没有错误
  2. 如果有的话,重试(所以我不会发现,当我恢复的时候,我已经4天了)

scp不保证文件的完整性,所以源和目的地之间的校验和比较是明智的。

你提到你的需求很简单,但rsync不一定会增加复杂性,并提供更多的function,让你感觉更舒服,你的同步数据是合法的。

rsync -ave ssh /your/source/file remotehost:/your/dest/file

如果$? (退出状态)不是0(成功),然后重试/警报/ etc …如果你正在同步整个目录,rsync也更适合,特别是如果你需要重试失败,因为增量同步将是每次连续运行都要快得多。

我不太清楚rsync如何不符合你的简单需求。

rsync -avPe ssh user @ host:/ that / dir / goes / here

如果你真的想使用SCP,但是,只是循环你的SCP和testing其退出条件..像..

 #!/bin/bash STATUS=1 while [ $STATUS -ne 0 ]; do echo "scp'ing..." scp -r thisstuff/ user@host:/overthere STATUS=$? done 

scp在成功时将返回0,错误时为0。