专栏首页CU技术社区如何使用CP / SCP / RSYNC在Linux中排除特定目录?

如何使用CP / SCP / RSYNC在Linux中排除特定目录?

介绍

对于任何系统管理员或一般Linux操作系统用户而言,在服务器之间执行文件复制操作都是一项常见任务。在将文件从一个系统复制到另一个系统时,由于某些特定原因,我们可能需要排除某些文件和目录被复制。即使在同一系统上将数据从一个位置传输到另一位置时,这也可能适用。

在本文中,我们将演示如何排除特定的文件或目录,或者使用用于此目的的三种最常用和广泛使用的实用程序(即rsync,cp和scp)进行复制。使用cp命令排除特定文件/目录的复制:

考虑以下情形,其中我的当前工作目录中有五个目录。

[root@linuxnix tmp]# ls -ld dir*drwxr-xr-x 2 root root 6 Aug 29 22:47 dir1drwxr-xr-x 2 root root 71 Aug 29 22:47 dir2drwxr-xr-x 2 root root 6 Aug 29 22:47 dir3drwxr-xr-x 2 root root 6 Aug 29 22:47 dir4drwxr-xr-x 2 root root 6 Aug 29 22:47 dir5

我想复制以名称dir开头的所有目录的内容,除了dir2目录,然后可以执行以下操作:

[root@linuxnix tmp]# cp -r `ls -A | grep dir| grep -v "dir2"` /tmp/sahil/

这将复制除dir2以外的所有dir目录。如果我们需要复制所有目录并跳过单个目录,则可以运行以下命令。

[root@linuxnix tmp]# cp -r !(dir2) /sahil

除目录dir2之外,当前工作目录中的所有目录和子目录都将复制到/ sahil中。同样,如果我们要从当前工作目录中复制除一个文件以外的所有文件,请键入以下内容

[root@linuxnix dir2]# cp -r !(file3) /sahil

在上面的示例中,当前工作目录中的所有文件都被复制到/ sahil,除了名为file3的文件。

使用scp命令排除特定文件/目录被复制:

scp中的数据排除机制与先前使用cp命令演示的类似。以下是一个示例。上面的命令从当前工作目录中复制了所有文件,除了名为file4的文件。

[root@linuxnix dir2]# scp -rp !(file4) 192.168.19.142:/sahilfile1 100% 0 0.0KB/s 00:00file2 100% 0 0.0KB/s 00:00file3 100% 0 0.0KB/s 00:00file5 100% 0 0.0KB/s 00:00[root@linuxnix dir2]#

使用rsync命令排除特定文件/目录的复制:

在用于复制文件的命令集中,最灵活的是rsync命令。在本文中,我们将讨论范围限于排除某些文件/目录被复制的功能。要使用rysnc命令复制文件或文件夹,请使用–exclude标志,如以下示例所示。

[root@linuxnix tmp]# rsync -av --progress --exclude="dir2" dir* /sahilsending incremental file listdir1/dir3/dir4/dir5/
sent 82 bytes received 28 bytes 220.00 bytes/sectotal size is 0 speedup is 0.00[root@linuxnix tmp]# cd /sahil/[root@linuxnix sahil]# ls -ltotal 0drwxr-xr-x 2 root root 6 Aug 29 22:47 dir1drwxr-xr-x 2 root root 6 Aug 29 22:47 dir3drwxr-xr-x 2 root root 6 Aug 29 22:47 dir4drwxr-xr-x 2 root root 6 Aug 29 22:47 dir5[root@linuxnix sahil]#

我们也可以在远程复制文件时使用–exclude标志。以下是一个示例:

[root@linuxnix tmp]# rsync -av --progress --exclude="dir2" dir* 192.168.19.142:/sahilsending incremental file listdir1/dir3/dir4/dir5/
sent 82 bytes received 28 bytes 220.00 bytes/sectotal size is 0 speedup is 0.00[root@linuxnix tmp]#

结论

这结束了我们的演示,演示了如何在使用cp、scp和rsync命令时排除某些内容被复制。希望这篇文章对您有帮助。

本文分享自微信公众号 - CU技术社区(ChinaUnix2013),作者:栈栈

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 聊聊 Linux 的匿名管道

    相信很多在linux平台工作的童鞋, 都很熟悉管道符 '|', 通过它, 我们能够很灵活的将几种不同的命令协同起来完成一件任务.就好像下面的命令:

    用户6543014
  • “严重”Linux Sudo漏洞的潜在危害实际没那么大!

    前两天出现的sudo中的错误被认为是十分严重的一个漏洞,尽管其潜在损坏可能非常有限。

    用户6543014
  • 提高Linux工作效率的十大bash技巧

    希望我的这些追求最大化命令行效率的努力成果也能给其他喜欢使用bash的朋友们带来一些帮助。

    用户6543014
  • admin3

    #################################################### 真机上实现别名的定义,修改配置文件

    py3study
  • Flat风格的Qml组合框

    Qt君
  • centos7系统常用命令

    https://blog.csdn.net/weixin_39951988/article/details/87613816#2.5%C2%A0which%E5...

    GH
  • 15 道二叉树手写算法题(二)

    在上一期讲到,树和链表的手写算法题在面试中出现的频率最高。也正是因为这样,如果你马上就要参加面试,但之前没有刷多少算法题,那么很建议你先看看树和链表相关的题目。...

    乔戈里
  • 【趣学程序】Linux流的重定向

    趣学程序
  • LeetCode 783 & 530 Distance Between BST Nodes

    Given a Binary Search Tree (BST) with the root node root, return the minimum dif...

    大学里的混子
  • 8 比对及找变异步骤的质控

    完成后会生成SRR8517856_bqsr_stats类似的文件夹 现在建立一个qualimap文件夹,把上面这种文件夹都移动到里面

    Y大宽

扫码关注云+社区

领取腾讯云代金券