我通过scp每晚自动备份和传输文件。
我意识到我通过协议本身获得了数据包级校验和,但是我想知道确保传输没有失败或部分完成的最佳做法。
我可以使用rsync,但我的需求很简单,我只想确保:
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。