在/home目录里,用find命令定位文件所有者是root(或其他用户,下同)的文件。然后将其压缩为 backup.tar。
时间: 2024-09-09 14:13:23 浏览: 81
在Linux系统中,可以使用`find`命令结合`tar`命令来完成这个任务。具体步骤如下:
首先,使用`find`命令搜索`/home`目录下所有者为root的文件。命令格式如下:
```bash
find /home -type f -user root
```
这里的参数解释如下:
- `/home`:指定搜索的起始目录。
- `-type f`:限定搜索结果为普通文件(不包括目录)。
- `-user root`:指定文件所有者为root用户。
得到文件列表后,可以使用`tar`命令进行打包压缩,命令如下:
```bash
tar -cvf backup.tar --files-from=- <(find /home -type f -user root)
```
这里的参数解释如下:
- `tar`:调用打包压缩工具。
- `-cvf`:指定操作类型和压缩文件名,`c`代表创建新的归档文件,`v`代表显示过程信息,`f`后面跟压缩文件名。
- `backup.tar`:指定输出的压缩文件名。
- `--files-from=-`:从标准输入读取文件列表。
- `<()`:是进程替换的一种形式,它会将`find`命令的输出作为`tar`命令的输入。
注意:为了确保文件列表能够正确传递给`tar`命令,使用了进程替换`<()`和`--files-from=-`选项。
相关问题
在/home目录里,用find命令定位文件所有者是student的文件。然后将其压缩。保存/etc目录下的文件到/tmp目录下。列出两个文件的大小。使用gzip压缩文档。
1. 使用以下命令定位文件所有者是student的文件并压缩:
```
find /home -user student -exec tar -czvf student_files.tar.gz {} +
```
该命令会在/home目录下查找所有文件所有者为student的文件,并将其压缩成一个名为student_files.tar.gz的压缩包。
2. 使用以下命令将/etc目录下的文件保存到/tmp目录下:
```
cp -r /etc /tmp
```
该命令会将/etc目录下的所有文件复制到/tmp目录下。
3. 使用以下命令列出两个文件的大小:
```
ls -lh /home/student_files.tar.gz /tmp/etc
```
该命令会列出/home目录下的student_files.tar.gz文件和/tmp目录下的etc文件夹的大小。
4. 使用以下命令使用gzip压缩文档:
```
gzip /tmp/etc
```
该命令会将/tmp目录下的etc文件夹压缩成一个名为etc.gz的文件。
在/home目录里,用find命令定位文件所有者然后将其压缩。
可以使用下面的命令实现:
```
sudo find /home -type f -user <username> -print0 | sudo tar -czvf files.tar.gz --null -T -
```
其中,`<username>`需要替换成目标文件的所有者用户名。
解释一下这个命令:
- `sudo find /home -type f -user <username> -print0`:在 `/home` 目录中查找所有属于指定用户的文件,并打印它们的路径,每个路径以 null 字符 (\0) 结尾。
- `|`:管道符,将前一个命令的输出作为后一个命令的输入。
- `sudo tar -czvf files.tar.gz --null -T -`:从标准输入中读取 null 分隔的文件路径列表,并将它们压缩为 `files.tar.gz` 文件。
注意,这个命令需要 root 权限才能访问 `/home` 目录中的所有文件。如果你不是 root 用户,可以尝试使用 `sudo` 命令来获取临时权限。另外,压缩过程可能会比较耗时,取决于 `/home` 目录中的文件数量和大小。