使用模式复制树

使用模式复制树

假设我的构建脚本创建了类似的内容:

build
├── [drwxr-xr-x pskocik  pskocik ]  bin
│   └── [-rwxr-xr-x pskocik  pskocik ]  FOO_bin
├── [drwxr-xr-x pskocik  pskocik ]  include
│   ├── [drwxr-xr-x pskocik  pskocik ]  FOO
│   │   ├── [-rw-r--r-- pskocik  pskocik ]  FOO_a.h
│   │   └── [-rw-r--r-- pskocik  pskocik ]  FOO_b.h
│   └── [-rw-r--r-- pskocik  pskocik ]  FOO.h
├── [drwxr-xr-x pskocik  pskocik ]  lib
│   ├── [-rw-r--r-- pskocik  pskocik ]  libFOO.a
│   └── [-rwxr-xr-x pskocik  pskocik ]  libFOO.so
└── [drwxr-xr-x pskocik  pskocik ]  share
    └── [drwxr-xr-x pskocik  pskocik ]  man
        ├── [drwxr-xr-x pskocik  pskocik ]  man1
        │   └── [-rw-r--r-- pskocik  pskocik ]  FOO.1.gz
        └── [drwxr-xr-x pskocik  pskocik ]  man3
            └── [-rw-r--r-- pskocik  pskocik ]  FOO.3.gz

8 directories, 8 files

复制这个的最好方法是什么,比如复制到/usror /usr/local,这样

  • 文件重新归属于 root:root
  • 文件模式保持不变
  • 这同样适用于目录节点,除非(可选)它们已经存在(在这种情况下,它们的所有权和模式保持不变)

答案1

使用rsync。

rsync -rltpDvh --chown root:root build/ /usr/

这意味着:

  • r:递归
  • l:复制链接
  • t:保留时间戳
  • p:保留权限
  • D:--devices
  • v: 详细
  • h:人类可读的进展

如果您还没有安装它,请先使用包管理来安装这个很棒的工具:)

相关内容:

相关内容