欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

linux下cp目录时排除一个或者多个目录的实现方法

rsync -av –exclude “Uploads” –exclude “Runtime” –exclude “picknews” –exclude “vr” app.cqtime.net/ app.cqtime.net-20170214

说明:/home目录里面有data目录,data目录里面有a、b、c、d、e五个目录,现在要把data目录里面除过e目录之外的所有目录拷贝到/bak目录中

方法一:终端命令行下执行以下命令

cp -R find /home/data -type d -path /home/data/e -prune -o -print | sed 1d /bak

#

脚本实现 
脚本存放路径/home/osyunwei.sh 
vi /home/osyunwei.sh #编辑脚本,添加下面的代码

!/bin/sh

cp -R find /home/data -type d -path /home/data/e -prune -o -print | sed 1d /bak 
chmod +x /home/osyunwei.sh #添加脚本执行权限 
cd /home #进入脚本存放目录 
./osyunwei.sh #执行脚本

#

方法二:使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子

如果要排除/home/data目录下面的a、b、c、三个目录,同时拷贝其它所有目录,执行以下命令 
yum install rsync #安装rsync 
rsync -av –exclude a –exclude b –exclude c data bak

注意:–exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错。

来自 https://blog.csdn.net/yfgcq/article/details/55100439

普通分类: