tar -czvf /var/log/messages 并查看进度
时间: 2023-08-07 19:06:50 浏览: 45
在执行 tar 命令时,由于缺少进度条选项,我们并不能直接查看 tar 的进度。不过,我们可以通过以下方式来查看 tar 命令的进度:
首先,我们可以在执行 tar 命令时使用 `-v` 参数来显示 tar 命令的详细信息。这将让我们看到 tar 命令正在处理哪些文件。
其次,我们可以利用 `watch` 命令来定时执行一个命令,并显示其输出。我们可以将 `watch` 命令与 `ls` 命令结合使用,定时查看目标文件的大小变化,从而了解 tar 命令的进度。
最后,我们可以使用 `pv` 命令来显示 tar 命令的进度,如下所示:
```
tar -czvf - /var/log/messages | pv | gzip > messages.tar.gz
```
在这个命令中,我们使用 `-` 参数来将 tar 命令的输出发送到标准输出,然后使用 `pv` 命令来查看 tar 命令的进度。最后,我们将 tar 命令的输出通过管道传递给 gzip 命令,将其压缩为一个 gzip 文件。
希望这些方法能够帮助你查看 tar 命令的进度。
相关问题
tar -czvf /path/to/output.tar.gz /path/to/folder1 /path/to/folder2 tar -czvf /path/to/output.tar.gz /path/to/folder1 /path/to/folder2 tar -czvf /path/to/output.tar.gz /path/to/folder1 /path/to/folder2 上述output.tar.gz中插入当前日期,如何实现
要在生成的`output.tar.gz`文件名中插入当前日期,你可以使用shell命令的子命令替换功能。在Linux中,可以使用`date`命令获取当前日期,并将其插入到tar命令中的输出文件名中。下面是一个示例:
```bash
tar -czvf /path/to/output_$(date +%Y%m%d).tar.gz /path/to/folder1 /path/to/folder2
```
解释:
- `$(date +%Y%m%d)`:这个部分使用了`date`命令和`+%Y%m%d`参数来获取当前日期,并以年月日的格式插入到文件名中。
这样,每次执行这个tar命令时,生成的归档文件名将包含当前日期。例如,如果今天是2022年3月15日,那么生成的文件名将类似于`output_20220315.tar.gz`。每天执行一次该命令都会生成一个带有不同日期的归档文件。
Java如何实现Linux的一下三种命令 tar -czvf aaa.tar.gz /dir/*.txt tar -czvf aaa.tar.gz a.txt b.txt tar -xzvf aaa.tar.gz -C /path
对于Java来说,可以通过执行Linux命令的方式来实现类似的操作。可以使用Java的`ProcessBuilder`类来创建一个进程,并执行相应的命令。
对于第一种命令`tar -czvf aaa.tar.gz /dir/*.txt`,可以使用以下Java代码来实现:
```java
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class TarCommandExample {
public static void main(String[] args) {
String command = "tar";
List<String> params = new ArrayList<>();
params.add("-czvf");
params.add("aaa.tar.gz");
params.add("/dir/*.txt");
executeCommand(command, params);
}
private static void executeCommand(String command, List<String> params) {
try {
ProcessBuilder pb = new ProcessBuilder(command, params);
Process process = pb.start();
// 可以在这里处理命令的输出结果
int exitCode = process.waitFor();
System.out.println("Command executed with exit code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
对于第二种命令`tar -czvf aaa.tar.gz a.txt b.txt`,只需要将参数修改为相应的文件名即可。
对于第三种命令`tar -xzvf aaa.tar.gz -C /path`,可以使用以下Java代码来实现:
```java
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class TarCommandExample {
public static void main(String[] args) {
String command = "tar";
List<String> params = new ArrayList<>();
params.add("-xzvf");
params.add("aaa.tar.gz");
params.add("-C");
params.add("/path");
executeCommand(command, params);
}
private static void executeCommand(String command, List<String> params) {
try {
ProcessBuilder pb = new ProcessBuilder(command, params);
Process process = pb.start();
// 可以在这里处理命令的输出结果
int exitCode = process.waitFor();
System.out.println("Command executed with exit code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
这样通过Java的`ProcessBuilder`类,就可以在Java程序中执行相应的Linux命令。请注意,执行系统命令需要谨慎处理输入参数,以防止安全漏洞。