我们正在将主文件夹迁移到新的文件系统,我正在寻找一种使用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的新手,所以我需要帮助.
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
参考