我正在使用scp将目录从一个远程服务器复制到另一台远程服务器上的新目录(即,IE只是更改名称),例如:
scp -prq server1:dir1 server2:dir2
如果dir2在server2上不存在,则可以正常工作,它将创建一个名为dir2的新目录,其中包含server1上dir1的所有内容。
当dir2已经存在于server2上时,问题就来了(注意:我无法事先知道这一点,也无法事先对server2上的dir2进行删除)-发生的是我在dir2中得到了dir1的副本,称为dir1。
我敢肯定我缺少一些基本的东西,但是我似乎无法解决。
任何帮助,不胜感激!
问候,
吉尔斯
好的,我的代表少于10名,无法等待8个小时,所以这就是我得到的:
这是一个对我有用的脚本:
#!/bin/sh
echo "method 1"
scp -prq server1:dir1/* server2:dir2/ >/dev/null 2>&1
if [ "$?" -ne "0" ]; then
echo "failed ... trying method 2"
scp -prq server1:dir1 server2:dir2
fi
exit
仍然不确定如何在单个命令中执行此操作,即使可能也无法确定。
欢呼@mindthemonkey,有时只是获得新鲜的观点可以帮助指明方向。
您具有scp访问权限,但没有ssh吗?
—
马特
没错
—
Giles 2013年
唯一的问题是,您将在任何失败时尝试第二个副本,这不一定是不存在的dir2。也许您可以提出一个实际上不执行任何操作的测试(例如,复制空白目录)。然后根据输出结果运行scp1或scp2
—
Matt
好点,如果有什么想法,我会牢记这一点,然后重新发布。
—
吉尔斯