UNIX高级用户实用工具全解析
立即解锁
发布时间: 2025-08-22 01:11:53 阅读量: 2 订阅数: 10 


UNIX编程与系统管理实战指南
# UNIX高级用户实用工具全解析
## 1. 文件复制与链接
在UNIX系统中,`cpio` 工具可用于复制文件。为了演示 `-p` 选项,我们可以使用 `find` 工具获取当前目录中最近两天内修改过的所有文件列表,然后将这些文件复制到父目录。
### 操作步骤:
- **物理复制**:不使用 `-l` 选项时,文件会被物理复制,这会导致磁盘使用量增加。
```bash
$ find . -mtime -2 -print | cpio -p ..
...copy
153 blocks
$ ls -l ../reverse.c
...look at the copied file.
-rw-r--r-- 1 glass 266 Jan 9 18:42 ../reverse.c
```
- **链接复制**:使用 `-l` 选项时,文件会被链接,不会增加磁盘使用量。
```bash
$ find . -mtime -2 -print | cpio -pl ..
...link
0 blocks
$ ls -l ../reverse.c
...look at the linked file.
-rw-r--r-- 2 glass 266 Jan 7 15:26 ../reverse.c
```
## 2. 磁带归档:tar
`tar` 工具专门用于在磁带上维护文件存档。当使用 `tar` 将文件添加到存档文件时,文件总是被放置在存档文件的末尾,因为无法修改存储在磁带上的文件中间部分。如果不将文件存档到磁带,建议使用 `cpio` 工具。
### 2.1 tar 命令选项
| 选项 | 功能 |
| ---- | ---- |
| -c | 创建 tar 格式的文件 |
| -f | 指定 tar 文件名 |
| -r | 无条件地将列出的文件追加到存档文件 |
| -t | 生成存档文件的目录表 |
| -u | 仅追加比已存档文件更新的文件 |
| -v | 启用详细输出 |
| -x | 提取指定的文件 |
### 2.2 操作示例
- **创建存档文件**:将当前目录中的所有文件保存到存档文件 “tarfile”。
```bash
$ ls
...look at the current directory.
main1* main2 palindrome.c reverse.h
main1.c main2.c palindrome.h tarfile
main1.make main2.make reverse.c tmp/
$ ls tmp
...look in the "tmp" directory.
a.c b.c
$ tar -cvf tarfile .
...archive the current directory.
a ./main1.c 1 blocks
a ./main2.c 1 blocks
...
a ./main2 48 blocks
a ./tmp/b.c 1 blocks
a ./tmp/a.c 1 blocks
$ ls -l tarfile
...look at the archive file "tarfile".
-rw-r--r-- 1 glass 65536 Jan 10 12:44 tarfile
```
- **查看存档文件目录表**:使用 `-t` 选项查看存档文件的目录表。
```bash
$ tar -tvf tarfile
...look at the table of contents.
rwxr-xr-x 496/62 0 Jan 10 12:44 1998 ./
rw-r--r-- 496/62 172 Jan 10 12:41 1998 ./main1.c
rw-r--r-- 496/62 198 Jan 9 18:36 1998 ./main2.c
...
rw-r--r-- 496/62 24576 Jan 7 15:26 1998 ./main2
rwxr-xr-x 496/62 0 Jan 10 12:42 1998 ./tmp/
rw-r--r-- 496/62 9 Jan 10 12:42 1998 ./tmp/b.c
rw-r--r-- 496/62 9 Jan 10 12:42 1998 ./tmp/a.c
```
- **无条件追加文件**:使用 `-r` 选项将文件无条件追加到存档文件末尾。
```bash
$ tar -rvf tarfile reverse.c
...unconditionally append.
a reverse.c 1 blocks
$ tar -tvf tarfile
...look at the table of contents.
rwxr-xr-x 496/62 0 Jan 10 12:44 1998 ./
rw-r--r-- 496/62 172 Jan 10 12:41 1998 ./main1.c
...
rw-r--r-- 496/62 266 Jan 9 18:36 1998 ./reverse.c
...
rw-r--r-- 496/62 266 Jan 10 12:46 1998 reverse.c
```
- **有条件追加文件**:使用 `-u` 选项仅在文件不在存档中或自上次存档后已修改时追加文件。
```bash
$ tar -rvf tarfile reverse.c
...unconditionally append.
a reverse.c 1 blocks
$ tar -uvf tarfile reverse.c
...conditionally append.
$ _
```
- **提取文件**:使用 `-x` 选项从存档文件中提取文件。
```bash
$ rm tmp/*
...remove all file
```
0
0
复制全文
相关推荐










