当前位置:  开发笔记 > 编程语言 > 正文

如何使用Perl或shell非递归地迁移目录?

如何解决《如何使用Perl或shell非递归地迁移目录?》经验,为你挑选了1个好方法。

我们正在将主文件夹迁移到新的文件系统,我正在寻找一种使用Perl或shell脚本自动化它的方法.我在编程语言方面没有太多选择,因为系统是专有存储集群,应尽可能保持不变.

任务:在目录/ home /下我有各种用户的主文件夹aaa,bbb,ccc,...他们有一些权限和用户/组所有权,在迁移到/ newhome /时需要保持不变.以下是需要从/ home迁移的示例:

drwxr-xr-x    3 aaaaa    xxxxxxxxx   4096 Feb 26  2008 aaaaa/
drwxrwxrwx   88 bbbbbbb  yyyyyy      8192 Dec 16 16:32 bbbbbbb/
drwxr-xr-x    6 ccccc    yyyyyy      4096 Nov 24 04:38 ccccc/
drwxr-xrwx   36 dddddd   yyyyyy      4096 Jun 20  2008 dddddd/
drwxr-xr-x   27 eee      yyyyyy      4096 Dec 16 02:56 eee/

因此,应在/ newhome下创建具有权限和所有权的完全相同的文件夹.复制/移动文件不应该是一个问题,因为它将在以后处理.

有人在制作这样的剧本吗?我是Perl的新手,所以我需要帮助.



1> codelogic..:

cp'-a标志将保持许可,修改时间等.您应该能够做以下事情:

for a in `ls /home`; do cp -a "/home/$a" "/newhome/$a" ; done

尝试使用一个目录,看看在自动化之前是否做了你需要的东西.

编辑:您可以使用保罗提到的rsync或tar禁用递归文件复制.使用rsync,子目录仍然保留,但不复制文件:

sudo rsync -pgodt /home/ /newhome/

我没有试过tar的--no-recursion,所以无法评论它.

编辑2:另一种方式

find /home/ -maxdepth 1 -print | sudo cpio -pamVd /newhome

参考

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有