是否有可能使SCP在复制期间忽略符号链接?

Kri*_*s_R 72 scp

我需要重新安装服务器我们之一,作为预防措施,我想移动/home,/etc,/opt,和/Services备份服务器.

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

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

Kri*_*s_R 74

我知道这是可能的,我只是采取了错误的工具.我用rsync做到了

rsync --progress -avhe ssh /usr/local/  XXX.XXX.XXX.XXX:/BackUp/usr/local/
Run Code Online (Sandbox Code Playgroud)

  • 那么这个命令是什么?它会忽略符号链接还是创建新的符号链接?-啊? (2认同)
  • a是归档文件(保留内容),v冗长,h是人类可读的输出,e指定要使用的服务(在本例中为ssh)。在此处阅读更多内容(https://linux.die.net/man/1/rsync) (2认同)
  • --safe-links 允许保留目录内部的链接,并且不复制指向目录外部的链接。 (2认同)

Luk*_*uke 27

我发现,rsync并没有为我工作,但是我发现这个网站(在没有工作的替代www.docstore.mik.ua/orelly).

特别是"O'Reilly:SSH:The Secure Shell.The Definitive Guide"的7.5.3节.

7.5.3.目录的递归副本

...

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

$ tar cf - /usr/local/bin | ssh server.example.com tar xf -
Run Code Online (Sandbox Code Playgroud)

  • 如果远程端没有安装 rsync,或者(稍作修改)如果您碰巧已经有源目录的 tarball,这是一个很好的建议。 (2认同)
  • 它需要一个“p”(tar xpf)来保留目的地的权限。 (2认同)

Voj*_*tek 17

使用tarover ssh作为发送者和接收者也可以做到这一点:

cd $DEST_DIR
ssh user@remote-host 'cd $REMOTE_SRC_DIR; tar cf - ./' | tar xvf -
Run Code Online (Sandbox Code Playgroud)