怎样利用CP / SCP / RSYNC在Linux中排除特定目录?

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

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


  1. [root@linuxnix tmp]# ls -ld dir* 
  2. drwxr-xr-x 2 root root 6 Aug 29 22:47 dir1 
  3. drwxr-xr-x 2 root root 71 Aug 29 22:47 dir2 
  4. drwxr-xr-x 2 root root 6 Aug 29 22:47 dir3 
  5. drwxr-xr-x 2 root root 6 Aug 29 22:47 dir4 
  6. drwxr-xr-x 2 root root 6 Aug 29 22:47 dir5 

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


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

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


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

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


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

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

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

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


  1. [root@linuxnix dir2]# scp -rp !(file4) 192.168.19.142:/sahil 
  2. file1 100% 0 0.0KB/s 00:00 
  3. file2 100% 0 0.0KB/s 00:00 
  4. file3 100% 0 0.0KB/s 00:00 
  5. file5 100% 0 0.0KB/s 00:00 
  6. [root@linuxnix dir2]# 

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

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

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

相关文章