1
#Bypassing the ssh
spawn -noecho /usr/bin/ssh -o 'StrictHostKeyChecking=no' "$user\@$ip"; 

if { $argc == $total_arguments} {
set REMOTEDIR "$remote_dir";

spawn -noecho rsync -r $user\@$ip:$destination/* $remote_dir
expect "Password:"
} 

以上是我将文件从远程机器复制到我的主目录的代码的一部分。但是在执行脚本时,它有时无法复制所有文件。失败的原因是什么以及如何验证它是否复制了所有文件?

4

1 回答 1

1

对于验证:

如果要检查是否所有文件都已复制,可以为远程目录中的文件列表执行简单的 glob 或列表。然后与目标目录中的文件的 glob 列表进行比较。

set globResult [ exec rsh -l $user $host "cd $dir; ls -l | wc -l" ]

或者,如果您走得更远,您始终可以在远程目录和目标目录上进行校验和。

至于失败的原因,可能是网络或服务器问题。在进行 rsync 时,是否检查了返回退出状态以确保 rsync 已成功完成?

于 2014-05-18T07:42:40.630 回答