SCP-需要校验和吗?

SCP-需要校验和吗?

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

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

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

  1. 传输中没有错误
  2. 如果有则重试(这样当我去恢复时就不会发现我已经过期 4 天了)

答案1

scp 不保证文件的完整性,因此进行源和目标之间的校验和比较是明智的。

您提到您的需求很简单,但 rsync 不一定会增加复杂性,并提供更多功能,让您更放心,您的同步数据是合法的。

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

如果$?(退出状态)不是 0(成功),则重试/警报/等...如果您正在同步整个目录,rsync 也更适合,特别是如果您需要在失败时重试,因为每次连续运行后增量同步的速度都会显著加快。

答案2

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

rsync -avPe ssh 用户@主机:/that/dir /goes/here

但是,如果您确实想使用 scp,只需循环您的 scp 并测试其退出条件..类似于..


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

如果成功则 scp 将返回 0,如果错误则返回 > 0。

相关内容