我需要重新安装我们的服务器之一,并且为了预防,我想将/home
,/etc
,/opt
和/Services
移动到备份服务器。是否可以让SCP在复制过程中忽略符号链接?
但是,我有一个问题:由于大量的符号链接,许多文件被复制多次。
是否有可能使scp
忽略符号链接(或实际上是将链接复制为链接而不是目录或文件)?如果没有,是否有另一种方式来做到这一点?
我需要重新安装我们的服务器之一,并且为了预防,我想将/home
,/etc
,/opt
和/Services
移动到备份服务器。是否可以让SCP在复制过程中忽略符号链接?
但是,我有一个问题:由于大量的符号链接,许多文件被复制多次。
是否有可能使scp
忽略符号链接(或实际上是将链接复制为链接而不是目录或文件)?如果没有,是否有另一种方式来做到这一点?
我知道这是可能的,我只是拿错了工具。我做到了与rsync的
rsync --progress -avhe ssh /usr/local/ XXX.XXX.XXX.XXX:/BackUp/usr/local/
我发现the rsync
method并没有为我工作,但是我发现这个网站(www.docstore.mik.ua/orelly)上所做的工作的选择。
具体部分7.5.3 of "O'Reilly: SSH: The Secure Shell. The Definitive Guide"。
7.5.3。目录的递归复制
...
虽然SCP可以复制的目录,它不一定是最好的方法。如果您的目录包含硬链接或软链接,它们将不会被复制。链接被复制为纯文件(链接目标),更糟糕的是,循环目录链接导致scp1无限循环。 (scp2会检测符号链接并复制它们的目标。)其他类型的特殊文件(如命名管道)也无法正确复制。更好的解决方案是使用tar,它可以正确处理特殊文件,并将其发送到远程机是未解压,经由SSH:
$ tar cf - /usr/local/bin | ssh server.example.com tar xf -
这是一个很好的建议,如果rsync没有安装在远程端,或(稍作修改),如果你碰巧已经有源目录的tarball。 –
它需要一个“p”(tar xpf)来保留目的地的权限。 –
使用tar
超过ssh
为发送者和接收者是卓有成效的,以及:
cd $DEST_DIR
ssh [email protected] 'cd $REMOTE_SRC_DIR; tar cf - ./' | tar xvf -
我在源端添加'--one-file-system'并在目标端'p'添加了权限。 – ceving
焦油说的手册页; --one-file-system =不交叉挂载点 – AnneTheAgile
一种解决方案是使用一个壳管。我遇到了一些情况,我得到了一些* .gz文件和一些软件生成的符号链接,链接到相同的* .gz文件,名称稍短。如果我只是使用scp,那么符号链接将被复制为常规文件并导致重复。我知道rsync可以忽略符号链接,但我的gz文件没有使用可syncable选项进行压缩,并且同步在复制这些gz文件时非常慢。所以我简单地使用下面的脚本在要复制的文件:
find . -type f -exec scp {} target_host:/directory/name/data \;
-f选项只能找到普通文件,而忽略符号链接。您需要在源主机上提供此命令。希望这可以帮助一些用户在我的情况。让我知道我是否错过了任何东西。
那么这个命令是什么?它忽略符号链接还是创建新链接? -avhe? –
'a'归档(保留东西),''v' verbose','h'人类可读输出,'e'指定要使用的服务(在本例中为'ssh')。阅读更多[在这里](https://linux.die.net/man/1/rsync) – tenCupMaximum