Linux-在shell编程中cp -r 略过某个子目录的问题
现在需要对一个目录进行备份,但是该目录下有一个子目录非常大,因此不想备份它,求一个简单的命令行来实现它,大家分享一下吧。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
现在需要对一个目录进行备份,但是该目录下有一个子目录非常大,因此不想备份它,求一个简单的命令行来实现它,大家分享一下吧。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
find 目录 ( -path 避开的目录1 -o -path 避开的目录1 ..... ) -prune -exec cp -r {} ;
经过测试,这条shell可以完成本功能:
find /root/data -type f |grep -v "attachment" | xargs cp -ar --target-directory=/root/backup --parents
即将/root/data目录下除attachment目录外的所有文件备份至/root/backup目录
ls | grep -v "排除目录" | xargs -i cp -a {} "目标目录"
为什么不用rsync呢,rsync -rv -exclude-from 或者rsync -rv -exclude。
一定要用cp的话,试一下(slackware13.1测试通过):
首先保证源目录和目标目录的目录结构相同,之后拷贝文件
find . -type d -exec mkdir -p -- 目标目录/{} ;
find . -type f -not -iname '*/排除的目录/*' -exec cp '{}' '目标目录/{}' ;