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

使用 cpio 命令将文件复制到磁带

Procedure如何将目录中的所有文件复制到磁带 (cpio)

  1. 转到包含要复制的文件的目录。

  2. 将可写磁带插入磁带机中。

  3. 将文件复制到磁带。


    $ ls | cpio -oc > /dev/rmt/n
    
    ls

    cpio 命令提供文件名列表。

    cpio -oc

    指定 cpio 命令应该在复制出模式 (-o) 下操作,并以 ASCII 字符格式 (-c) 写入头信息。这些选项确保可移植到其他供应商的系统。

    > /dev/rmt/n

    指定输出文件。

    会将目录中的所有文件复制到指定磁带机中的磁带,同时会覆写该磁带中的任何现有文件。屏幕将显示复制的总块数。

  4. 确认文件已被复制到磁带。


    $ cpio -civt < /dev/rmt/n
    
    -c

    指定 cpio 命令应以 ASCII 字符格式读取文件。

    -i

    指定 cpio 命令应在复制入模式下操作,即使该命令仅列出了此时的文件。

    -v

    显示与 ls -l 命令的输出格式类似的输出。

    -t

    列出指定磁带机中的磁带上的文件目录。

    < /dev/rmt/n

    指定现有 cpio 归档文件的输入文件。

  5. 从磁带机中取出磁带。在磁带标签中写入文件名称。


示例 29–8 将目录中的所有文件复制到磁带 (cpio)

以下示例说明如何将 /export/home/kryten 目录中的所有文件复制到磁带机 0 中的磁带。


$ cd /export/home/kryten

$ ls | cpio -oc > /dev/rmt/0

16 blocks

$ cpio -civt < /dev/rmt/0

-rw-r--r--    1 root     other          0 Jul 28 14:59 2004, filea

-rw-r--r--    1 root     other          0 Jul 28 14:59 2004, fileb

-rw-r--r--    1 root     other          0 Jul 28 14:59 2004, filec

drwxr-xr-x    2 root     other          0 Jul 28 14:59 2004, letters

drwxr-xr-x    2 root     other          0 Jul 28 15:00 2004, reports

16 blocks

$

Procedure如何列出磁带中的文件 (cpio)


注 –

列出磁带中的目录需要很长时间,因为 cpio 命令必须处理整个归档文件。


  1. 将归档文件磁带插入磁带机。

  2. 列出磁带中的文件。


    $ cpio -civt < /dev/rmt/n
    

示例 29–9 列出磁带中的文件 (cpio)

以下示例说明如何列出磁带机 0 中的磁带上的文件。


$ cpio -civt < /dev/rmt/0

-rw-r--r--    1 root     other          0 Jul 28 14:59 2004, filea

-rw-r--r--    1 root     other          0 Jul 28 14:59 2004, fileb

-rw-r--r--    1 root     other          0 Jul 28 14:59 2004, filec

drwxr-xr-x    2 root     other          0 Jul 28 14:59 2004, letters

drwxr-xr-x    2 root     other          0 Jul 28 15:00 2004, reports

16 blocks

$

Procedure如何从磁带中恢复所有文件 (cpio)

如果已使用相对路径名创建了归档文件,则恢复文件时会在当前目录中以目录形式生成输入文件。但是,如果已使用绝对路径名创建了归档文件,则将使用相同的绝对路径在系统中重新创建该文件。


注意 – 注意 –

使用绝对路径名可能会有危险,因为可能会覆写系统中的现有文件。


  1. 转到要放置文件的目录。

  2. 将磁带插入磁带机。

  3. 从磁带中提取所有文件。


    $ cpio -icvd < /dev/rmt/n
    
    -i

    从标准输入中提取文件。

    -c

    指定 cpio 命令应以 ASCII 字符格式读取文件。

    -v

    在以与 ls 命令输出类似的格式恢复文件时,显示这些文件。

    -d

    根据需要创建目录。

    < /dev/rmt/n

    指定输出文件。

  4. 确认文件已被复制。


    $ ls -l
    

示例 29–10 从磁带中恢复所有文件 (cpio)

以下示例说明如何从磁带机 0 中的磁带恢复所有文件。


$ cd /var/tmp

cpio -icvd < /dev/rmt/0

answers 

sc.directives 

tests

8 blocks

$ ls -l

Procedure如何从磁带中恢复特定文件 (cpio)

  1. 转到要放置文件的目录。

  2. 将磁带插入磁带机。

  3. 从磁带中恢复文件子集。


    $ cpio -icv "*file" < /dev/rmt/n
    
    -i

    从标准输入中提取文件。

    -c

    指定 cpio 命令应以 ASCII 字符格式读取头。

    -v

    在以与 ls 命令输出类似的格式恢复文件时,显示这些文件。

    "*file "

    指定与该模式匹配的所有文件都将复制到当前目录。可以指定多种模式,但是每种模式都必须用双引号引起来。

    < /dev/rmt/n

    指定输入文件。

    有关更多信息,请参见 cpio(1) 手册页。

  4. 确认文件已被复制。


    $ ls -l
    

示例 29–11 从磁带中检索特定文件 (cpio)

以下示例说明如何从磁带机 0 中的磁带恢复带有 chapter 后缀的所有文件。


$ cd /home/smith/Book

$ cpio -icv "*chapter" < /dev/rmt/0

Boot.chapter 

Directory.chapter 

Install.chapter 

Intro.chapter

31 blocks

$ ls -l