首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

文件拷贝门道多:cp对rsync,鸟枪对大炮?这个实例说明了一切

引言

今天我们来看一下文件拷贝相关的两个指令,一个是cp,用于在服务器上,对文件或者目录进行拷贝操作。而 rsync 呢,则是一个文件增量同步的工具,一般用于远程服务器之间镜像服务。

要说两者之间功能是否有重叠呢?当然是有的,但是他们在各自的领域之内,独一无二的特性,也奠定了其坚定的系统服务基础。

cp指令

cp命令可以翻译为copy命令,并且默认情况下集成在Linux中。当你只需要对文件或文件夹执行简单的复制操作时,可以使用此命令。

基本的指令结构像下面这样:

cp source destination

我们接着操作:

cd ~

pwd

命令行输出 /home/username 目录名。那么执行一个 cp 操作

cp ./work ~/Documents

把当前目录下 work 目录所有文件,拷贝到用户家目录下的 Documents路径内。

这样写实际上是错误的,会抛出如下异常:

cp: -r not specified;

这是因为我们拷贝的是目录,而 cp 指令咋仅支持每次复制一个文件。服务信息提示已经很明确了,让我们使用 -r 选项。

-r 选项表明拷贝两个不同目录下的所有文件结构。

cp 指令拷贝有一个问题,如果目标文件存在,怎么会提示是否覆盖或创建新的备份文件.

这一般效率不是很高,且需要用户确认。下面我们说的这个 rsync 指令,则提供了强大的增量同步功能。

rsync 指令

rsync命令是一种非常快速且通用的拷贝程序,它的功能简单说如下:

创建备份

服务器间文件和目录拷贝

多的说不完……

rsync 可以被改造为更为强大的复制命令,可以在很短的时间内复制得更快、更多。

先看一个基本的用法:

rsync -anv ./work ~/bk

输出内容像下面这样:

注意到上面最后的提示信息了吗?dry run!也即是说,不是真正的执行,仅仅是演示。

要实际执行,只需去掉 -n 选项即可:

rsync -av ./work ~/bk

-a 选项表示,存档标志将保留从复制位置到目标位置的所有信息。比如用户权限,属主,属组,还有 metadata 元数据。

改进升级

rsync 这么好用,提供了超级多的可选项,让我们有了组装出来强悍工具的可能。比如说,价格进度条:

rsync -av --progress ./work ~/bk

语义化很容易理解。--progress 展示备份的进度。

别的就不都说了,会 -av 这一个选项,就够你用一阵子的了!

写在最后

通过对比可以发现,rsync 后起之秀,把前浪 cp 远远地甩在了身后。

一般来说,我更倾向于 cp 用于单台电脑内的文件和目录操作,而 rsync 则完全可以加强为系统服务,对外提供支持。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200520A0Q07200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券