是否可以让SCP在复制期间忽略符号链接?

我需要重新安装我们的服务器之一,作为一项预防措施,我想将/home/etc/opt/Services到备份服务器。

但是,我有一个问题:由于大量的符号链接,许多文件被复制多次。

是否有可能使scp忽略符号链接(或者实际上是将链接复制为链接而不是目录或文件)? 如果没有,还有另一种方法可以做到吗?

我知道这是可能的,我只是拿错了工具。 我用rsync做了

 rsync --progress -avhe ssh /usr/local/ XXX.XXX.XXX.XXX:/BackUp/usr/local/ 

我发现rsync方法对我不起作用,但是我find了一个可以在这个网站上工作的方法( http://www.docstore.mik.ua/orelly )。

具体请参阅“O'Reilly:SSH:Secure Shell。权威指南”第7.5.3节。

7.5.3。 目录的recursion副本

虽然scp可以复制目录,但不一定是最好的方法。 如果您的目录包含硬链接或软链接,则不会被复制。 链接被复制为纯文件(链接目标),更糟糕的是,循环目录链接导致scp1无限循环。 (scp2会检测符号链接并复制它们的目标。)其他types的特殊文件(如命名pipe道)也不能正确复制。更好的解决scheme是使用tar,它能正确处理特殊文件,并将其发送到远程机器被解开,通过SSH:

 $ tar cf - /usr/local/bin | ssh server.example.com tar xf - 

发送者和接收者都使用tar不是ssh

 cd $DEST_DIR ssh user@remote-host 'cd $REMOTE_SRC_DIR; tar cf - ./' | tar xvf - 

一个解决scheme是使用壳pipe。 我有一个情况,我有一些* .gz文件和一些软件生成的符号链接,链接到相同的* .gz文件,名称稍短。 如果我只是使用scp,那么符号链接将被复制为常规文件并导致重复。 我知道rsync可以忽略符号链接,但我的gz文件不压缩与可syncable选项,同步复制这些gz文件很慢。 所以我只需使用以下脚本来复制文件:

 find . -type f -exec scp {} target_host:/directory/name/data \; 

-f选项只会查找常规文件并忽略符号链接。 您需要在源主机上提供此命令。 希望这可以帮助一些用户在我的情况。 让我知道如果我错过了什么。