由于以下原因,我在不使用文件系统的情况下成功获取了存档中文件的 md5sum:
tar tjf '/home/adup/mybackup.tar.bz2' | sort | grep -v '/$' |
( while read filename;
do md5=$(tar xjOf '/home/adup/mybackup.tar.bz2' $filename | md5sum | awk '{print $1}');
echo "$md5 $filename";
done)
不幸的是,我需要通过 ssh 在远程主机上执行以下操作:
ssh 192.9.202.44 tar tjf '/home/adup/mybackup.tar.bz2' | sort | grep -v '/$' |( while read filename; do md5=$(tar xjOf '/home/adup/mybackup.tar.bz2' $filename | md5sum | awk '{print $1}'); echo "$md5 $filename"; done)
但就像这样它不起作用,tar 命令之一在本地解释并给我这样的错误:
tar (child): /home/adup/mybackup.tar.bz2 : no such file
请问,有人可以告诉我如何进行吗?
提前致谢,
最佳答案
您需要将要远程执行的命令作为一个字符串传递给 ssh:
ssh 192.9.202.44 "tar tjf '/home/adup/mybackup.tar.bz2' | sort | grep -v '/\$' |( while read filename; do md5=\$(tar xjOf '/home/adup/mybackup.tar.bz2' \$filename | md5sum | awk '{print $1}'); echo "\$md5 \$filename"; done)"
另外,请确保像
$
这样的字符由本地 shell 解释,被引用。脚本越长,在执行所有这些引用时越容易出错。编写“普通”shell 脚本会更容易,使用
scp
将其复制到远程主机,然后用 ssh
执行.
关于shell - 获取远程主机上 tar 存档中文件的校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16423484/