系统管理指南:设备和文件系统

在文件系统之间复制目录(cpio 命令)

可以使用 cpio(复制入和复制出)命令复制各个文件、多组文件或完整的文件系统。本节介绍如何使用 cpio 命令复制完整的文件系统。

cpio 命令是一个归档程序,可以将文件列表复制到单个大型输出文件中。此命令会在各个文件之间插入头,以便于进行恢复。可以使用 cpio 命令将完整的文件系统复制到其他片、其他系统或介质设备(如磁盘或软盘)。

由于 cpio 命令可以识别介质结尾并会提示您插入另一个卷,因此它是除了 ufsdump 以外最有效的命令,可用于创建需要多盒磁带或多张软盘的归档文件。

使用 cpio 命令时,经常将 lsfind 命令结合使用以列出和选择要复制的文件,然后将输出传输给 cpio 命令。

Procedure如何在文件系统之间复制目录 (cpio)

  1. 成为超级用户或承担等效角色。

  2. 转至相应的目录。


    # cd filesystem1
    
  3. 通过将 find 命令与 cpio 命令结合使用,将目录树从 filesystem1 复制到 filesystem2


    # find . -print -depth | cpio -pdm filesystem2
    
    .

    从当前工作目录开始。

    -print

    列显文件名。

    -depth

    向下派生目录分层结构并从下到上列显文件名。

    -p

    创建文件列表。

    -d

    根据需要创建目录。

    -m

    在目录中设置正确的修改时间。

    有关更多信息,请参见 cpio(1)

    系统将复制指定目录名中的文件。符号链接会被保留。

    可能还要指定 -u 选项。此选项将强制执行无条件复制。否则,旧文件不会替代新文件。在需要目录的精确副本且复制的某些文件可能已存在于目标目录中时,此选项可能非常有用。

  4. 通过显示目标目录的内容,确认复制成功。


    # cd filesystem2
    
    # ls
    
  5. 删除源目录(如果可行)。


    # rm -rf filesystem1
    

示例 29–3 在文件系统之间复制目录 (cpio)


# cd /data1

# find . -print -depth | cpio -pdm /data2

19013 blocks

# cd /data2

# ls

# rm -rf /data1