站长网 Linux scp 用户的 rsync 迁移攻略

scp 用户的 rsync 迁移攻略

对于复制单个文件而言,scp和rsync命令实际上是等价的。比方说,你需要把foo.txt传到你在名为server的服务器上的主目录下: $ scp foo.txt me@server:/home/me/ 相应的rsync命令只需要输入rsync取代scp: $ rsync foo.txt me@server:/home/me/ 复制目录 对

对于复制单个文件而言,scp 和 rsync 命令实际上是等价的。比方说,你需要把 foo.txt 传到你在名为 server 的服务器上的主目录下:

$ scp foo.txt me@server:/home/me/

相应的 rsync 命令只需要输入 rsync 取代 scp:

$ rsync foo.txt me@server:/home/me/

复制目录

对于复制目录,就有了很大的分歧,这也解释了为什么 rsync 会被认为比 scp 更复杂。如果你想把 bar 目录复制到 server 服务器上,除了指定 ssh 信息外,相应的 scp 命令和 cp 命令一模一样。

$ scp-r bar/ me@server:/home/me/

对于 rsync,考虑的因素比较多,因为它是一个比较强大的工具。首先,我们来看一下最简单的形式:

$ rsync -r bar/ me@server:/home/me/

看起来很简单吧?对于只包含目录和普通文件的简单情况,这就可以了。然而,rsync 更在意发送与主机系统中一模一样的文件。让我们来创建一个稍微复杂一些,但并不罕见的例子:

#创建多级目录结构

$ mkdir-p bar/baz

#在其根目录下创建文件

$ touch bar/foo.txt

#现在创建一个符号链接指回到该文件

$ cd bar/baz

$ ln-s ../foo.txt link.txt

#返回原位置

$ cd-

现在我们有了一个如下的目录树:

bar

├── baz

│└──link.txt ->../foo.txt

└── foo.txt

 

1 directory,2 files

如果我们尝试上面的命令来复制 bar,我们会注意到非常不同的(并令人惊讶的)结果。首先,我们来试试 scp:

$ scp-r bar/ me@server:/home/me/

如果你 ssh 进入你的服务器,看看 bar 的目录树,你会发现它和你的主机系统有一个重要而微妙的区别:

bar

├── baz

│└──link.txt

└── foo.txt

 

1 directory,2 files

请注意,link.txt 不再是一个符号链接,它现在是一个 foo.txt 的完整副本。如果你习惯于使用 cp,这可能会是令人惊讶的行为。如果你尝试使用 cp -r 复制 bar 目录,你会得到一个新的目录,里面的符号链接和 bar 的一样。现在如果我们尝试使用之前的 rsync 命令,我们会得到一个警告:

$ rsync -r bar/ me@server:/home/me/

skipping non-regular file"bar/baz/link.txt"

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/server/linux/2021/0526/6717.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部