由于硬盘问题,我尝试将分区从一个硬盘移到另一个硬盘。我正在关注http://www.ibm.com/developerworks/library/l-partplan.html文章中介绍了如何做到这一点。在复制部分,我想忽略一个特定的子目录。我该如何实现这一点,同时记住在复制时我必须保留我的所有者组和时间戳。如果我不忽略特定的子目录,则需要复制大约 700 GB 的数据。
答案1
rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to
您可能也想(或不想)使用--del
。查看手册页。
答案2
通常我使用cpio
如下方法,
cd source_dir; find . -depth | cpio -pdmv dest_dir
由于这是一个管道,您可以在中间放置一个“减法滤波器”。
cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir
或者你可以把它分成几个步骤,
cd source_dir; find . -depth > files.lst
gedit files.lst # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst
当然,我会首先在较小的物体上进行测试,但你明白我的意思了。
答案3
您可以编写一个简单的 bash 脚本,使用循环来忽略您不想复制的某些路径并复制其余路径。另一个解决方案可能是使用正则表达式。您可以在此处阅读有关 bash 脚本的内容 ->http://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html 正则表达式教程在这里 ->http://www.regular-expressions.info/
答案4
相当丑陋的解决方案,但是...为什么不以非递归方式 cp 目录中的所有内容,然后以递归方式复制各个目录?