技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录注册

下次自动登录
现在的位置: 首页CentOS>正文
linux下cp目录时排除一个或者多个目录的方法
2012年02月22日 CentOS 评论数 1 ⁄ 被围观 14,840次+


说明:/home目录里面有data目录,data目录里面有a、b、c、d、e五个目录,现在要把data目录里面除过e目录之外的所有目录拷贝到/bak目录中
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接
方法一:终端命令行下执行以下命令
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   #执行脚本
########################################################
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接
方法二:使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子
如果要排除/home/data目录下面的a、b、c、三个目录,同时拷贝其它所有目录,执行以下命令
yum install rsync   #安装rsync
rsync -av --exclude data/a  --exclude data/b  --exclude data/c  data   /bak
注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

目前有 1 条留言 其中:访客:1 条, 博主:0 条

  1. 234876084@qq.com : 2013年07月26日16:57:55  1楼

    :razz: 刚好有这个需求,多谢.

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2017 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接