如何检查远程主机上是否存在来自STDOUT的所有文件? (通过SSH)

时间:2010-04-12 11:11:42

标签: shell

让我们假设我在host1

中有文件列表
find /path/to -name "*.jpg" -print

我想通过SSH连接到host2,并检查此列表中的所有文件是否都存在于远程主机上。

请帮忙,我该怎么做?

谢谢

4 个答案:

答案 0 :(得分:0)

打印host2上不存在的文件:

$ find /path/to -name "*.jpg" -print | ssh host2 "perl -lne'print unless -e'"

答案 1 :(得分:0)

未经测试。

find /path/to -name "*.jpg" -print >base.txt
ssh user@host2 "find /path/to -name '*.jpg'" > check.txt
diff <(sort base.txt) <(sort check.txt)

答案 2 :(得分:0)

我会将rsync与ssh结合使用。

rsync -avn -e ssh ./ username@remoteHost.net:~/files/

这将执行干运行并列出本地计算机上的所有文件,但不列出远程计算机上的文件。它还会列出远程计算机上可能已更改的文件。

答案 3 :(得分:0)

请先测试

file_list=`find /path/to -name "*.jpg" -print`
for local_file in `echo $file_list`; do
    ssh host2 "[ ! -f $local_file ] && echo \"file \$local_file not exist...\""
done