scp 用户的 rsync 迁移攻略
对于复制单个文件而言,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" (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |